summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/.gitignore3
-rw-r--r--contrib/Makefile.am89
-rw-r--r--contrib/Makefile.am.in68
-rw-r--r--contrib/auditor-report.tex.j2114
-rw-r--r--contrib/ci/Containerfile68
-rwxr-xr-xcontrib/ci/ci.sh33
-rw-r--r--contrib/ci/jobs/0-codespell/config.ini6
-rw-r--r--contrib/ci/jobs/0-codespell/dictionary.txt47
-rwxr-xr-xcontrib/ci/jobs/0-codespell/job.sh100
-rwxr-xr-xcontrib/ci/jobs/1-build/build.sh14
-rwxr-xr-xcontrib/ci/jobs/1-build/job.sh6
-rw-r--r--contrib/ci/jobs/2-test/config.ini6
-rwxr-xr-xcontrib/ci/jobs/2-test/job.sh6
-rwxr-xr-xcontrib/ci/jobs/2-test/test.sh51
-rw-r--r--contrib/ci/jobs/3-docs/config.ini6
-rwxr-xr-xcontrib/ci/jobs/3-docs/docs.sh11
-rwxr-xr-xcontrib/ci/jobs/3-docs/job.sh6
-rw-r--r--contrib/ci/jobs/4-deb-package/install-fix.patch13
-rwxr-xr-xcontrib/ci/jobs/4-deb-package/job.sh23
-rwxr-xr-xcontrib/ci/jobs/4-deb-package/version.sh17
-rw-r--r--contrib/ci/jobs/5-deploy-package/config.ini5
-rwxr-xr-xcontrib/ci/jobs/5-deploy-package/job.sh14
-rw-r--r--contrib/exchange-pp-v0.rst (renamed from contrib/pp/pp-v0.rst)12
-rw-r--r--contrib/exchange-tos-bfh-v0.rst (renamed from contrib/tos/bfh-v0.rst)0
-rw-r--r--contrib/exchange-tos-netzbon-v0.rst108
-rw-r--r--contrib/exchange-tos-tops-v0.rst959
-rw-r--r--contrib/exchange-tos-v0.rst (renamed from contrib/tos/tos-v0.rst)103
m---------contrib/gana0
-rwxr-xr-xcontrib/gana-generate.sh (renamed from contrib/gana-update.sh)0
-rwxr-xr-xcontrib/gana-latest.sh (renamed from contrib/gana.sh)2
-rw-r--r--contrib/gnunet.tag20
-rw-r--r--contrib/kyc-proof-already-done.en.must9
-rw-r--r--contrib/kyc-proof-bad-request.en.must15
-rw-r--r--contrib/kyc-proof-endpoint-unknown.en.must15
-rw-r--r--contrib/kyc-proof-internal-error.en.must16
-rw-r--r--contrib/kyc-proof-target-unknown.en.must15
-rw-r--r--contrib/kycaid-invalid-request.en.must12
-rw-r--r--contrib/locale/de/LC_MESSAGES/exchange-tos-v0.po403
-rw-r--r--contrib/microhttpd.tag6
-rw-r--r--contrib/oauth2-authentication-failure.en.must16
-rw-r--r--contrib/oauth2-authorization-failure-malformed.en.must13
-rw-r--r--contrib/oauth2-authorization-failure.en.must12
-rw-r--r--contrib/oauth2-bad-request.en.must15
-rw-r--r--contrib/oauth2-conversion-failure.en.must28
-rw-r--r--contrib/oauth2-provider-failure.en.must22
-rw-r--r--contrib/packages/fedora/etc-libtalerexchange/taler/overrides.conf1
-rw-r--r--contrib/packages/fedora/etc-libtalerexchange/taler/taler.conf49
-rw-r--r--contrib/packages/fedora/etc-taler-auditor/apache2/sites-available/taler-auditor.conf4
-rw-r--r--contrib/packages/fedora/etc-taler-auditor/nginx/sites-available/taler-auditor18
-rw-r--r--contrib/packages/fedora/etc-taler-auditor/taler/conf.d/auditor-system.conf12
-rw-r--r--contrib/packages/fedora/etc-taler-auditor/taler/secrets/auditor-db.secret.conf10
-rw-r--r--contrib/packages/fedora/etc-taler-exchange/apache2/sites-available/taler-exchange.conf4
-rw-r--r--contrib/packages/fedora/etc-taler-exchange/nginx/sites-available/taler-exchange17
-rw-r--r--contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-business.conf50
-rw-r--r--contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-coins.conf33
-rw-r--r--contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-system.conf13
-rw-r--r--contrib/packages/fedora/etc-taler-exchange/taler/secrets/exchange-accountcredentials-1.secret.conf17
-rw-r--r--contrib/packages/fedora/etc-taler-exchange/taler/secrets/exchange-db.secret.conf10
-rw-r--r--contrib/packages/fedora/taler-auditor.taler-auditor-httpd.service12
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-aggregator.service18
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-aggregator@.service17
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-closer.service18
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-expire.service18
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-httpd.service33
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-httpd@.service27
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-secmod-cs.service18
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-secmod-eddsa.service19
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-secmod-rsa.service18
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-transfer.service18
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-wirewatch.service18
-rw-r--r--contrib/packages/fedora/taler-exchange.taler-exchange-wirewatch@.service18
-rw-r--r--contrib/pp/.gitignore3
-rw-r--r--contrib/pp/Makefile109
-rw-r--r--contrib/pp/README58
-rw-r--r--contrib/pp/conf.py.in282
-rw-r--r--contrib/pp/en/pp-v0.epubbin14943 -> 0 bytes
-rw-r--r--contrib/pp/en/pp-v0.html205
-rw-r--r--contrib/pp/en/pp-v0.md237
-rw-r--r--contrib/pp/en/pp-v0.pdfbin77874 -> 0 bytes
-rw-r--r--contrib/pp/en/pp-v0.txt237
-rw-r--r--contrib/pp/en/pp-v0.xml214
-rw-r--r--contrib/pp/locale/de/LC_MESSAGES/pp.po221
-rwxr-xr-xcontrib/taler-auditor-dbconfig132
-rwxr-xr-xcontrib/taler-bank-manage-testing187
-rwxr-xr-xcontrib/taler-exchange-dbconfig186
-rwxr-xr-xcontrib/taler-nexus-prepare115
-rwxr-xr-xcontrib/taler-terms-generator295
-rw-r--r--contrib/tos/.gitignore3
-rw-r--r--contrib/tos/Makefile109
-rw-r--r--contrib/tos/README58
-rw-r--r--contrib/tos/conf.py.in283
-rw-r--r--contrib/tos/en/bfh-v0.epubbin24309 -> 0 bytes
-rw-r--r--contrib/tos/en/bfh-v0.html310
-rw-r--r--contrib/tos/en/bfh-v0.pdfbin83658 -> 0 bytes
-rw-r--r--contrib/tos/en/bfh-v0.txt349
-rw-r--r--contrib/tos/en/bfh-v0.xml323
-rw-r--r--contrib/tos/en/tos-v0.epubbin24313 -> 0 bytes
-rw-r--r--contrib/tos/en/tos-v0.html298
-rw-r--r--contrib/tos/en/tos-v0.md337
-rw-r--r--contrib/tos/en/tos-v0.pdfbin82566 -> 0 bytes
-rw-r--r--contrib/tos/en/tos-v0.txt337
-rw-r--r--contrib/tos/en/tos-v0.xml311
-rw-r--r--contrib/tos/locale/de/LC_MESSAGES/tos.po241
-rwxr-xr-xcontrib/uncrustify_precommit4
m---------contrib/wallet-core0
105 files changed, 3426 insertions, 5015 deletions
diff --git a/contrib/.gitignore b/contrib/.gitignore
new file mode 100644
index 000000000..1e74d37e2
--- /dev/null
+++ b/contrib/.gitignore
@@ -0,0 +1,3 @@
+locale/**/*.pot
+Makefile.am
+Makefile.am.ext
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
deleted file mode 100644
index 99927e7e6..000000000
--- a/contrib/Makefile.am
+++ /dev/null
@@ -1,89 +0,0 @@
-SUBDIRS = .
-
-tmplpkgdatadir = $(prefix)/share/taler/exchange/templates/
-
-dist_tmplpkgdata_DATA = \
- persona-exchange-unauthorized.en.must \
- persona-load-failure.en.must \
- persona-exchange-unpaid.en.must \
- persona-logic-failure.en.must \
- persona-invalid-response.en.must \
- persona-network-timeout.en.must \
- persona-kyc-failed.en.must \
- persona-provider-failure.en.must
-
-# %%.must: merchant-backoffice/%.html
-# WTF: cp $< $@
-
-
-# English (en)
-tosendir=$(datadir)/taler/exchange/tos/en
-
-# English (en)
-ppendir=$(datadir)/taler/exchange/pp/en
-
-rdatadir=$(datadir)/taler/exchange
-
-tosen_DATA = \
- tos/en/*.txt \
- tos/en/*.md \
- tos/en/*.pdf \
- tos/en/*.epub \
- tos/en/*.xml \
- tos/en/*.html
-
-ppen_DATA = \
- pp/en/*.txt \
- pp/en/*.md \
- pp/en/*.pdf \
- pp/en/*.epub \
- pp/en/*.xml \
- pp/en/*.html
-
-rdata_DATA = \
- auditor-report.tex.j2
-
-bin_SCRIPTS = \
- taler-bank-manage-testing \
- taler-nexus-prepare
-
-EXTRA_DIST = \
- $(bin_SCRIPTS) \
- $(tosen_DATA) \
- $(ppen_DATA) \
- update-tos.sh \
- update-pp.sh \
- gana-update.sh \
- gana/gnu-taler-error-codes/registry.rec \
- gana/gnu-taler-error-codes/Makefile \
- tos/Makefile \
- tos/README \
- tos/bfh-v0.rst \
- tos/tos-v0.rst \
- tos/conf.py.in \
- tos/locale/de/LC_MESSAGES/tos.po \
- pp/Makefile \
- pp/README \
- pp/pp-v0.rst \
- pp/conf.py.in \
- pp/locale/de/LC_MESSAGES/pp.po \
- $(rdata_DATA) \
- coverage.sh \
- gnunet.tag \
- microhttpd.tag
-
-# Change the set of supported languages here. You should
-# also update tos'XX'data and EXTRA_DIST accordingly.
-TOS_LANGUAGES="en de"
-PP_LANGUAGES="en de"
-
-# Change the terms-of-service version (Etag) to generate here!
-# This value should be modified whenever there is a substantive
-# change in the original text (but not for the translations).
-TOS_VERSION=tos-v0
-PP_VERSION=pp-v0
-
-update-tos:
- VERSION=$(TOS_VERSION) ./update-tos.sh $(TOS_LANGUAGES)
-update-pp:
- VERSION=$(PP_VERSION) ./update-pp.sh $(PP_LANGUAGES)
diff --git a/contrib/Makefile.am.in b/contrib/Makefile.am.in
new file mode 100644
index 000000000..e278fad2f
--- /dev/null
+++ b/contrib/Makefile.am.in
@@ -0,0 +1,68 @@
+# This file is in the public domain.
+
+SUBDIRS = .
+
+tmplpkgdatadir = $(datadir)/taler/exchange/templates/
+dist_tmplpkgdata_DATA = \
+ kycaid-invalid-request.en.must \
+ kyc-proof-already-done.en.must \
+ kyc-proof-bad-request.en.must \
+ kyc-proof-endpoint-unknown.en.must \
+ kyc-proof-internal-error.en.must \
+ kyc-proof-target-unknown.en.must \
+ oauth2-authentication-failure.en.must \
+ oauth2-authorization-failure.en.must \
+ oauth2-authorization-failure-malformed.en.must \
+ oauth2-bad-request.en.must \
+ oauth2-conversion-failure.en.must \
+ oauth2-provider-failure.en.must \
+ persona-exchange-unauthorized.en.must \
+ persona-load-failure.en.must \
+ persona-exchange-unpaid.en.must \
+ persona-logic-failure.en.must \
+ persona-invalid-response.en.must \
+ persona-network-timeout.en.must \
+ persona-kyc-failed.en.must \
+ persona-provider-failure.en.must
+
+termsdir=$(datadir)/taler/terms/
+terms_DATA = \
+ exchange-tos-v0.rst \
+ exchange-tos-bfh-v0.rst \
+ exchange-pp-v0.rst
+
+install-exec-local:
+ find locale/ -name "*.po"
+ mkdir -p $(DESTDIR)$(datadir)
+ cp --parents -r $$(find locale/ -name "*.po") $(DESTDIR)$(datadir)
+
+rdatadir=$(datadir)/taler/exchange
+rdata_DATA = \
+ auditor-report.tex.j2
+
+bin_SCRIPTS = \
+ taler-auditor-dbconfig \
+ taler-exchange-dbconfig \
+ taler-terms-generator
+
+
+EXTRA_DIST = \
+ locale/de/LC_MESSAGES/exchange-tos-v0.po \
+ $(bin_SCRIPTS) \
+ gana-generate.sh \
+ gana/gnu-taler-error-codes/registry.rec \
+ gana/gnu-taler-error-codes/Makefile \
+ $(terms_DATA) \
+ $(rdata_DATA) \
+ coverage.sh \
+ gnunet.tag \
+ microhttpd.tag \
+ packages
+
+spapkgdatadir = $(prefix)/share/taler/exchange/spa/
+
+# This is for the single-page-app imported from the wallet-core.git
+# prebuilt branch. This MUST be the last line in the
+# Makefile.am.in, as it will be combined with the
+# actual SPA data by 'bootstrap'!
+dist_spapkgdata_DATA = \
diff --git a/contrib/auditor-report.tex.j2 b/contrib/auditor-report.tex.j2
index d40dc0c8f..bb645520f 100644
--- a/contrib/auditor-report.tex.j2
+++ b/contrib/auditor-report.tex.j2
@@ -1,5 +1,5 @@
% This file is part of TALER
-% Copyright (C) 2016--2019 Taler Systems SA
+% Copyright (C) 2016--2023 Taler Systems SA
%
% TALER is free software; you can redistribute it and/or modify it under the
% terms of the GNU Affero General Public License as published by the Free Software
@@ -88,12 +88,18 @@ In that time, the auditors processed the following table ranges:
& {{ reserves.end_ppr_reserve_in_serial_id }} \\ \hline
Reserves Out (withdraw) & {{ reserves.start_ppr_reserve_out_serial_id }}
& {{ reserves.end_ppr_reserve_out_serial_id }} \\ \hline
- Reserves Recoup & {{ reserves.start_ppr_reserve_recoup_serial_id }}
+ Reserves Recoup & {{ reserves.start_ppr_reserve_recoup_serial_id }}
& {{ reserves.end_ppr_reserve_recoup_serial_id }} \\ \hline
Reserves Close & {{ reserves.start_ppr_reserve_close_serial_id }}
& {{ reserves.end_ppr_reserve_close_serial_id }} \\ \hline
Aggregation & {{ aggregation.start_ppa_wire_out_serial_id }}
& {{ aggregation.end_ppa_wire_out_serial_id }} \\ \hline
+ Aggregation (wire) & {{ wire.start_pp_last_aggregation_serial_id }}
+ & {{ wire.end_pp_last_aggregation_serial_id }} \\ \hline
+ Deposits (wire) & {{ wire.start_pp_last_batch_deposit_id }}
+ & {{ wire.end_pp_last_batch_deposit_id }} \\ \hline
+ Reserves Close (wire) & {{ wire.start_pp_reserve_close_id }}
+ & {{ wire.end_pp_reserve_close_id }} \\ \hline
Coin withdraw & {{ coins.start_ppc_withdraw_serial_id }}
& {{ coins.end_ppc_withdraw_serial_id }} \\ \hline
Coin deposit & {{ coins.start_ppc_deposit_serial_id }}
@@ -102,9 +108,9 @@ In that time, the auditors processed the following table ranges:
& {{ coins.end_ppc_melt_serial_id }} \\ \hline
Coin refund & {{ coins.start_ppc_refund_serial_id }}
& {{ coins.end_ppc_refund_serial_id }} \\ \hline
- Coin recoup & {{ coins.start_ppc_recoup_serial_id }}
+ Coin recoup & {{ coins.start_ppc_recoup_serial_id }}
& {{ coins.end_ppc_recoup_serial_id }} \\ \hline
- Coin recoup refresh & {{ coins.start_ppc_recoup_refresh_serial_id }}
+ Coin recoup refresh & {{ coins.start_ppc_recoup_refresh_serial_id }}
& {{ coins.end_ppc_recoup_refresh_serial_id }} \\
\end{tabular}
\end{center}
@@ -206,51 +212,101 @@ load. Small amounts of lag can occur in normal operation.
The total amount the exchange currently lags behind in deposits is
{\bf {{ wire.total_amount_lag }}}.
-Note that some lag is perfectly normal, as tiny amounts that are too small to be wired
-are deferred beyond the due date, hoping that additional transfers will push them above
-the tiny threshold. Below, we report {\em non-tiny} wire transfers that are lagging behind.
+Note that some lag is perfectly normal, as tiny amounts that are too small to
+be wired are deferred beyond the due date, hoping that additional transfers
+will push them above the tiny threshold. Below, we report {\em non-tiny} wire
+transfers that are lagging behind.
% Table generation tested by testcase #1 in test-auditor.sh
{% if wire.lag_details|length() == 0 %}
{\bf No non-tiny wire transfers that are lagging behind detected.}
{% else %}
- \begin{longtable}{l|r|r|c}
- {\bf Deadline} & {\bf Amount} & {\bf Row} & {\bf Claimed done} \\
- \multicolumn{4}{l}{\bf Coin} \\
- \multicolumn{4}{l}{\bf Target account} \\ \hline \hline
+ \begin{longtable}{l|r|r}
+ {\bf Deadline} & {\bf Amount} & {\bf Target account} \\ \hline \hline
\endfirsthead
- {\bf Deadline} & {\bf Amount} & {\bf Row} & {\bf Claimed done} \\
- \multicolumn{4}{l}{\bf Coin} \\
- \multicolumn{4}{l}{\bf Target account} \\ \hline \hline
+ {\bf Deadline} & {\bf Amount} & {\bf Target account} \\ \hline \hline
\endhead
\hline \hline
- {\bf Deadline} & {\bf Amount} & {\bf Row} & {\bf Claimed done} \\
- \multicolumn{4}{l}{\bf Coin} \\
- \multicolumn{4}{l}{\bf Target account} \\
+ {\bf Deadline} & {\bf Amount} & {\bf Target account} \\
\endfoot
\hline \hline
- {\bf Deadline} & {\bf Amount} & {\bf Row} & {\bf Claimed done} \\
- \multicolumn{4}{l}{\bf Coin} \\
- \multicolumn{4}{l}{\bf Target account} \\
+ {\bf Deadline} & {\bf Amount} & {\bf Target account} \\
\caption{Lagging non-tiny transactions.}
\label{table:lag}
\endlastfoot
{% for item in wire.lag_details %}
{{ item.deadline }} &
+ {{ item.total_amount }} &
+ {\tt
+ {% if 'account' in item %}
+ {{ item.account }}
+ {% endif %}
+ } \\ \hline
+{% endfor %}
+ \end{longtable}
+{% endif %}
+
+
+
+{% if wire.lag_kyc_details|length() == 0 %}
+ {\bf No KYC-blocked non-tiny wire transfers that are lagging behind detected.}
+{% else %}
+ \begin{longtable}{l|r|c|r}
+ {\bf Deadline} & {\bf Amount} & {\bf Requirement} & {\bf Target account} \\ \hline \hline
+\endfirsthead
+ {\bf Deadline} & {\bf Amount} & {\bf Requirement} & {\bf Target account} \\ \hline \hline
+\endhead
+ \hline \hline
+ {\bf Deadline} & {\bf Amount} & {\bf Requirement} & {\bf Target account} \\
+\endfoot
+ \hline \hline
+ {\bf Deadline} & {\bf Amount} & {\bf Requirement} & {\bf Target account} \\
+ \caption{Lagging non-tiny transactions due to missing KYC data.}
+ \label{table:lag}
+\endlastfoot
+{% for item in wire.lag_kyc_details %}
+ {{ item.deadline }} &
{{ item.amount }} &
- {{ item.row }} &
-{% if 'claimed_done' in item %}
- {{ item.claimed_done }}
+ {{ item.kyc_pending }} &
+ {\tt
+ {% if 'account' in item %}
+ {{ item.account }}
+ {% endif %}
+ } \\ \hline
+{% endfor %}
+ \end{longtable}
+{% endif %}
+
+
+{% if wire.lag_aml_details|length() == 0 %}
+ {\bf No non-tiny wire transfers that are lagging behind due to AML detected.}
{% else %}
- N/A
-{% endif %} \\
-\nopagebreak
- \multicolumn{4}{l}{ {\tt \small {{ item.coin_pub }} } } \\
+ \begin{longtable}{l|r|r}
+ {\bf Deadline} & {\bf Amount}/{\bf Limit} & {\bf AML status} \\
+ \multicolumn{3}{l}{\bf Target account} \\ \hline \hline
+\endfirsthead
+ {\bf Deadline} & {\bf Amount}/{\bf Limit} & {\bf AML status} \\
+ \multicolumn{4}{l}{\bf Target account} \\ \hline \hline
+\endhead
+ \hline \hline
+ {\bf Deadline} & {\bf Amount}/{\bf Limit} & {\bf AML status} \\
+ \multicolumn{4}{l}{\bf Target account} \\
+\endfoot
+ \hline \hline
+ {\bf Deadline} & {\bf Amount}/{\bf Limit} & {\bf AML status} \\
+ \multicolumn{4}{l}{\bf Target account} \\
+ \caption{Lagging non-tiny transactions due to AML decisions.}
+ \label{table:lag}
+\endlastfoot
+{% for item in wire.lag_aml_details %}
+ {{ item.deadline }} &
+ {{ item.amount }}/{{ item.aml_limit }} &
+ {{ item.aml_status }} &
\nopagebreak
\multicolumn{4}{l}{ {\tt
- {% if 'payto_uri' in item.account %}
- {{ item.account.payto_uri }}
+ {% if 'account' in item %}
+ {{ item.account }}
{% endif %}
} } \\ \hline
{% endfor %}
diff --git a/contrib/ci/Containerfile b/contrib/ci/Containerfile
new file mode 100644
index 000000000..ac31c7ade
--- /dev/null
+++ b/contrib/ci/Containerfile
@@ -0,0 +1,68 @@
+FROM docker.io/library/debian:bookworm
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update -yqq && \
+ apt-get install -yqq \
+ autoconf \
+ autopoint \
+ curl \
+ bash \
+ coreutils \
+ git \
+ libcurl4-gnutls-dev \
+ libgcrypt-dev \
+ libidn11-dev \
+ libjansson-dev \
+ libmicrohttpd-dev \
+ libpq-dev \
+ libqrencode-dev \
+ libsodium-dev \
+ libtool \
+ libunistring-dev \
+ make \
+ pkg-config \
+ python3-pip \
+ python3-sphinx \
+ python3-sphinx-rtd-theme \
+ recutils \
+ texinfo \
+ zlib1g-dev \
+ # For mustach testing (optional) \
+ libjson-c-dev \
+ # Debian packaging tools \
+ po-debconf \
+ build-essential \
+ debhelper-compat \
+ devscripts \
+ git-buildpackage \
+ # Documentation dependencies \
+ doxygen \
+ graphviz \
+ pandoc \
+ # Test suite dependencies \
+ jq \
+ postgresql \
+ sudo \
+ wget
+
+# Install Taler (and friends) packages
+RUN curl -sS https://deb.taler.net/apt-nightly/taler-bookworm-ci.sources \
+ | tee /etc/apt/sources.list.d/taler-bookworm-ci.sources
+
+RUN echo '\
+Package: * \n\
+Pin: origin "deb.taler.net" \n\
+Pin-Priority: 999' > /etc/apt/preferences.d/taler
+
+RUN cat /etc/apt/preferences.d/taler && \
+ apt-get update -y && \
+ apt-get install -y \
+ libgnunet-dev \
+ libgnunet \
+ gnunet \
+ && rm -rf /var/lib/apt/lists/*
+
+WORKDIR /workdir
+
+CMD ["bash", "/workdir/ci/ci.sh"]
diff --git a/contrib/ci/ci.sh b/contrib/ci/ci.sh
new file mode 100755
index 000000000..f0be84242
--- /dev/null
+++ b/contrib/ci/ci.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -exvuo pipefail
+
+# Use podman, fails if it isn't found in PATH
+OCI_RUNTIME=$(which podman)
+REPO_NAME=$(basename "${PWD}")
+JOB_NAME="${1}"
+JOB_CONTAINER=$((grep CONTAINER_NAME contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "localhost/${REPO_NAME}")
+JOB_ARCH=$((grep CONTAINER_ARCH contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${2:-amd64}")
+CONTAINER_BUILD=$((grep CONTAINER_BUILD contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "True")
+
+echo "${JOB_CONTAINER}"
+
+if [ "${CONTAINER_BUILD}" = "True" ] ; then
+ "${OCI_RUNTIME}" build \
+ --arch "${JOB_ARCH}" \
+ -t "${JOB_CONTAINER}" \
+ -f contrib/ci/Containerfile .
+fi
+
+"${OCI_RUNTIME}" run \
+ --rm \
+ -ti \
+ --arch "${JOB_ARCH}" \
+ --env CI_COMMIT_REF="$(git rev-parse HEAD)" \
+ --volume "${PWD}":/workdir \
+ --workdir /workdir \
+ "${JOB_CONTAINER}" \
+ contrib/ci/jobs/"${JOB_NAME}"/job.sh
+
+top_dir=$(dirname "${BASH_SOURCE[0]}")
+
+#"${top_dir}"/build.sh
diff --git a/contrib/ci/jobs/0-codespell/config.ini b/contrib/ci/jobs/0-codespell/config.ini
new file mode 100644
index 000000000..bd7d73860
--- /dev/null
+++ b/contrib/ci/jobs/0-codespell/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = False
+WARN_ON_FAILURE = True
+CONTAINER_BUILD = False
+CONTAINER_NAME = nixery.dev/shell/codespell
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/0-codespell/dictionary.txt b/contrib/ci/jobs/0-codespell/dictionary.txt
new file mode 100644
index 000000000..f4ffa7945
--- /dev/null
+++ b/contrib/ci/jobs/0-codespell/dictionary.txt
@@ -0,0 +1,47 @@
+# List of "words" that codespell should ignore in our sources.
+#
+# Note: The word sensitivity depends on how the to-be-ignored word is
+# spelled in codespell_lib/data/dictionary.txt. F.e. if there is a word
+# 'foo' and you add 'Foo' _here_, codespell will continue to complain
+# about 'Foo'.
+#
+BRE
+ND
+Nd
+TE
+TEH
+UPDATEing
+WAN
+aci
+acn
+ba
+bre
+cant
+clen
+complet
+doas
+ect
+ehr
+fo
+ges
+hel
+ifset
+ist
+keypair
+nam
+nd
+onl
+openin
+ot
+ser
+sie
+som
+sover
+te
+te
+teh
+tha
+ths
+updateing
+wan
+wih
diff --git a/contrib/ci/jobs/0-codespell/job.sh b/contrib/ci/jobs/0-codespell/job.sh
new file mode 100755
index 000000000..64c0e779c
--- /dev/null
+++ b/contrib/ci/jobs/0-codespell/job.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+set -exuo pipefail
+
+job_dir=$(dirname "${BASH_SOURCE[0]}")
+
+skip=$(cat <<EOF
+ABOUT-NLS
+*/afl-tests/*
+**/auditor/*.sql
+**/templating/test-specs/*
+*.bbl
+*.bib
+*build-aux*
+*.bst
+*.cache/*
+*/cbdc-es.tex
+*/cbdc-it.tex
+*.cls
+configure*
+config.status
+*/contrib/*
+*/contrib/hellos/**
+*.dat
+*.deflate
+*.doc
+*/doc/*
+**/doc/flows/main.de.tex
+*/doc/texinfo.tex
+*.docx
+*.ecc
+*.eot
+*.epgz
+*.eps
+*.epub
+**/ExchangeSelection/example.ts
+*.fee
+*.fees
+*.file
+**/fonts/**
+*.gif
+*/.git/**
+*.gz
+*/i18n/strings.ts
+*.info
+*.jpeg
+*.jpg
+*.??.json
+*.json
+*/keys/*
+*key
+*.latexmkrc
+*libtool*
+*.log
+*/m4/*
+*.m4
+**/*.map
+*.min.js
+*.mp4
+*.odg
+*.ods
+*.odt
+*.pack.js
+*.pdf
+*.png
+*.PNG
+**/pnpm-lock.yaml
+*.po
+*.pptx
+*.priv
+**/rfc.bib
+*.rpath
+**/signing-key.asc
+*.sqlite
+*/src/anastasis-data.ts
+**/*.svg
+*.svg
+*.tag
+**/templating/mustach**
+*/templating/test?/**
+*/testcurl/test_tricky.c
+*/debian/tmp/**
+*/debian/taler-exchange/**
+*/debian/.debhelper/**
+*.tgz
+*.ttf
+*.ttf
+**/valgrind.h
+*/vpn/tests/**
+*.wav
+*.woff
+*.woff2
+*.xcf
+*.xlsx
+*.zkey
+EOF
+);
+
+echo Current directory: `pwd`
+
+codespell -I "${job_dir}"/dictionary.txt -S ${skip//$'\n'/,}
diff --git a/contrib/ci/jobs/1-build/build.sh b/contrib/ci/jobs/1-build/build.sh
new file mode 100755
index 000000000..d3fcfab85
--- /dev/null
+++ b/contrib/ci/jobs/1-build/build.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -exuo pipefail
+
+apt-get update
+apt-get upgrade -yqq
+
+./bootstrap
+./configure CFLAGS="-ggdb -O0" \
+ --enable-logging=verbose \
+ --disable-doc
+
+nump=$(grep processor /proc/cpuinfo | wc -l)
+make -j$(( $nump / 2 ))
+make
diff --git a/contrib/ci/jobs/1-build/job.sh b/contrib/ci/jobs/1-build/job.sh
new file mode 100755
index 000000000..8d79902c5
--- /dev/null
+++ b/contrib/ci/jobs/1-build/job.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+set -exuo pipefail
+
+job_dir=$(dirname "${BASH_SOURCE[0]}")
+
+"${job_dir}"/build.sh
diff --git a/contrib/ci/jobs/2-test/config.ini b/contrib/ci/jobs/2-test/config.ini
new file mode 100644
index 000000000..49cc8ea8a
--- /dev/null
+++ b/contrib/ci/jobs/2-test/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = False
+WARN_ON_FAILURE = True
+CONTAINER_BUILD = True
+CONTAINER_NAME = localhost/exchange
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/2-test/job.sh b/contrib/ci/jobs/2-test/job.sh
new file mode 100755
index 000000000..bfb24e335
--- /dev/null
+++ b/contrib/ci/jobs/2-test/job.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+set -exuo pipefail
+
+job_dir=$(dirname "${BASH_SOURCE[0]}")
+
+"${job_dir}"/test.sh
diff --git a/contrib/ci/jobs/2-test/test.sh b/contrib/ci/jobs/2-test/test.sh
new file mode 100755
index 000000000..a0002f226
--- /dev/null
+++ b/contrib/ci/jobs/2-test/test.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -evux
+
+apt-get update
+apt-get upgrade -yqq
+
+./bootstrap
+./configure CFLAGS="-ggdb -O0" \
+ --enable-logging=verbose \
+ --disable-doc
+
+nump=$(grep processor /proc/cpuinfo | wc -l)
+make clean
+make -j$(( $nump / 2 ))
+cd src/templating/
+./run-original-tests.sh
+make clean
+cd -
+make -j$(( $nump / 2 ))
+make install
+
+sudo -u postgres /usr/lib/postgresql/15/bin/postgres -D /etc/postgresql/15/main -h localhost -p 5432 &
+sleep 10
+sudo -u postgres createuser -p 5432 root
+sudo -u postgres createdb -p 5432 -O root talercheck
+
+check_command()
+{
+ # Set LD_LIBRARY_PATH so tests can find the installed libs
+ LD_LIBRARY_PATH=/usr/local/lib PGPORT=5432 make check
+}
+
+print_logs()
+{
+ set +e
+ for i in src/*/test-suite.log
+ do
+ echo "Printing ${i}"
+ cat "$i"
+ for FAILURE in $(grep '^FAIL:' ${i} | cut -d' ' -f2)
+ do
+ echo "Printing $(dirname $i)/${FAILURE}.log"
+ cat "$(dirname $i)/${FAILURE}.log"
+ done
+ done
+}
+
+if ! check_command ; then
+ print_logs
+ exit 1
+fi
diff --git a/contrib/ci/jobs/3-docs/config.ini b/contrib/ci/jobs/3-docs/config.ini
new file mode 100644
index 000000000..49cc8ea8a
--- /dev/null
+++ b/contrib/ci/jobs/3-docs/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = False
+WARN_ON_FAILURE = True
+CONTAINER_BUILD = True
+CONTAINER_NAME = localhost/exchange
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/3-docs/docs.sh b/contrib/ci/jobs/3-docs/docs.sh
new file mode 100755
index 000000000..fe2b96873
--- /dev/null
+++ b/contrib/ci/jobs/3-docs/docs.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+set -exuo pipefail
+
+./bootstrap
+./configure --enable-only-doc
+
+pushd ./doc/doxygen/
+
+make full
+
+popd
diff --git a/contrib/ci/jobs/3-docs/job.sh b/contrib/ci/jobs/3-docs/job.sh
new file mode 100755
index 000000000..a72bca4ba
--- /dev/null
+++ b/contrib/ci/jobs/3-docs/job.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+set -exuo pipefail
+
+job_dir=$(dirname "${BASH_SOURCE[0]}")
+
+"${job_dir}"/docs.sh
diff --git a/contrib/ci/jobs/4-deb-package/install-fix.patch b/contrib/ci/jobs/4-deb-package/install-fix.patch
new file mode 100644
index 000000000..8334c5a7a
--- /dev/null
+++ b/contrib/ci/jobs/4-deb-package/install-fix.patch
@@ -0,0 +1,13 @@
+diff --git a/debian/taler-exchange.install b/debian/taler-exchange.install
+index 631c270b..072c6231 100644
+--- a/debian/taler-exchange.install
++++ b/debian/taler-exchange.install
+@@ -36,6 +36,6 @@ usr/share/taler/exchange/templates/*.must
+ debian/etc-taler-exchange/* etc/
+
+ # Terms of service / privacy policy templates
+-usr/share/taler/exchange/*.rst
++#usr/share/taler/exchange/terms/*.rst
+ # Translations of ToS/PP
+-usr/share/taler/exchange/locale/*/LC_MESSAGES/*.po
++#usr/share/taler/exchange/terms/locale/*/LC_MESSAGES/*.po
diff --git a/contrib/ci/jobs/4-deb-package/job.sh b/contrib/ci/jobs/4-deb-package/job.sh
new file mode 100755
index 000000000..922f8bf63
--- /dev/null
+++ b/contrib/ci/jobs/4-deb-package/job.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -exuo pipefail
+# This file is in the public domain.
+# Helper script to build the latest DEB packages in the container.
+
+
+unset LD_LIBRARY_PATH
+
+# Install build-time dependencies.
+# Update apt cache first
+apt-get update
+apt-get upgrade -y
+mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
+
+export VERSION="$(./contrib/ci/jobs/4-deb-package/version.sh)"
+echo "Building package version ${VERSION}"
+EMAIL=none gbp dch --dch-opt=-b --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}"
+./bootstrap
+dpkg-buildpackage -rfakeroot -b -uc -us
+
+ls -alh ../*.deb
+mkdir -p /artifacts/exchange/${CI_COMMIT_REF} # Variable comes from CI environment
+mv ../*.deb /artifacts/exchange/${CI_COMMIT_REF}/
diff --git a/contrib/ci/jobs/4-deb-package/version.sh b/contrib/ci/jobs/4-deb-package/version.sh
new file mode 100755
index 000000000..52031b23a
--- /dev/null
+++ b/contrib/ci/jobs/4-deb-package/version.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+set -ex
+
+BRANCH=$(git name-rev --name-only HEAD)
+if [ -z "${BRANCH}" ]; then
+ exit 1
+else
+ # "Unshallow" our checkout, but only our current branch, and exclude the submodules.
+ git fetch --no-recurse-submodules --tags --depth=1000 origin "${BRANCH}"
+ RECENT_VERSION_TAG=$(git describe --tags --match 'v*.*.*' --exclude '*-dev*' --always --abbrev=0 HEAD || exit 1)
+ commits="$(git rev-list ${RECENT_VERSION_TAG}..HEAD --count)"
+ if [ "${commits}" = "0" ]; then
+ git describe --tag HEAD | sed -r 's/^v//' || exit 1
+ else
+ echo $(echo ${RECENT_VERSION_TAG} | sed -r 's/^v//')-${commits}-$(git rev-parse --short=8 HEAD)
+ fi
+fi
diff --git a/contrib/ci/jobs/5-deploy-package/config.ini b/contrib/ci/jobs/5-deploy-package/config.ini
new file mode 100644
index 000000000..8d6409a6e
--- /dev/null
+++ b/contrib/ci/jobs/5-deploy-package/config.ini
@@ -0,0 +1,5 @@
+[build]
+HALT_ON_FAILURE = True
+WARN_ON_FAILURE = True
+CONTAINER_BUILD = False
+CONTAINER_NAME = nixery.dev/shell/rsync
diff --git a/contrib/ci/jobs/5-deploy-package/job.sh b/contrib/ci/jobs/5-deploy-package/job.sh
new file mode 100755
index 000000000..d39cf9987
--- /dev/null
+++ b/contrib/ci/jobs/5-deploy-package/job.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -exuo pipefail
+
+ARTIFACT_PATH="/artifacts/exchange/${CI_COMMIT_REF}/*.deb"
+
+RSYNC_HOST="taler.host.internal"
+RSYNC_PORT=424242
+RSYNC_PATH="incoming_packages/bookworm-taler-ci/"
+RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}"
+
+
+rsync -vP \
+ --port ${RSYNC_PORT} \
+ ${ARTIFACT_PATH} ${RSYNC_DEST}
diff --git a/contrib/pp/pp-v0.rst b/contrib/exchange-pp-v0.rst
index e6d003d88..4800bd4e4 100644
--- a/contrib/pp/pp-v0.rst
+++ b/contrib/exchange-pp-v0.rst
@@ -48,11 +48,11 @@ to our services without at least clear implied consent, and we only process
and retain information with a strict business need. That being said, when
using our Services, we inherently have to collect the following information:
- * Bank account details necessary when receiving funds from you to top-up your wallet or to transfer funds to you when you are being paid via Taler. At the current experimental stage, only the pseudonym and password you entered in the bank demonstrator is stored.
+* Bank account details necessary when receiving funds from you to top-up your wallet or to transfer funds to you when you are being paid via Taler. At the current experimental stage, only the pseudonym and password you entered in the bank demonstrator is stored.
- * The amounts being withdrawn or deposited, with associated unique transaction identifiers and cryptographic signatures authorizing the transaction. Note that for purchases, we cannot identify the buyer from the collected data, so when you spend money, we only receive non-personal information.
+* The amounts being withdrawn or deposited, with associated unique transaction identifiers and cryptographic signatures authorizing the transaction. Note that for purchases, we cannot identify the buyer from the collected data, so when you spend money, we only receive non-personal information.
- * When you contact us. We may collect certain information if you choose to contact us, for example to report a bug or other error with the Taler Wallet. This may include contact information such as your name, email address or phone number depending on the method you choose to contact us.
+* When you contact us. We may collect certain information if you choose to contact us, for example to report a bug or other error with the Taler Wallet. This may include contact information such as your name, email address or phone number depending on the method you choose to contact us.
How we collect and process information
@@ -60,9 +60,9 @@ How we collect and process information
We may process your information for the following reasons:
- * to transfer money as specified by our users (Taler transactions);
- * to assist government entities in linking income to the underlying contract as required by law and local regulations
- * to support you using the Taler Wallet or to improve our Services
+* to transfer money as specified by our users (Taler transactions);
+* to assist government entities in linking income to the underlying contract as required by law and local regulations
+* to support you using the Taler Wallet or to improve our Services
How we share and use the information we gather
diff --git a/contrib/tos/bfh-v0.rst b/contrib/exchange-tos-bfh-v0.rst
index 85f041c33..85f041c33 100644
--- a/contrib/tos/bfh-v0.rst
+++ b/contrib/exchange-tos-bfh-v0.rst
diff --git a/contrib/exchange-tos-netzbon-v0.rst b/contrib/exchange-tos-netzbon-v0.rst
new file mode 100644
index 000000000..ee10121b4
--- /dev/null
+++ b/contrib/exchange-tos-netzbon-v0.rst
@@ -0,0 +1,108 @@
+Allgemeine Geschäftsbedingungen für eNetzBon
+============================================
+
+Version vom 26.2.2024
+---------------------
+
+Diese Allgemeinen Geschäftsbedingungen gelten für alle Nutzer und Händler, die das Taler-Bezahlsystem für eNetzBon verwenden.
+
+1. Vertragspartner
+------------------
+
+Diese Allgemeinen Geschäftsbedingungen (AGB) regeln die Nutzung des Taler-Bezahlsystems (nachfolgend "Taler") zwischen Ihnen (nachfolgend "Nutzer") und Taler Operations AG ("wir", "uns").
+
+2. Produktbeschreibung
+----------------------
+
+* Um die angebotenen Dienste wahrnehmen zu können, müssen Nutzer ein Taler-Wallet (elektronische Geldbörse) als Taler-App auf ihrem Smartphone oder als Erweiterung in einem Browser auf dem PC installieren.
+* Es werden keine Daten von zahlenden Nutzern benötigt und es erfolgt auch keine Registrierung oder Kontenanlage der Nutzer. Sie können ihre Waren ohne Preisgabe ihrer Identität erwerben.
+* Die Nutzer zahlen entweder in bar an den Verein Soziale Ökonomie oder an seine Mitglieder (Händler, Verkäufer) oder überweisen von ihrem bestehenden Girokonto bei einer Schweizer Bank an das Bankkonto des Vereins Soziale Ökonomie in der Währung Schweizer Franken (CHF), um dann wertbasierte elektronische Münzen in ihre Taler-Wallets abzuheben. Sie beziehen damit digitale Wertmarken, die fachsprachlich auch Token oder elektronischen Münzen genannt werden.
+* Die elektronischen Münzen werden in der Denomination eNetzBon im Taler-Wallet angezeigt und stellen Repräsentanten der Geldwerte auf dem Verrechnungskonto des Vereins Soziale Ökonomie dar.
+
+3. Digitale Erweiterung des NetzBon mit eNetzBon
+------------------------------------------------
+
+Der Verein Soziale Ökonomie arbeitet an der Digitalisierung des NetzBon mit GNU Taler, einem digitalen Bezahlsystem, das komplett auf Freier Software und quelloffener Software (FLOSS, Free Libre and Open-Source Software) basiert und den Grundsätzen der Sozialen Ökonomie folgt.
+
+Die Taler Operations AG stellt dieses Bezahlsystem dem Verein Soziale Ökonomie zur Verfügung. Die Erweiterung von NetzBon mit eNetzBon soll die Effizienz und Wirtschaftlichkeit des NetzBon verbessern, ohne jedoch die physische Form des NetzBon in naher Zukunft abzuschaffen.
+
+4. Registrierung und Konten
+---------------------------
+
+Es werden keine Daten von zahlenden Nutzern benötigt und auch nicht erfasst. Es erfolgt auch keine Registrierung oder Kontenanlage der Nutzer.
+
+Am eNetzBon-System teilnehmende Betriebe (Händler, Verkäufer) halten beim Verein Soziale Ökonomie interne eNetzBon-Konten, auf welche sie die ihnen übergebenen Bareinzahlungen von Nutzern (Kunden, Käufern) übertragen, damit die Nutzer dann eNetzBon in ihre persönlichen Wallets abheben können.
+
+5. Käufe und Zahlungsbedingungen
+--------------------------------
+
+* Die Nutzer können eNetzBon durch zwei Verfahren erwerben bzw. das Guthaben auf ihrem Wallet erhöhen:
+
+ * a. Per Bareinzahlung durch Nutzung der "Taler Cashier-App" in der Markthalle und in der Buchhandlung, wo ein Nutzer den abzuhebenden Betrag in CHF an das Personal bar übergeben kann und dann durch das Wallet der Betrag in CHF abgehoben und im Wallet in eNetzBon umgetauscht wird.
+ * b. Per Banküberweisung an das PostFinanz-Konto des Vereins Soziale Ökonomie. Das Wallet hilft dabei den Nutzern, den Abhebevorgang einzuleiten und gibt dazu einen Verwendungszweck an, d.h. eine mehrstellige Kombination aus Nummer und Buchstaben, die im Kontoauszug des persönlichen Girokontos des jeweiligen Nutzers als Buchungstext angezeigt wird. Mit diesem Verwendungszweck kann das Wallet den Betrag zuerst in CHF abheben und dann im Wallet in eNetzBon umtauschen.
+
+* Der Preis eines eNetzBon beträgt 1 CHF. Bitte beachten Sie, dass NetzBon nicht rückerstattbar sind, daher müssen sie ausgegeben werden.
+* In der Phase der Markteinführung von eNetzBon werden keine Transaktionskosten von Nutzern erhoben. Bei der Bezahlung mit eNetzBon fallen daher vorerst keine Transaktionsgebühren an. Diese Allgemeinen Geschäftsbedingungen erlauben jedoch die Möglichkeit zukünftiger Änderungen der Gebührenordnung.
+
+6. Nutzung der Taler-App
+------------------------
+
+Die Taler-App ermöglicht keine direkten Interaktionen, sondern dient ausschliesslich dem Bezug und der Verwendung von eNetzBon bei teilnehmenden Geschäften. Spenden sind möglich. Die Nutzer verpflichten sich, die Taler-App gemäss den geltenden Gesetzen und Vorschriften zu verwenden.
+
+Dem Nutzer ist es nur möglich, mit öffentlichen Shops zu interagieren. Mit anderen Privatpersonen kann ein Nutzer nicht interagieren.
+
+7. Verpflichtende Sicherungsmassnahmen der Nutzer
+-------------------------------------------------
+
+Die Nutzer müssen sich darüber im klaren sein, elektronisches Geld wie Bargeld zu behandeln und ebenso zu sichern, d.h. ein Backup der Wallet-Daten anzulegen.
+
+Die Nutzer der Taler-App sind daher verpflichtet, den Zugang zum digitalen Endgerät zu sichern und vor unbefugtem Zugriff zu bewahren. Sie müssen die Wallet-Daten mit einer Sicherungskopie auf einem anderen Gerät speichern. Die Exportfunktion des Wallet hilft dabei, ein Backup der Wallet-Daten anzulegen und zu speichern.
+
+Ein verlorenes Nutzergerät mit einem Wallet darauf ohne Backup der eNetzBon auf einem anderen Gerät oder Datenträger bedeutet einen Totalverlust des Gegenwerts des NetzBon-Guthabens.
+
+8. Datenschutz
+--------------
+
+Die Datenschutzrichtlinien sind in einem separaten Dokument festgelegt, das die Nutzer auch in der Taler-App finden. Der Schutz der persönlichen Daten und finanziellen Informationen hat für uns höchste Priorität.
+
+Daten der Nutzer werden nicht erhoben. Beim Bezahlen mit eNetzBon werden nur Ort, Uhrzeit und der die eNetzBon empfangende Betrieb (Händler, Verkäufer) erhoben.
+
+Die anonymisierten Daten des Kaufs und der Überweisung von NetzBon an den Betrieb werden im Falle einer Untersuchung der Finma erhoben. Dies betrifft jedoch nicht Nutzer, die mit eNetzBon zahlen, sondern die Transaktionen in NetzBon zwischen dem Verein Soziale Ökonomie und den teilnehmenden Betrieben.
+
+9. Streitbeilegung
+------------------
+
+Bei etwaigen Streitigkeiten oder Unstimmigkeiten, die aus der Nutzung von Taler, der Taler-App und eNetzBon entstehen, verpflichten sich die Parteien, zunächst eine gütliche Einigung anzustreben.
+
+Wenn keine Einigung erzielt werden kann, unterliegt die Streitbeilegung den geltenden schweizerischen Gesetzen und der Gerichtsbarkeit von Biel.
+
+10. Haftungsausschluss
+----------------------
+
+UNSER TEXTVORSCHLAG ZU DIESEM PUNKT MUSS NOCH DISKUTIERT WERDEN: Die Taler Operations AG haftet bei der Erfüllung ihrer Verpflichtungen für jedes Verschulden ihrer Mitarbeiter und der Personen, die sie zur Erfüllung ihrer Verpflichtungen hinzuzieht. Soweit die Sonderbedingungen für einzelne Geschäftsbeziehungen oder sonstige Vereinbarungen etwas Abweichendes regeln, gehen diese Regelungen vor.
+
+Hat ein Nutzer des Taler-Bezahlsystems durch schuldhaftes Verhalten - zum Beispiel durch Verletzung von Mitwirkungspflichten wie regelmässige Sicherungen und Vorsichtsmassnahmen - zur Entstehung eines Schadens beigetragen, bestimmt sich nach den Grundsätzen des Mitverschuldens, in welchem Umfang Taler Operations AG und Nutzer den Schaden zu tragen haben.
+
+11. Allgemeine Bestimmungen
+---------------------------
+
+DER TEXTVORSCHLAG VOM VEREIN SOZIALE ÖKONOMIE ZU DIESEM PUNKT MUSS NOCH DISKUTIERT WERDEN: Der Verein Soziale Ökonomie behält sich vor, bei Verletzung von Regeln oder Missbrauch, gewisse Händler-Konten zu löschen.
+
+12. Änderungen der AGB
+----------------------
+
+Die Taler Operations AG behält sich das Recht vor, diese Allgemeinen Geschäftsbedingungen (AGB) ändern zu können. Die Nutzer werden über Änderungen in der Taler-App benachrichtigt.
+
+Die fortgesetzte Nutzung der Taler-App nach Änderungen der AGB gilt als Zustimmung zu den geänderten Bedingungen.
+
+13. Datenschutzbeauftragte
+--------------------------
+
+Den Datenschutzbeauftragten des Vereins Soziale Ökonomie erreichen Sie beim Sitz des Vereins in der Klybeckstrasse 95, 4057 Basel, und per E-Mail an kontakt@sozialeoekonomie.org.
+
+Den Datenschutzbeauftragten der Taler Operations AG erreichen Sie per Post an Taler Operations AG, Höheweg 80, 2502 Biel, und über die unten genannten Kontaktmöglichkeiten.
+
+14. Kontakt
+-----------
+
+Bei Fragen oder Anliegen bezüglich dieser AGB oder der Taler-App erreichen Sie uns per Post an Taler Operations AG, Höheweg 80, 2502 Biel, und über die unten genannten Kontaktmöglichkeiten.
diff --git a/contrib/exchange-tos-tops-v0.rst b/contrib/exchange-tos-tops-v0.rst
new file mode 100644
index 000000000..2217f781c
--- /dev/null
+++ b/contrib/exchange-tos-tops-v0.rst
@@ -0,0 +1,959 @@
+Allgemeine Geschäftsbedingungen für die Nutzung von TALER
+=========================================================
+
+1. Allgemeines
+--------------
+
+1.1. Dienstleistung / Geltungsbereich
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Die Taler Operations AG (nachfolgend "**TALER AG**") ist eine Schweizer Aktiengesellschaft
+mit Sitz in Zürich.
+Die TALER bietet Privatkundinnen und -kunden (nachfolgend "**Kundin und/oder Kunde**")
+unter dem Namen "TALER” eine eigenes Bezahlungssystem an (nachfolgend "TALER”).
+Diese Allgemeinen Geschäftsbedingungen (nachfolgend "**AGB**") regeln die Benutzung von
+TALER App und die von der TALER AG über die TALER erbrachten Dienstleistungen.
+Diese AGB gelten als akzeptiert, sobald die Kundin bzw. der Kunde in der TALER App das
+Einverständnis erklärt hat.
+
+[KOMMENTAR SK]
+1. Wenn es wirklich nötig ist, für "Taler Operations AG" eine Abkürzung zu verwenden, dann
+würde "TALER AG" aus Sicht der GNU-Community den Namen von GNU Taler sehr vereinnahmen.
+Mein Vorschlag wäre noch kürzer als TALER AG und birgt keine Verwechslungsgefahr,
+Vereinnahmung oder Anmaßung: TOPS AG
+
+CG: Warum nicht einfach "TOPS" statt "TOPS AG"? AG ist auch nicht relevant.
+
+2. Bitte lasst uns Gendersprache vermeiden und statt "**Kundin und Kunde**" lieber
+"**Nutzer**" verwenden und möglichst im Plural schreiben.
+
+CG: Absolut, Gendersprache ist auslaenderfeindlich weil fuer nicht-Muttersprachler
+ deutlich schwerer. Aber besser *Kunden* statt *Nutzer* weil vmtl. Kunde ein Rechtsbegriff ist.
+
+3. **Zahlungsdienst** wäre IMHO rechtlich und sprachlich besser als "Bezahlungssystem".
+Dieser Begriff entspricht dem englischen 'payment service provider' auch nach ISO 220022.
+
+CG: OK.
+
+4. Ich würde dem Zahlungsdienst keinen "Namen" geben - vor allem nicht TALER, weil das
+sofort mit einer Währung assoziiert wird. Taler ist jedoch keine Währung, sondern ein
+Bezahlsystem, das in unserem Fall in CHF denominiertes e-Geld emittiert, genauer
+gesagt TOPS-CHF. Wenn wir dafür eine Kurzbezeichnung dafür brauchen, dann wäre
+mein Vorschlag **eCHF**.
+
+Ja, bin auch gegen die Benennung, vor allem weil es eben kein *eigenes* System ist,
+nur weil ich einen Web-Server betreibe, besitze ich ja nicht das Web ;-).
+
+5. Weitere Begriffsbestimmungen wären hier sinnvoll:
+- **Zahlungsdienst** bezeichnet die Dienstleistung der Taler Operations AG mit Sitz in
+Biel (Höheweg 80, 2502 Biel, Mitglied in der anerkannten Selbstregulierungsorganisation
+gemäss Art. 24 GwG, dem VQF - Verein zur Qualitätssicherung von Finanzdienstleistungen).
+
+CG: Nein, zu komplex. Weglassen.
+
+- **Selbstregulierung** bezeichnet die Eigenschaft der Taler Operations AG als Mitglied
+einer Selbstregulierungsorganisation wie dem VQF und Betreiberin einer
+Sandbox-Dienstleistung nach Art. 6 Abs. 2 BankV ohne gewerbsmäßige Bankeneigenschaft
+(Nichtbank).
+
+CG: Auch nicht gut. "TOPS ist Mitglied im VQF, einer FINMA-akkreditierten
+Selbstregulierungsorganisation. TOPS wird daher nicht direkt von der FINMA
+beaufsichtigt, sondern betreibt eine Finanzdienstleisung nach Art. 6 Abs. 2
+BankV ohne gewerbsmäßige Bankeneigenschaft (Nichtbank) und somit ohne
+Kundeneinlagensicherung."
+
+- **Taler-Wallet** bezeichnet eine von Taler Operations AG bereitgestellte Software, die
+digitales Bargeld (e-Geld) verwaltet, welches der Zahlungsdienst emittiert und zur
+Zahlung an Begünstigte wieder einlöst.
+- **Nutzer** bezeichnet Inhaber von Taler-Wallets und damit Zahlende bzw. potenziell
+Zahlende.
+
+CG: "Kunden sind Inhaber von durch TOPS signierten und in CHF denominierten Wertmarken
+welche in Taler-Wallets in Eigenverantwortung gespeichert werden und mit denen Kunden
+bezahlen koennen."
+
+- **Begünstigte** bezeichnet Händler, Betriebe, Verkäufer und sonstige Empfänger von
+Überweisungen des Zahlungsdiensts.
+- **Überweisungen von Nutzern** bezeichnet die Überweisungen an den hier angebotenen
+Zahlungsdienst mit dem Ziel des Abhebens von e-Geld in ein persönliches Wallet.
+
+CG: Rest weg-kuerzen:
+
+"", die als
+Publikumseinlagen bei Nichtbanken gelten. Taler Operations AG unterliegt nicht der
+Einlagensicherung und als Nichtbank auch nicht der Bankenaufsicht. Die entgegengenommen
+Gelder werden auf einem Sammelkonto aufbewahrt, um Zahlungen zwischen den Nutzern bzw.
+zwischen Zahlenden (Käufern) und Begünstigen (Verkäufern) auszuführen."" (alles streichen)
+
+- **Überweisungen an Begünstigte** bezeichnet die Überweisungen des Zahlungsdiensts an
+Händler, Betriebe, Verkäufer und sonstige Empfänger, die IBAN-Konten an Finanzinstituten in
+der Schweiz führen müssen, um die Zahlungen ihrer Kunden über den Zahlungsdienst empfangen
+zu können.
+- **Geschäftsbeziehung** bezeichnet die Beziehung zwischen Taler Operations AG und den
+Begünstigten (Händler, Betriebe, Verkäufer und sonstige Empfänger). Sollten für über 12
+Monate keine Transaktionen an die Begünstigen erfolgen, gilt die Geschäftsbeziehung als
+beendet.
+
+CG: Taler Operations AG => TOPS (ueberall!).
+
+[KOMMENTAR SK]
+
+1.2. Zugang zu den TALER Dienstleistungen
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+TALER ist ein System, das bargeldlose Zahlungen über das TALER Zahlungssystem ermöglicht.
+TALER kann von Kundinnen und Kunden verwendet werden, um Zahlungen zwischen TALER Nutzern
+durchzuführen ("**P2P-Zahlung**") und als Zahlungsmittel im stationären Handel, an
+Automaten, online und in Apps bei autorisierten Händlern oder Dienstleistungsanbietern, die
+TALER als Zahlungsmittel akzeptieren (nachfolgend "**Händler**"), eingesetzt werden
+("**P2M-Zahlung**").
+
+CG: nein, nicht noch Haendler einfuehren, einfach bei **Beguenstigten** bleiben!
+
+Die TALER AG kann sodann die Verwendung der TALER App auch im Ausland bei Händlern zulassen,
+die an einem mit dem TALER Zahlungssystem kooperierenden ausländischen Zahlungssystem
+angeschlossen sind. Solche Transaktionen werden vom ausländischen Zahlungssystem an das
+TALER Zahlungssystem weitergeleitet (nachfolgend "**internationale Zahlung**").
+Darüber hinaus bietet die TALER AG verschiedene Mehrwertleistungen an, namentlich die
+Hinterlegung oder Aktivierung von Sichtkarten und Dienstleistungen im Bereich des
+Mobile-Marketing. Diese Mehrwertleistungen erlauben Kundinnen und Kunden u.a., Coupons,
+Stempelkarten und weitere Kampagnen in der TALER App zu erhalten und zu verwalten, Stempel
+zu sammeln und Treuegeschenke, Rabatte und Gutschriften über die TALER App einzulösen.
+
+CG: obiger Paragraph ist kompletter Unsinn, einfach komplett Streichen. Wir machen
+KEINE internationalen Zahlungen, und auch keine "Mehrwertleistungen". Einfach killen!
+
+[NETZBON-NEU]
+Der Verein Soziale Ökonomie arbeitet an der Digitalisierung des NetzBon mit GNU Taler,
+einem digitalen Bezahlsystem, das komplett auf Freier Software und quelloffener Software
+(FLOSS, Free Libre and Open-Source Software) basiert und den Grundsätzen der Sozialen
+Ökonomie folgt. Die Taler Operations AG stellt dieses Bezahlsystem dem Verein Soziale
+Ökonomie zur Verfügung. Die Erweiterung von NetzBon mit eNetzBon soll die Effizienz und
+Wirtschaftlichkeit des NetzBon verbessern, ohne jedoch die physische Form des NetzBon in
+naher Zukunft abzuschaffen.
+[NETZBON-NEU]
+
+[KOMMENTAR SK]
+- Treffender als "P2M-Zahlung" wäre m.E. "C2M-Zahlung" (Customer-to-Merchant), weil die
+Zahlenden im Normalfall keine "Peers" sind, sondern einfach nur deren Kunden. P2P-Zahlungen
+liegen hingegen definitionsgemäß auch vor, wenn Zahlende von ihrem Wallet auf das Wallet
+eines Händlers Coins übertragen (Wallet-Exchange-Wallet).
+- Müssen wir "P2M" als Begriff in den AGB unbedingt verwenden? Bitte diskutieren.
+[KOMMENTAR SK]
+
+CG: Ich sehe gar nicht, das wir ueberhaupt P2P vs. P2M/C2M-Zahlungen in den AGBs unterscheiden muessen/sollten.
+
+
+1.3. Technische Voraussetzungen
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+TALER kann "_____________________". Benötigt wird "__________________________".
+Die Nutzung der Zahlungsfunktion und der Mehrwertleistungen erfordert eine aktive
+Internetverbindung.
+
+[NETZBON-NEU]
+Um die angebotenen Dienste wahrnehmen zu können, müssen Nutzer ein Taler-Wallet
+(elektronische Geldbörse) als Taler-App auf ihrem Smartphone oder als Erweiterung in einem
+Browser auf dem PC installieren.
+[NETZBON-NEU]
+
+CG: Nutzer => Kunden
+
+[KOMMENTAR SK]
+- Mir ist nicht klar, was in die Leerzeilen kommen soll.
+
+CG: Ditto.
+
+- Der Satz darunter ist korrekt, aber "Mehrwertleistungen" ein TWINT-Begriff, den wir
+streichen sollten.
+
+CG: JA!
+
+- Ich empfehle, den Satz von NETZBON zu übernehmen, denn er erwähnt auch die
+Browser-Erweiterungen und spricht allumfassend von "Diensten".
+
+CG: Ja. Bitte noch hinzufuegen: "Kunden sind frei in der Wahl ihrer Taler-Wallet
+ Anwendung. Beguenstigte sind ebenfalls frei in der Wahl ihrer Taler-Wallet
+ Anwendung bzw. ihres Taler-Backends. Verschiedene Loesungen werden von
+ diversen Anbietern bereitgestellt.
+ TOPS macht hier keine Einschraenkungen, und uebernimmt keine Gewaehrleistung.
+ Kunden sind eigenverantwortlich fuer die Sicherheit ihrer Taler-Wallets bzw.
+ Taler-Backends und der darin gespeicherten Wertmarken bzw. Transaktionsdaten."
+[KOMMENTAR SK]
+
+1.4. Registrierung und Identifizierung
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Zur Nutzung von TALER sind die Kundinnen und Kunden verpflichtet, sich in bei TALER zu
+registrieren und die verlangten Informationen zur Verfügung zu stellen. Die TALER AG behält
+sich vor, zur Erfüllung regulatorischer Vorgaben jederzeit weitere Informationen zu
+verlangen. Die registrierte Telefonnummer wird aus Sicherheitsgründen per SMS verifiziert.
+Mit der Registration bestätigt die Kundin bzw. der Kunde, die rechtmässige Nutzerin bzw.
+Nutzer der Telefonnummer und des Smartphones zu sein.
+Bei einer Änderung der bei der Registrierung angegebenen Daten müssen diese unverzüglich in
+TALER aktualisiert werden.
+Die TALER AG behält sich vor, Registrierungsgesuche ohne Angabe von Gründen abzulehnen bzw.
+bereits erfolgte Registrationen wieder rückgängig zu machen.
+
+[NETZBON-NEU]
+Es werden keine Daten von zahlenden Nutzern benötigt und es erfolgt auch keine
+Registrierung oder Kontenanlage der Nutzer. Sie können ihre Waren ohne Preisgabe ihrer
+Identität erwerben.
+
+Am eNetzBon-System teilnehmende Betriebe (Händler, Verkäufer) halten beim Verein Soziale
+Ökonomie interne eNetzBon-Konten, auf welche sie die ihnen übergebenen Bareinzahlungen von
+Nutzern (Kunden, Käufern) übertragen, damit die Nutzer dann eNetzBon in ihre persönlichen
+Wallets abheben können. Sie benötigen diese internen eNetzBon-Konten ebenfalls für den
+Empfang von Zahlungen der Nutzer für Güter (Waren und Dienstleistungen) der Betriebe.
+
+Die Nutzer leisten Ihre Einzahlung an das Bezahlsystem entweder in bar an den Verein
+Soziale Ökonomie oder an seine Mitglieder (Händler, Verkäufer) oder überweisen von ihrem
+bestehenden Girokonto bei einer Schweizer Bank an das Bankkonto des Vereins Soziale Ökonomie
+in der Währung Schweizer Franken (CHF), um dann wertbasierte elektronische Münzen in ihre
+Taler-Wallets abzuheben. Sie beziehen damit digitale Wertmarken, die wie ein
+Gutschein oder Prepaid-Guthaben zu betrachten sind. Sie werden auch als Token
+oder Coins bezeichnet. Die elektronischen Münzen werden in der Komplementärwährung
+"eNetzBon" im Taler-Wallet angezeigt und stellen Repräsentanten der Geldwerte auf dem
+Verrechnungskonto des Vereins Soziale Ökonomie in "NetzBon" dar.
+[NETZBON-NEU]
+
+[KOMMENTAR SK]
+Statt des ersten Absatzes von 1.4.:
+Zur Nutzung des Zahlungsdiensts bei Überweisungen an **Begünstige** von über 15.000
+CHF/Jahr sind diese verpflichtet, sich in bei Taler Operations AG zu registrieren und die
+dabei verlangten Informationen zur Verfügung zu stellen. Die Taler Operations AG behält
+sich vor, zur Erfüllung regulatorischer Vorgaben jederzeit weitere Informationen zu
+verlangen.
+
+Taler Operations AG benötigt zur Registrierung der Händler deren IBAN, Adresse und
+Telefonnummer (AMLA-Akte) oder es gelten die Empfangslimiten für Händler. Zur
+Nutzung des Zahlungsdiensts gehen die Begünstigten eine Geschäftsbeziehung mit Taler
+Operations AG ein. Ab einer bestimmten Umsatzhöhe sind sie verpflichtet, sich zu
+registrieren und die verlangten Informationen zur Verfügung zu stellen.
+
+Es erfolgt keine Registrierung oder Kontenanlage der **Nutzer** bei Taler Operations AG
+oder dem Bezahlsystem bzw. Zahlungsdienst. Es werden jedoch die IBAN-Konten erfasst, von
+denen die eingehenden Überweisungen erfolgen. Die Nutzer brauchen für das Abheben in
+Taler-Wallets eine Schweizer Telefonnummer zum Empfang von TANs, die der Zahlungsdienst
+versendet. Es gelten Höchstabhebegrenzen von 5.000 CHF pro Monat bzw. 15.000 CHF pro Jahr
+für die Nutzer. Bei Zahlungen an andere Nutzer (P2P-Zahlungen) bestehen für Nutzer mit
+Wohnsitz in der Schweiz Limiten von CHF 1.000 pro Monat und CHF 5.000 pro Kalenderjahr für
+das Senden und das Empfangen von e-Geld.
+[KOMMENTAR SK]
+
+CG: Bitte allgemeiner halten, die Grenzwerte CHF sollten gar nicht explizit in
+den AGBs auftauchen! Stattdessen: "Zur Nutzung des Zahlungsdienstes sind
+Kunden und Beguenstigte verpflichtet TOPS bei der Erfuellung regulatorischer
+Vorgaben zu unterstuetzen. Insbesondere kann TOPS Auskunft verlangen ueber die
+Identitaet von wirtschaftlich Beguenstigten. TOPS hat das Recht und die
+Pflicht ggf. Kunden und Beguenstigte von der Nutzung des Systems
+auszuschliessen sollten diese die notwendigen Auskuenfte verweigern oder
+inkorrekte Angaben machen."
+
+
+
+1.5. Geheimhaltung
+~~~~~~~~~~~~~~~~~~
+
+Der Umstand der Geschäftsbeziehung und daraus resultierende Daten (z.B. Name, Wohnort,
+Transaktionsdaten) werden grundsätzlich vertraulich behandelt. Sie können zur Erbringung von
+Dienstleistungen soweit notwendig an den Zahlungsempfänger sowie an weitere Dritte bekannt
+gegeben werden. Die Vertraulichkeit ist sodann zur Wahrung berechtigter Interessen der TALER
+AG, aber insbesondere in folgenden Fällen, aufgehoben:
+* Wahrnehmung gesetzlicher Auskunftspflichten und Erfüllung regulatorischer Vorgaben
+* Inkasso von Forderungen der TALER AG?
+* Gerichtliche Auseinandersetzungen.
+
+[NETZBON-NEU]
+Es werden keine Daten von zahlenden Nutzern benötigt und auch nicht erfasst. Es erfolgt auch
+keine Registrierung oder Kontenanlage der Nutzer.
+[NETZBON-NEU]
+
+[KOMMENTAR SK]
+- Satz 1: Geschäftsbeziehung **mit Begünstigten**
+- Ergänzen: Satz aus NETZBON-NEU
+[KOMMENTAR SK]
+
+CG: "Personenbezogene Daten werden von TOPS nur im Rahmen der zur Erfuellung
+gesetzlicher Verpflichtungen notwendigen Umfang erhoben, verarbeitet,
+aufbewahrt oder weitergegeben. Beim Bezahlvorgang mit e-Geld werden keine
+Daten zur Identitaet vom zahlenden Nutzer erfasst."
+
+
+
+1.6. Support
+~~~~~~~~~~~~
+
+Die TALER AG stellt den Kundinnen und Kunden im Sinne eines technischen Supports über die
+TALER eine Hilfefunktion zur Verfügung. Für die Erbringung dieses Supports können von der
+TALER AG auch Dritte beigezogen werden, an welche hierfür Zugriff auf relevante Daten
+gegeben werden kann.
+
+[KOMMENTAR SK]
+Ich würde hier die Haftung für die Aktionen der Dritten einschränken. Zugriff auf relevante
+Daten hätten dritte Parteien wie z.B. Auditoren oder Behörden übrigens auch nur bei Händlern
+in Bezug auf deren Daten und Umsätze. Bitte diskutieren.
+[KOMMENTAR SK]
+
+CG: Ich wuerde nur das Deutsch korrigieren wollen:
+"TOPS stellt den Nutzern auf Anfrage technischen Support zur Verfügung. An
+der Erbringung dieses Supports können Dritte beteiligt sein. Diese erhalten
+hierfür Zugriff auf notwendige personenbezogene Daten zur Kommunikation mit
+den Nutzern."
+
+
+1.7. Sorgfalts- und andere Pflichten der Kundinnen und Kunden
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Beim Umgang mit TALER sind insbesondere folgende Sorgfaltspflichten durch die Kundinnen und
+Kunden einzuhalten:
+* Das Smartphone, PC, Notebook etc. ist vor unbefugter Benutzung oder Manipulation zu
+schützen (z.B. mittels Geräte- bzw. Displaysperre).
+* Der Code für die Nutzung von TALER ist geheim zu halten, darf keinesfalls an andere
+Personen weitergegeben, oder zusammen mit dem Smartphone aufbewahrt werden.
+* Der gewählte Code darf nicht aus leicht ermittelbaren Kombinationen (Mobile-Nummer,
+Geburtsdatum usw.) bestehen.
+* Im Schadenfall haben die Kundinnen und Kunden nach bestem Wissen zur Aufklärung des
+Falls und zur Schadensminderung beizutragen. Bei strafbaren Handlungen ist Anzeige bei der
+Polizei zu erstatten.
+* Vor jeder Ausführung einer Zahlung sind die Angaben zum Zahlungsempfänger zu
+überprüfen, um Fehltransaktionen zu verhindern.
+* Es ist dafür zu sorgen, dass der Kontakt zur TALER AG nicht abbricht. Kommt es zu
+einem Kontaktabbruch, so kann die TALER AG die ihr entstehenden Kosten für
+Adressnachforschungen, wie auch die besondere Behandlung und Überwachung von
+nachrichtenlosen Vermögenswerten, den Kundinnen und Kunden weiterbelasten. Das Vorgehen bei
+nachrichtenlosen Vermögen und die jeweils geltende Gebührentabelle lässt sich hier einsehen.
+Kontaktlose Geschäftsbeziehungen mit einem Schuldsaldo werden von der TALER AG aufgelöst.
+Die Kundinnen und Kunden sind für die Verwendung (Nutzung) ihres Smartphones verantwortlich
+und tragen sämtliche Folgen, die sich aus der Verwendung der TALER App auf dem Smartphone
+ergeben. Insbesondere werden Handlungen, die eine Drittperson unberechtigt mit der TALER App
+auf dem Smartphone einer Kundin bzw. Kunden vornimmt, der Kundin bzw. dem Kunden
+zugerechnet.
+
+[NETZBON-NEU]
+Die Nutzer müssen sich darüber im klaren sein, elektronisches Geld wie Bargeld zu
+behandeln und ebenso zu sichern, d.h. ein Backup der Wallet-Daten anzulegen. Die Nutzer der
+Taler-App sind daher verpflichtet, den Zugang zum digitalen Endgerät zu sichern und vor
+unbefugtem Zugriff zu bewahren. Sie müssen die Wallet-Daten mit einer Sicherungskopie auf
+einem anderen Gerät speichern. Die Exportfunktion des Wallet hilft dabei, ein Backup der
+Wallet-Daten anzulegen und zu speichern. Ein verlorenes Nutzergerät mit einem Wallet darauf
+ohne Backup der eNetzBon auf einem anderen Gerät oder Datenträger bedeutet einen
+Totalverlust des Gegenwerts des NetzBon-Guthabens.
+[NETZBON-NEU]
+
+[KOMMENTAR SK]
+- Streichen: * Der Code für die Nutzung von TALER ist geheim zu halten...
+- Streichen: * Der gewählte Code darf nicht...
+CG: 2x Ja.
+
+- Streichen: * Es ist dafür zu sorgen, dass... (ist wohl ein TWINT-Rest)
+
+CG: Besser: ummuenzen auf **Beguenstigte**. D.h. wenn wir einem Haendler Geld schulden
+aber z.B. KYC brauchen, liegt es erst einmal beim Haendler dies zu merken (im Backend!)
+und uns zu kontaktieren! Wenn wir nachforschen muessen, wer hinter einer IBAN steckt
+um dann KYC zu bekommen, soll dies ruhig kosten. Der Text zu Schuldsalden muss natuerlich
+raus, Schulden gibt es ja bei uns nicht!
+
+- Stattdessen den Text aus NETZBON-NEU verwenden und ergänzen mit:
+* Es ist dafür zu sorgen, dass sich das Endgerät mit einem darauf installierten Taler-Wallet
+innerhalb eines Jahres nach der letzten Transaktion mit dem Zahlungsdienst über das Internet
+verbindet, ansonsten kann das Guthaben im Wallet verloren werden. Ein Erneuern des Guthabens
+erfolgt regulär einen Monat vor dem Ende der Gültigkeit des elektronischen Bargelds, das ein
+Jahr beträgt.
+
+CG: "das zum Abhebezeitpunkt ca. ein Jahr betraegt" (ca. ist wichtig, wir runden...!).
+[KOMMENTAR SK]
+
+1.8. Nutzung; Missbräuche
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Weicht die Nutzung von TALER erheblich vom üblichen Gebrauch ab oder bestehen Anzeichen
+eines rechts- oder vertragswidrigen Verhaltens, kann die TALER AG die Kundinnen und Kunden
+zur rechts- und vertragskonformen Benutzung anhalten, die Leistungserbringung ohne
+Vorankündigung entschädigungslos ändern, einschränken oder einstellen, den Vertrag frist-
+und entschädigungslos auflösen und gegebenenfalls Schadenersatz sowie die Freistellung von
+Ansprüchen Dritter verlangen. Dasselbe gilt im Falle von unzutreffenden oder unvollständigen
+Angaben der Kunden bei der Registrierung.
+
+[NETZBON-NEU]
+Die Taler-App ermöglicht keine direkten Interaktionen, sondern dient ausschliesslich dem
+Bezug und der Verwendung von eNetzBon bei teilnehmenden Geschäften. Spenden sind möglich.
+Die Nutzer verpflichten sich, die Taler-App gemäss den geltenden Gesetzen und Vorschriften
+zu verwenden. Dem Nutzer ist es nur möglich, mit öffentlichen Shops zu interagieren. Mit
+anderen Privatpersonen kann ein Nutzer nicht interagieren.
+
+Der Verein Soziale Ökonomie behält sich vor, bei Verletzung von Regeln oder Missbrauch
+gewisse Konten zu löschen.
+[NETZBON-NEU]
+
+[KOMMENTAR SK]
+- Satz 1: die Kundinnen und Kunden --> die **Nutzer**
+- Satz 2: Dasselbe gilt im Falle von unzutreffenden oder unvollständigen Angaben der
+**Begünstigten (Händler, Verkäufer)** bei der Registrierung.
+
+CG: Satz 2: bei P2P brauchen wir ggf. auch angaben von Nutzern, wuerde ich bei **Nutzern** lassen.
+
+- In NETZBON-NEU streichen: Mit anderen Privatpersonen kann ein Nutzer nicht interagieren.
+
+CG: Genau, ist auch bei Netzbon *falsch*.
+
+- Ändern: Der Verein Soziale Ökonomie behält sich vor, bei Verletzung von Regeln oder
+Missbrauch Konten **(von Händlern, Betrieben, Verkäufern) zu sperren bzw.** zu löschen.
+[KOMMENTAR SK]
+
+1.9. Haftung
+~~~~~~~~~~~~
+
+Die TALER AG haftet nicht für den Kundinnen und Kunden entstandene Verluste oder Schäden
+aufgrund der Verwendung von TALER, insbesondere nicht für Verluste oder Schäden:
+* aufgrund von Übermittlungsfehlern, technischen Störungen oder Defekten, Ausfällen und
+unberechtigten Zugriffen oder Eingriffen auf das Smartphone;
+* die ganz oder teilweise auf einen Verstoss der Kundinnen und Kunden gegen diese AGB
+oder anwendbare Gesetze zurückzuführen sind;
+* aufgrund einer Störung oder Fehlers von TALER oder der verwendeten Hardware;
+* aufgrund von Störungen, Unterbrechungen (inkl. für Systemwartungsarbeiten) oder
+Überlastungen der relevanten Informatiksysteme bzw. Netze;
+* aufgrund von Zahlungen, die nicht oder verzögert verarbeitet werden;
+* in Bezug auf Mehrwertleistungen;
+
+CG: streichen? Mehrwertleistungen machen wir doch gar nicht?
+
+* die auf Handlungen oder Unterlassungen von Dritten (inkl. Hilfspersonen der TALER AG)
+zurückzuführen sind,
+es sei denn, diese Verluste oder Schäden sind auf grobe Fahrlässigkeit oder vorsätzliches
+Verschulden der TALER AG zurückzuführen. Die TALER AG ersetzt Sach- und Vermögensschäden je
+Schadenereignis bis höchstens CHF 1’000.
+Die Haftung der TALER AG für Folgeschäden, entgangenem Gewinn, Datenverluste ist – soweit
+gesetzlich zulässig – in jedem Fall ausgeschlossen.
+Die Kundin bzw. der Kunde hält die TALER AG schadlos für Schäden oder Verluste, die der
+TALER AG aufgrund der Nichteinhaltung dieser AGB oder gesetzlichen Vorgaben, aufgrund
+fehlerhafter oder unvollständiger Angaben der Kundin bzw. des Kunden oder der Ausführung von
+Anweisungen entstehen.
+
+[KOMMENTAR SK]
+- Vorschlag zur Ergänzung des obigen Absatzes:
+Die Taler Operations AG haftet bei der Erfüllung ihrer Verpflichtungen für jedes Verschulden
+ihrer Mitarbeiter und der Personen, die sie zur Erfüllung ihrer Verpflichtungen hinzuzieht.
+Soweit die Sonderbedingungen für einzelne Geschäftsbeziehungen oder sonstige Vereinbarungen
+etwas Abweichendes regeln, gehen diese Regelungen vor.
+
+Hat ein Nutzer des Taler-Bezahlsystems durch schuldhaftes Verhalten - zum Beispiel durch
+Verletzung von Mitwirkungspflichten wie regelmässige Sicherungen und Vorsichtsmassnahmen -
+zur Entstehung eines Schadens beigetragen, bestimmt sich nach den Grundsätzen des
+Mitverschuldens, in welchem Umfang Taler Operations AG und Nutzer den Schaden zu tragen
+haben.
+
+CG: Nein, weglassen. Hilft uns nicht, nur mehr Text. AGB steht eh nicht ueber Recht und Gesetz.
+
+- Streichen: * in Bezug auf Mehrwertleistungen;
+
+CG: genau.
+[KOMMENTAR SK]
+
+1.10. Kommunikation
+~~~~~~~~~~~~~~~~~~~
+
+Die Kommunikation zwischen der TALER AG und den Kundinnen und Kunden erfolgt grundsätzlich
+über die TALER. Bei Bedarf kann die TALER AG die Kundinnen und Kunden auch ausserhalb der
+TALER App kontaktieren. Eine solche Kommunikation ist nicht zwingend vertraulich oder
+sicher.
+
+[KOMMENTAR SK]
+- Satz 1: Die Kommunikation zwischen der TALER AG und den Begünstigten erfolgt grundsätzlich
+über die TALER AG.
+
+- Satz 2: Bei Bedarf kann die TALER AG die registrierten Begünstigten (Händler, Betriebe,
+Verkäufer) kontaktieren.
+- Ergänzen: Falls eine Kommunikation zwischen der TALER AG und den Nutzern notwendig werden
+sollte, kann diese über ein Finanzinstitut (Bank des überweisenden Girokontos der Nutzer)
+oder/und über die Taler-Apps erfolgen, sofern dies technisch möglich ist.
+[KOMMENTAR SK]
+
+CG: alles falsch. Die Kommunikation von TOPS zu Nutzern erfolgt grundsätzlich
+über Benachrichtigungen im GNU Taler Protokoll. Nutzer sind dafuer verantwortlich auf
+entsprechende Benachrichtigungen zu reagieren. TOPS hat das Recht, Transaktionen
+nicht auszufuehren bis Nutzer auf diesem Weg angeforderte rechtlich notwendige Daten
+bereitstellen.
+
+
+
+1.11. Änderung AGB
+~~~~~~~~~~~~~~~~~~
+
+Die TALER AG kann die AGB jederzeit ändern. Änderungen werden auf geeignete Weise bekannt
+gegeben. Ist die Kundin bzw. der Kunde mit den Änderungen nicht einverstanden, so kann die
+Kundin bzw. der Kunde die TALER App nicht mehr verwenden.
+
+[KOMMENTAR SK]
+Vorschlag statt des obigen Absatzes:
+Die Taler Operations AG behält sich das Recht vor, diese Allgemeinen Geschäftsbedingungen
+(AGB) ändern zu können. Die Nutzer werden über Änderungen in der Taler-App benachrichtigt.
+Die fortgesetzte Nutzung der Taler-App nach Änderungen der AGB gilt als Zustimmung zu den
+geänderten Bedingungen.
+
+Der Zahlungsdienst sendet automatisch Änderungen in den AGB und Datenschutzbestimmungen
+an die Taler-Wallets mit der Notwendigkeit der Bestätigung durch die Nutzer, nach der sie
+die Taler-App weiterverwenden können.
+[KOMMENTAR SK]
+
+CG: "TOPS kann die AGB jederzeit ändern. Änderungen haben nur Wirkung auf nach der
+Änderung bezogene Wertmarken. Korrekte Wallets informieren Nutzer über Änderungen
+vor dem Bezug von neuen Wertmarken. Der Bezug von Wertmarken der TOPS nach
+Änderungen der AGB gilt als Zustimmung zu den geänderten Bedingungen."
+
+weil: du kannt den Leuten nicht verbieten, eine GPL-Wallet nicht zu benutzen wenn sie
+TOPS AGBs nicht zustimmen! Das waere GPL-widrig!
+
+
+1.12. Vorbehalt gesetzlicher Regelungen und Beschränkung der Dienstleistungen
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Allfällige Gesetzesbestimmungen, die den Betrieb und die Benutzung von Smartphones,
+Zahlungssystemen, des Internets und sonstiger dedizierter Infrastruktur regeln, bleiben
+vorbehalten und gelten ab ihrer Inkraftsetzung auch für die vorliegenden Dienstleistungen.
+Die Benutzung der Dienstleistungen aus dem Ausland kann lokalen rechtlichen Restriktionen
+unterliegen oder unter Umständen Regeln des ausländischen Rechts verletzen. Die
+Zahlungsfunktion ist grundsätzlich auf das Hoheitsgebiet der Schweiz beschränkt und darf im
+Ausland nicht in Anspruch genommen werden. Zulässig sind aber internationale Zahlungen über
+ein mit dem TALER Zahlungssystem kooperierendes ausländisches Zahlungssystem.
+
+CG: Letzten Satz hier streichen. Nix international.
+
+Die TALER AG behält sich vor, das Angebot von TALER jederzeit und ohne vorherige Ankündigung
+zu ändern, zu beschränken oder vollständig einzustellen, insbesondere aufgrund rechtlicher
+Anforderungen, technischen Problemen, zwecks Verhinderung von Missbräuchen, auf behördliche
+Anordnung oder aus Sicherheitsgründen.
+Die TALER AG kann nach eigenem Ermessen und ohne vorherige Ankündigung die Nutzung von TALER
+für einzelne Kundinnen und Kunden einschränken oder unterbinden, Zahlungen nicht oder nur
+verzögert verarbeiten, eingehende Zahlungen zurückweisen und das Auf- und Entladen
+beschränken, insbesondere wo dies nach Auffassung der TALER AG aus rechtlichen Gründen oder
+solchen, die die Reputation betreffen, angezeigt ist, bei IT-gestützten Angriffen, bei
+Missbrauch oder bei Betrugsverdacht. Im Verlaufe der Dauer der Geschäftsbeziehung können
+Umstände eintreten, die die TALER AG verpflichten, Vermögenswerte zu sperren, die
+Geschäftsbeziehung einer zuständigen Behörde zu melden oder abzubrechen.
+Die Kundinnen und Kunden sind verpflichtet, der TALER AG auf Verlangen Auskünfte zu
+erteilen, die die TALER AG benötigt, um den gesetzlichen oder internen Abklärungs- oder
+Meldepflichten nachzukommen.
+
+CG: scheint mir vieles vorher gesagtes zu duplizieren. Ggf. oben Text streichen?
+
+1.13. Geistiges Eigentum
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Für die Dauer des Vertrages erhalten die Kundinnen und Kunden das unübertragbare, nicht
+ausschliessliche Recht zur Nutzung von TALER. Inhalt und Umfang dieses Rechts ergeben sich
+aus den vorliegenden AGB. Alle Immaterialgüterrechte verbleiben bei der TALER AG oder den
+berechtigten Dritten.
+
+[KOMMENTAR SK]
+Satz 1: Für die Dauer der **Nutzung** erhalten die Nutzer das unübertragbare, nicht
+ausschliessliche Recht zur Verwendung des Bezahlsystems. Die Vertragspartner (Händler,
+Betriebe, Verkäufer) als Begünstigte erhalten im Fall der Nutzung der P2P- oder
+P2M-Funktion des Bezahlsystems dieses Recht wie alle anderen Nutzer eingeräumt.
+[KOMMENTAR SK]
+
+CG: Wuerde ich alles streichen. IP-Unsinn. Besser:
+
+1.13: Trademark
+~~~~~~~~~~~~~~~
+
+Beguenstigte haben das nicht ausschliessliche Recht das Taler-Logo zu
+nutzen um zu signalisieren, dass sie Zahlungen mit Taler akzeptieren.
+
+
+
+1.14 Datenschutz
+~~~~~~~~~~~~~~~~
+
+Die TALER AG verpflichtet sich hinsichtlich der Beschaffung, Bearbeitung und
+Nutzung der personenbezogenen Daten der Kundinnen und Kunden die Bestimmungen der
+schweizerischen Datenschutzgesetzgebung (insbesondere Bundesgesetz über den Datenschutz,
+DSG, und Verordnung über den Datenschutz, VDSG) einzuhalten.
+
+Alle Systemdaten werden ausschliesslich in der Schweiz gehostet.
+
+CG: ausschliesslich => primaer
+
+Der KYC Prozess wird durch
+einen Dienstleister übernommen, welcher verpflichtet wird, die Daten ebenfalls nach Recht
+und Gesetz von der Schweiz zu sichern.
+
+CG: KYC Prozesse werden ggf. durch Dienstleister gesteuert. Diese sind ebenfalls verpflichtet
+die Daten ebenfalls nach Recht und Gesetz der Schweiz zu sichern.
+
+Die eigentichen Daten des Kernsystems werden auf
+verschlüsselten Festplatten redundant (d.h. mit Backup) gespeichert und sind nur
+autorisiertem Personal zugänglich. Autorisiertes Personal wird von TALER AG einer
+Sicherheitsprüfung unterzogen. Das gesamte Design wurde strikt nach den Grundsätzen
+"Privacy-by-Design” und "Privacy-by-Default” umgesetzt.
+
+>>>
+Taler nutzt blinde Signaturen, damit
+TALER AG nicht lernen kann, welcher legitimierte Nutzer bei welchem Verkäufer einkauft.
+Weitere nicht-blinde digitale Signaturen werden eingesetzt, um alle Transaktionsschritte
+gegenseitig zu bestätigen und auch extern z.B. gegenüber Auditoren überprüfbar zu machen.
+Gleichzeitig werden Hashfunktionen eingesetzt, um Details, die dritte Parteien nicht lernen
+sollen, auch nicht zu exponieren. Von den Käufern werden nur so viele Daten verwendet, wie
+zum Abheben in eine virtuelle Geldbörse (Wallet) notwendig sind. Die dabei bezogenen
+Bankkonten haben bereits bankenseitig eine KYC-Prüfung der Käufer durchgeführt und kennen
+deren Namen und Adressen in Verbindung mit der Bankkontennummer (IBAN). Von den Verkäufern
+sind ebenfalls IBAN-Kontennummern bekannt. Diese können bei Bedarf zuständigen Behörden und
+Auditoren offengelegt werden
+<<<
+CG: obigen >>>Paragraph<<< bitte komplett streichen. Nicht falsch, aber viel zu viele Details.
+
+Weitere Informationen zu den Datenbearbeitungen finden sich in der Datenschutzerklärung auf
+der Webseite der TALER AG (www.TALER.ch).
+
+[NETZBON-NEU]
+Die Datenschutzrichtlinien sind in einem separaten Dokument festgelegt, das die Nutzer auch
+in der Taler-App finden. Der Schutz der persönlichen Daten und finanziellen Informationen
+hat für uns höchste Priorität. Daten der Nutzer werden nicht erhoben. Beim Bezahlen mit
+eNetzBon werden nur Ort, Uhrzeit und der die eNetzBon empfangende Betrieb (Händler,
+Verkäufer) erhoben. Die anonymisierten Daten des Kaufs und der Überweisung von NetzBon an
+den Betrieb werden im Falle einer Untersuchung der Finma erhoben. Dies betrifft jedoch nicht
+Nutzer, die mit eNetzBon zahlen, sondern die Transaktionen in NetzBon zwischen dem Verein
+Soziale Ökonomie und den teilnehmenden Betrieben.
+
+Den Datenschutzbeauftragten des Vereins Soziale Ökonomie erreichen Sie beim Sitz des Vereins
+in der Klybeckstrasse 95, 4057 Basel, und per E-Mail an kontakt@sozialeoekonomie.org.
+
+Den Datenschutzbeauftragten der Taler Operations AG erreichen Sie per Post an Taler
+Operations AG, Höheweg 80, 2502 Biel, und über die unten genannten Kontaktmöglichkeiten.
+[NETZBON-NEU]
+
+[KOMMENTAR SK]
+- Satz 1 von 1.14.: Kundinnen und Kunden --> Begünstigte
+
+CG: Besser: "Nutzer" (weil: beides, Kunden + Beguenstigte)
+
+- Beide Texte können ansonsten nach Korrektur orthografischer Fehler so bleiben und sollten
+auch in den AGB so angezeigt werden. Bitte diskutieren und eventuell kürzen.
+
+CG: Ja, definitiv viel kuerzen (siehe oben).
+[KOMMENTAR SK]
+
+1.15. Dauer und Kündigung
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Die Geschäftsbeziehung zwischen der Kundin bzw. dem Kunden und der TALER AG wird für
+unbestimmte Dauer abgeschlossen.
+Die Kundinnen und Kunden können ihr TALER Guthaben auf TALER jederzeit saldieren und
+schliessen, was als Kündigung gilt. Die TALER AG kann ihrerseits die Geschäftsbeziehung
+jederzeit mit sofortiger Wirkung kündigen. Eine schriftliche Kündigung der TALER AG erfolgt
+an die zuletzt bekanntgegebene (E-Mail-) Adresse der Kundin bzw. des Kunden.
+
+CG: Das ist Unsin, wir haben keine E-mail addressen von Kunden!
+
+Erfolgt während 4 Jahren keine Transaktion, gilt die Geschäftsbeziehung als durch die Kundin
+bzw. den Kunden gekündigt.
+
+[KOMMENTAR SK]
+- Satz 1: Die Geschäftsbeziehung zwischen den Begünstigten (Händler, Betriebe, Verkäufer
+und sonstige Empfänger von Überweisungen des Zahlungsdienst an die begünstigten
+IBAN-Konten) und dem Zahlungsdienstleister wird auf eine unbestimmte Dauer abgeschlossen.
+
+CG: Ja.
+
+- Satz 2: Die Nutzer von Taler-Wallets können das Guthaben jederzeit an die Bankkonten
+zurücküberweisen lassen, von denen die Überweisung der Nutzer an den Zahlungsdienst
+erfolgte, und so das Guthaben auf Null setzen.
+
+CG: Auch OK, wobei "saldieren" ggf. besser ist.
+
+- Satz 3: Die TALER AG kann die Geschäftsbeziehung mit den Begünstigten jederzeit -
+insbesondere in Missbrauchsfällen mit sofortiger Wirkung - kündigen.
+- Satz 4: Eine schriftliche Kündigung der TALER AG erfolgt an eine der zuletzt
+bekanntgegebenen Adressen der Geschäftspartner (z.B. per E-Mail oder Brief).
+- Satz 5: Streichen
+
+CG: Ja, wir brauchen ggf. noch etwas das TOPS bei Betriebsaufgabe die Nutzer ueber
+ das Taler-Protokoll informiert und die Wallets in diesem Fall die Kunden
+ auffordern werden, bestehende Restguthaben zu saldieren. Kunden die dies
+ unterlassen, verlieren dann nach 3 Monaten den Anspruch auf das Restguthaben.
+
+[KOMMENTAR SK]
+
+1.16. Übertragung
+~~~~~~~~~~~~~~~~~
+
+Die TALER AG kann die Vertragsbeziehung mit der Kundin bzw. dem Kunden
+(inkl. einem allfälligen Guthaben) jederzeit und ohne vorgängige Information auf eine andere
+Gesellschaft der TALER Gruppe übertragen.
+
+[KOMMENTAR SK]
+Änderungsvorschlag:
+Die Taler Operations AG kann eine vertraglich geregelte Geschäftsbeziehung jederzeit an
+eine andere Firma ihrer Muttergesellschaft übertragen.
+[KOMMENTAR SK]
+
+CG: Nein, einfach "auf eine andere Gesellschaft uebertragen".
+Gar keine Einschraenkung auf Gruppe/Mutter, bitte!
+
+
+1.17. Anwendbares Recht und Gerichtsstand
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Soweit gesetzlich zulässig, unterstehen alle Rechtsbeziehungen zwischen den Kundinnen und
+Kunden und der TALER AG (inkl. internationalen Zahlungen) ausschliesslich dem materiellen
+schweizerischen Recht, unter Ausschluss von Kollisionsrecht und unter Ausschluss von
+Staatsverträgen.
+Unter dem Vorbehalt von entgegenstehenden, zwingenden gesetzlichen Bestimmungen ist Zürich
+ausschliesslicher Gerichtsstand und Erfüllungsort. Für Kundinnen und Kunden mit Wohnsitz
+ausserhalb der Schweiz ist Zürich sodann auch Betreibungsort.
+
+[NETZBON-NEU]
+Bei etwaigen Streitigkeiten oder Unstimmigkeiten, die aus der Nutzung von Taler, der
+Taler-App und eNetzBon entstehen, verpflichten sich die Parteien, zunächst eine gütliche
+Einigung anzustreben. Wenn keine Einigung erzielt werden kann, unterliegt die
+Streitbeilegung den geltenden schweizerischen Gesetzen und der Gerichtsbarkeit von Biel.
+
+CG: Netzbon is Biel!? Nicht Basel?
+[NETZBON-NEU]
+
+[KOMMENTAR SK]
+- Satz 1: Kundinnen und Kunden --> Nutzern
+
+CG: immer ;-)
+
+- Satz 2: Zürich --> Biel
+
+CG: TOPS: Ich denke Bern, nicht Biel (so was ist doch bestimmt Kantonal!?)
+
+- Satz aus NETZBON-NEU ebenfalls verwenden
+
+CG: OK.
+[KOMMENTAR SK]
+
+2. Zahlungsfunktionen
+---------------------
+
+2.1. Limiten
+~~~~~~~~~~~~
+
+Die Kundinnen und Kunden können bis CHF "___________________".
+Bei Zahlungen an andere TALER Nutzer (P2P-Zahlung) bestehen für Kundinnen und Kunden mit
+Wohnsitz in der Schweiz Limiten von CHF 1‘000 pro Monat und CHF 5‘000 pro Kalenderjahr für
+das Senden und das Empfangen von Geld
+
+CG: 1000/5000 fuer das Abheben von e-Geld von einem Girokonto bzw. fuer den Empfang von
+ P2P Zahlungen zwischen Taler-Wallets mit bestaetigter Schweizer Mobilfunknummer.
+
+Die TALER AG behält sich vor, diese Limite jederzeit zu senken oder zu erhöhen bzw.
+zusätzliche Limite einzuführen, insbesondere aus regulatorischen sowie Sicherheitsgründen.
+
+[KOMMENTAR SK]
+Änderungsvorschlag für Satz 3:
+Die TALER AG behält sich insbesondere aus regulatorischen Gründen vor, die Limite jederzeit
+zu senken oder zu erhöhen. Die Änderung wird in aktualisierten AGB angezeigt, welche die
+Nutzer vor der weiteren Nutzung des Zahlungsdiensts zu bestätigen haben.
+[KOMMENTAR SK]
+
+CG: Das wir die AGB aendern koennen haben wir bereits gesagt, wuerde ich nicht doppeln.
+
+2.2. Aufbuchen
+~~~~~~~~~~~~~~
+
+Das TALER Wallet wird von den Kundinnen und Kunden über die hierfür "_________"vorgesehenen
+Optionen aufgeladen. Es stehen folgende Möglichkeiten zur Verfügung:
+* Zum Aufbuchen der gewünschten Währung und der Geldmenge wählt man in der
+Wallet-Anwendung den von TALER AG betriebenen Exchange, an den man die Gelder vom Girokonto
+überweist und von dem schließlich das Wallet die elektronischen Repräsentanten der
+gewünschten Geldmenge abhebt (sog. Coins)
+Die TALER AG kann weitere Aufladeoptionen einführen oder bestehende Optionen nicht mehr
+anbieten.
+Allfällige mit der Ladung verbundenen Transaktions- oder sonstigen Gebühren sind durch die
+Kundinnen und Kunden zu tragen.
+Das TALER Guthaben wird nicht verzinst. Die Kundinnen und Kunden nehmen zur Kenntnis, dass
+das Guthaben nicht von der Einlagensicherung gedeckt ist.
+Der Verarbeitungsprozess für das Aufladen bzw. Entladen des TALER Guthabens kann je nach
+Ladeoption mehrere Tage Zeit in Anspruch nehmen.
+Die Kundin bzw. der Kunde erteilt für den Fall der Einrichtung der LSV-Anbindung der TALER
+AG die Ermächtigung, einzelne Daten zwecks Bonitätsprüfung an Dritte weitergeben zu können.
+
+CG: Den letzten Satz streichen.
+
+[NETZBON-KOMMENTAR]
+Die Nutzer können eNetzBon durch zwei Verfahren erwerben bzw. das Guthaben auf ihrem Wallet
+erhöhen:
+
+a. Per Bareinzahlung durch Nutzung der "Taler Cashier-App" in der
+Markthalle und in der Buchhandlung, wo ein Nutzer den abzuhebenden Betrag in CHF an das
+Personal bar übergeben kann und dann durch das Wallet der Betrag in CHF abgehoben und im
+Wallet in eNetzBon umgetauscht wird.
+
+b. Per Banküberweisung an das PostFinanz-Konto des Vereins Soziale Ökonomie. Das Wallet
+hilft dabei den Nutzern, den Abhebevorgang einzuleiten und gibt dazu einen Verwendungszweck
+an, d.h. eine mehrstellige Kombination aus Nummer und Buchstaben, die im Kontoauszug des
+persönlichhen Girokontos des jeweiligen Nutzers als Buchungstext angezeigt wird. Mit diesem
+Verwendungszweck kann das Wallet den Betrag zuerst in CHF abheben und dann im Wallet in
+eNetzBon umtauschen.
+
+Der Preis eines eNetzBon beträgt 1 CHF. Bitte beachten Sie, dass NetzBon nicht
+rückerstattbar sind, daher müssen sie ausgegeben werden.
+
+In der Phase der Markteinführung von eNetzBon werden keine Transaktionskosten von Nutzern
+erhoben. Bei der Bezahlung mit eNetzBon fallen daher vorerst keine Transaktionsgebühren an.
+Diese Allgemeinen Geschäftsbedingungen erlauben jedoch die Möglichkeit zukünftiger
+Änderungen der Gebührenordnung.
+[NETZBON-KOMMENTAR]
+
+[KOMMENTAR SK]
+- Satz 3 in 2.2.: Streichen: (sog. Coins)
+- Satz 5: durch die Kundinnen und Kunden --> durch die Nutzer
+- Satz 6: Das TALER Guthaben --> Guthaben der Nutzer in Wallets
+- Satz 7: Kundinnen und Kunden --> Nutzer
+- Satz 8: Aufladen bzw. Entladen des TALER Guthabens --> Erhöhen und Verringern des
+Guthabens im Wallet
+
+CG: alle OK.
+
+- Satz 9: Diesen Satz kann ich nicht interpretieren (was ist LSV-Anbindung?); Kundin bzw.
+der Kunde --> Nutzer
+
+CG: LSV Lastschriftverfahren. Streichen, machen wir *nie*.
+[KOMMENTAR SK]
+
+2.3. Abbuchen
+~~~~~~~~~~~~~
+
+Das Entladen muss "_____________________________________________".
+
+[KOMMENTAR SK]
+Was soll in den Platzhalter kommen?
+[KOMMENTAR SK]
+
+CG: ... auf ein Schweizer Bankkonto erfolgen. Internationale Zahlungen sind nicht erlaubt.
+
+
+2.4. Zahlen mit TALER
+~~~~~~~~~~~~~~~~~~~~~
+
+Die Kundinnen und Kunden können mit dem Smartphone und dem damit verbundenen TALER Wallet an
+entsprechend ausgerüsteten Ladenkassen im Inland, Automaten, im Internet, in anderen Apps,
+durch Hinterlegung als TALER Zahlungsart bei ausgewählten Händlern, bei Mehrwertleistungen
+und an andere TALER Nutzer im Rahmen der geltenden Limiten bezahlen.
+Bei einer Bezahlung wird der entsprechende Betrag direkt vom TALER Wallet abgebucht. Es muss
+mindestes im TALER Wallet in Höhe des Transaktionsbetrags verfügbar sein.
+
+CG: Mehrwertleistungen streichen.
+
+[KOMMENTAR SK]
+Änderungsvorschlag für Satz 1: Die Nutzer können mit dem im Smartphone oder Webbrowser
+installierten Taler-Wallet innerhalb der geltenden Limiten bezahlen bei natürlichen und
+juristischen Personen, die diese Bezahloption akzeptieren und ein Schweizer Bankkonto zum
+Geldempfang führen (z.B. Ladengeschäfte, Webshops, Apps und sonstige Begünstigte).
+[KOMMENTAR SK]
+
+CG: Scheint mir aequivalent, ist mir egal ;-).
+
+
+2.5. Belastung der Bezahlungen
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Die Kundinnen und Kunden anerkennen sämtliche getätigten P2M- und P2P-Zahlungen, welche mit
+dem TALER Wallet von ihrem Smartphone aus erfolgt sind, selbst wenn diese Zahlungen ohne
+ihre Zustimmung erfolgt sind.
+
+[KOMMENTAR SK]
+Es handelt sich bei dem Guthaben auf den Wallets der Nutzer um digitales Bargeld, dessen
+Eigentümerschaft technisch nicht ermittelbar ist. Jeder Teil des Guthabens erscheint in
+Form einer Datei mit alphanumerischen Zeichenfolgen und wird beim Abheben ins Wallet blind
+signiert, wodurch der Signatar keinen Rückschluss auf den Eigentümer des eingelösten
+Guthabens ziehen kann. Ist ein Guthaben eingelöst worden, kann dieses nicht noch ein
+weiteres Mal eingelöst werden. Wer das Guthaben zuerst einlöst, hat den Wert des Guthabens
+zur Zahlung verwendet.
+[KOMMENTAR SK]
+
+CG: Smartphone ist zu einschraenkend (kann ja auch ein Browser oder CLI-wallet sein!)
+CG: KOMMENTAR SK ist zu lang. Eher was von oben zum Thema Eigenverantwortung/Eigenverwahrung
+ runterziehen?
+
+
+2.6. Preise und Drittvergütungen
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Die Installation von TALER und die Nutzung der damit verbundenen Dienstleistungen sind
+grundsätzlich kostenlos.
+
+CG: Streichen. TOPS hat *nichts* mit der Installation zu tun. Die machen ggf. Dritte,
+ und da haben wir auch nichts zu zu sagen, was da die Kosten sind!
+
+Internationale Zahlungen in Fremdwährungen werden automatisch zu einem von einem Dritten
+gestellten Wechselkurs in Schweizer Franken umgerechnet. Die TALER AG kann diesen
+Wechselkurs erhöhen (sog. Mark-up) sowie eine zusätzliche Gebühr für die
+Fremdwährungstransaktion verlangen. Der Mark-up und die Gebühren fliessen alleine der TALER
+AG zu.
+
+CG: Streichen, wir machen keine Konvertierung.
+
+Den Kundinnen und Kunden wird in jedem Fall der finale Betrag in Schweizer Franken
+zur Bestätigung angezeigt. Kommt es zu einer Rückabwicklung einer internationalen Zahlung,
+so wird diese zum dannzumal gestellten Wechselkurs durchgeführt. Die Kundinnen und Kunden
+tragen das entsprechende Wechselkursrisiko.
+
+CG: Streichen, wir machen keine Konvertierung.
+
+TALER kann für die Nutzung von Aufladeoptionen Gebühren erheben. Die Kundinnen und Kunden
+werden in diesem Fall vor der Nutzung der
+kostenpflichtigen Aufladeoption in der TALER App über die zu bezahlenden Gebühren
+informiert.
+
+CG: Archivieren, nur wenn wir das wirklich machen in die AGB aufnehmen!
+
+Änderungen von Preisen und die Einführung neuer Preise werden grundsätzlich in der TALER App
+bekanntgegeben. Eine Anpassung gilt als genehmigt, wenn die Kundin bzw. der Kunde nicht vor
+Inkrafttreten der Änderung den Vertrag kündigt (Ziffer 1.15). Änderungen von Preisen für
+internationale Zahlungen müssen nicht separat bekanntgegeben werden.
+
+CG: Streichen, wir machen keine internationalen Zahlungen.
+
+Den Kundinnen und
+Kunden wird aber immer der Endbetrag in Schweizer Franken inkl. allen Gebühren angezeigt,
+
+
+bevor eine internationale Zahlung bestätigt wird.
+
+CG: Streichen, wir machen keine internationalen Zahlungen.
+
+
+Bei P2M-Zahlungen und der Inanspruchnahme von Mehrwertleistungen erhält die TALER AG unter
+Umständen gewisse Vergütungen von Dritten. Diese Drittvergütungen sind hier detailliert
+beschrieben.
+
+CG: Streichen, wir machen keine Mehrwertleistungen.
+
+Sie erlauben der TALER AG, die Benutzung der TALER App grundsätzlich kostenlos
+anzubieten. **Die Kundin bzw. der Kunde verzichtet auf die Erstattung sämtlicher
+Drittvergütungen, die die TALER AG in der Vergangenheit erhalten hat und in Zukunft erhalten
+könnte.**
+
+CG: Archivieren: wir bekommen keine Drittverguetungen, und *TOPS* bietet die Taler App gar nicht an!
+
+
+[KOMMENTAR SK]
+- Satz 1: --> Die Installation von Taler-Wallets ...
+- Satz 2: Internationale **eingehende** Zahlungen in Fremdwährungen werden automatisch zu
+einem von **der Schweizerischen Nationalbank** festgestellten Wechselkurs in Schweizer
+Franken umgerechnet.
+- Satz 6: Bei Rückbuchungen aus dem Guthaben in Taler-Wallets auf Nutzeranweisung oder bei
+erfolglosem Abheben ins Wallet erfolgen diese in derselben internationalen Fremdwährung wie
+die Eingangszahlung und verringert um anfallende Gebühren für Rücküberweisungen und
+Fremdwährungstransaktionen.
+- Satz 7 streichen
+- Satz 8: TALER --> Taler Operations AG
+- Satz 11: Eine Anpassung gilt als genehmigt, wenn die **Nutzer** die aktualisierten AGB in
+der App akzeptieren. Eine Anpassung gilt als genehmigt, wenn die Begünstigten (Händler,
+Betriebe, Verkäufer) nicht vor Inkrafttreten der Änderung den Vertrag kündigen.
+- Sätze 14 bis Ende: Bitte streichen, denn "Mehrwertleistungen" umfassen bei TWINT z.B.
+“Mobile-Marketing-Kampagnen”, Rabatt- und Kundenbindungsprogramme und die "Später
+zahlen"-Funktion. Diese Funktionen sind jedoch für das Taler-Bezahlsystem abträglich und
+dürften sowieso eher von der Seite der Händler angeboten werden.
+
+CG: Genau.
+
+Dankeschön, dass alle Kommentare bis hierhin durchgelesen wurden! Der AGB-Text muss ggf.
+stilistisch noch umformuliert werden, denn er ist zu weiten Teilen identisch mit TWINT-AGB.
+[KOMMENTAR SK]
+
+CG: Stilistische Gleichheit ist IMO kein Problem. Nur muss eben richtig sein ;-).
diff --git a/contrib/tos/tos-v0.rst b/contrib/exchange-tos-v0.rst
index 2509b87b1..ea3ab297d 100644
--- a/contrib/tos/tos-v0.rst
+++ b/contrib/exchange-tos-v0.rst
@@ -1,7 +1,8 @@
-Terms Of Service
+Terms of Service
================
-Last Updated: 12.4.2019
+Last update: 22.2.2024
+----------------------
Welcome! Taler Systems SA (“we,” “our,” or “us”) provides a payment service
through our Internet presence (collectively the “Services”). Before using our
@@ -20,27 +21,17 @@ to interact with our Services, you are agreeing to our Terms, so please read
carefully.
Highlights:
-~~~~~~~~~~~
-
- • You are responsible for keeping the data in your Taler Wallet at all times
- under your control. Any losses arising from you not being in control of
- your private information are your problem.
- • We will try to transfer funds we hold in escrow for our users to any legal
- recipient to the best of our ability within the limitations of the law and
- our implementation. However, the Services offered today are highly
- experimental and the set of recipients of funds is severely restricted.
- • For our Services, we may charge transaction fees. The specific fee structure
- is provided based on the Taler protocol and should be shown to you when you
- withdraw electronic coins using a Taler Wallet. You agree and understand
- that the Taler protocol allows for the fee structure to change.
- • You agree to not intentionally overwhelm our systems with requests and
- follow responsible disclosure if you find security issues in our services.
- • We cannot be held accountable for our Services not being available due to
- circumstances beyond our control. If we modify or terminate our services,
- we will try to give you the opportunity to recover your funds. However,
- given the experimental state of the Services today, this may not be
- possible. You are strongly advised to limit your use of the Service
- to small-scale experiments expecting total loss of all funds.
+-----------
+
+* You are responsible for keeping the data in your Taler Wallet at all times under your control. Any losses arising from you not being in control of your private information are your problem.
+
+* We will try to transfer funds we hold in escrow for our users to any legal recipient to the best of our ability within the limitations of the law and our implementation. However, the Services offered today are highly experimental and the set of recipients of funds is severely restricted.
+
+* For our Services, we may charge transaction fees. The specific fee structure is provided based on the Taler protocol and should be shown to you when you withdraw electronic coins using a Taler Wallet. You agree and understand that the Taler protocol allows for the fee structure to change.
+
+* You agree to not intentionally overwhelm our systems with requests and follow responsible disclosure if you find security issues in our services.
+
+* We cannot be held accountable for our Services not being available due to circumstances beyond our control. If we modify or terminate our services, we will try to give you the opportunity to recover your funds. However, given the experimental state of the Services today, this may not be possible. You are strongly advised to limit your use of the Service to small-scale experiments expecting total loss of all funds.
These terms outline approved uses of our Services. The Services and these
Terms are still at an experimental stage. If you have any questions or
@@ -69,12 +60,12 @@ Services
We will try to transfer funds that we hold in escrow for our users to any
legal recipient to the best of our ability and within the limitations of the
law and our implementation. However, the Services offered today are highly
-experimental and the set of recipients of funds is severely restricted. The
+experimental and the set of recipients of funds is severely restricted. The
Taler Wallet can be loaded by exchanging fiat currencies against electronic
coins. We are providing this exchange service. Once your Taler Wallet is
loaded with electronic coins they can be spent for purchases if the seller is
accepting Taler as a means of payment. We are not guaranteeing that any seller
-is accepting Taler at all or a particular seller. The seller or recipient of
+is accepting Taler at all or a particular seller. The seller or recipient of
deposits of electronic coins must specify the target account, as per the
design of the Taler protocol. They are responsible for following the protocol
and specifying the correct bank account, and are solely liable for any losses
@@ -96,7 +87,6 @@ months, and that we will not prosecute anyone reporting security issues if
they did not exploit the issue beyond a proof-of-concept, and followed the
above responsible disclosure practice.
-
Fees
----
@@ -107,7 +97,7 @@ for any electronic coin at the time of withdrawal and fixed throughout the
validity period of the respective electronic coin. Your wallet should obtain
and display applicable fees when withdrawing funds. Fees for coins obtained as
change may differ from the fees applicable to the original coin. Wire transfer
-fees that are independent from electronic coins may change annually. You
+fees that are independent from electronic coins may change annually. You
authorize us to charge or deduct applicable fees owed in connection with
deposits, exchanges and withdrawals following the rules of the Taler protocol.
We reserve the right to provide different types of rewards to users either in
@@ -137,13 +127,12 @@ The Taler Wallet is released under the terms of the GNU General Public License
modified or unmodified form. However, the GPL is a strong copyleft license,
which means that any derivative works must be distributed under the same
license terms as the original software. If you have any questions, you should
-review the GNU GPL’s full terms and conditions at
-https://www.gnu.org/licenses/gpl-3.0.en.html. “Taler” itself is a trademark
+review the GNU GPL’s full terms and conditions on the GNU GPL Licenses page
+(https://www.gnu.org/licenses/gpl-3.0.en.html/). “Taler” itself is a trademark
of Taler Systems SA. You are welcome to use the name in relation to processing
-payments using the Taler protocol, assuming your use is compatible with an
+payments based on the Taler protocol, assuming your use is compatible with an
official release from the GNU Project that is not older than two years.
-
Limitation of liability & disclaimer of warranties
--------------------------------------------------
@@ -154,22 +143,20 @@ software, and Internet connections; The risk of malicious software being
introduced or found in the software underlying the Taler Wallet; The risk that
third parties may obtain unauthorized access to information stored within your
Taler Wallet, including, but not limited to your Taler Wallet coins or backup
-encryption keys. You release us from all liability related to any losses,
+encryption keys. You release us from all liability related to any losses,
damages, or claims arising from:
-(a) user error such as forgotten passwords, incorrectly constructed
- transactions;
-(b) server failure or data loss;
-(c) unauthorized access to the Taler Wallet application;
-(d) bugs or other errors in the Taler Wallet software; and
-(e) any unauthorized third party activities, including, but not limited to,
- the use of viruses, phishing, brute forcing, or other means of attack
- against the Taler Wallet. We make no representations concerning any
- Third Party Content contained in or accessed through our Services.
+1) user error such as forgotten passwords, incorrectly constructed transactions;
+2) server failure or data loss;
+3) unauthorized access to the Taler Wallet application;
+4) bugs or other errors in the Taler Wallet software; and
+5) any unauthorized third party activities, including, but not limited to,
+the use of viruses, phishing, brute forcing, or other means of attack
+against the Taler Wallet. We make no representations concerning any
+Third Party Content contained in or accessed through our Services.
Any other terms, conditions, warranties, or representations associated with
-such content, are solely between you and such organizations and/or
-individuals.
+such content, are solely between you and such organizations and/or individuals.
To the fullest extent permitted by applicable law, in no event will we or any
of our officers, directors, representatives, agents, servants, counsel,
@@ -178,19 +165,16 @@ acting, or purporting to act on our behalf (collectively the “Taler Parties”
be liable to you under contract, tort, strict liability, negligence, or any
other legal or equitable theory, for:
-(a) any lost profits, data loss, cost of procurement of substitute goods or
- services, or direct, indirect, incidental, special, punitive, compensatory,
- or consequential damages of any kind whatsoever resulting from:
+1) any lost profits, data loss, cost of procurement of substitute goods or services,
+or direct, indirect, incidental, special, punitive, compensatory,
+or consequential damages of any kind whatsoever resulting from:
- (i) your use of, or conduct in connection with, our services;
- (ii) any unauthorized use of your wallet and/or private key due to your
- failure to maintain the confidentiality of your wallet;
- (iii) any interruption or cessation of transmission to or from the services; or
- (iv) any bugs, viruses, trojan horses, or the like that are found in the Taler
- Wallet software or that may be transmitted to or through our services by
- any third party (regardless of the source of origination), or
+* your use of, or conduct in connection with, our services;
+* any unauthorized use of your wallet and/or private key due to your failure to maintain the confidentiality of your wallet;
+* any interruption or cessation of transmission to or from the services; or
+* any bugs, viruses, trojan horses, or the like that are found in the Taler Wallet software or that may be transmitted to or through our services by any third party (regardless of the source of origination), or
-(b) any direct damages.
+2) any direct damages.
These limitations apply regardless of legal theory, whether based on tort,
strict liability, breach of contract, breach of warranty, or any other legal
@@ -221,10 +205,11 @@ Indemnity and Time limitation on claims and Termination
To the extent permitted by applicable law, you agree to defend, indemnify, and
hold harmless the Taler Parties from and against any and all claims, damages,
obligations, losses, liabilities, costs or debt, and expenses (including, but
-not limited to, attorney’s fees) arising from: (a) your use of and access to
-the Services; (b) any feedback or submissions you provide to us concerning the
-Taler Wallet; (c) your violation of any term of this Agreement; or (d) your
-violation of any law, rule, or regulation, or the rights of any third party.
+not limited to, attorney’s fees) arising from:
+(a) your use of and access to the Services;
+(b) any feedback or submissions you provide to us concerning the Taler Wallet;
+(c) your violation of any term of this Agreement; or
+(d) your violation of any law, rule, or regulation, or the rights of any third party.
You agree that any claim you may have arising out of or related to your
relationship with us must be filed within one year after such claim arises,
@@ -257,7 +242,6 @@ services, failure of equipment and/or software, other catastrophe, or any
other occurrence which is beyond our reasonable control and shall not affect
the validity and enforceability of any remaining provisions.
-
Governing law, Waivers, Severability and Assignment
---------------------------------------------------
@@ -288,7 +272,6 @@ prior versions of this Agreement) and every nature between us. Except as
provided for above, any modification to this Agreement must be in writing and
must be signed by both parties.
-
Questions or comments
---------------------
diff --git a/contrib/gana b/contrib/gana
-Subproject 3a616a04f1cd946bf0641b54cd71f1b858174f7
+Subproject 61556908520df557832b04bb5e1ee91c708aeef
diff --git a/contrib/gana-update.sh b/contrib/gana-generate.sh
index 4679e2003..4679e2003 100755
--- a/contrib/gana-update.sh
+++ b/contrib/gana-generate.sh
diff --git a/contrib/gana.sh b/contrib/gana-latest.sh
index 30dc7994e..e92761acc 100755
--- a/contrib/gana.sh
+++ b/contrib/gana-latest.sh
@@ -7,4 +7,4 @@ cd contrib/gana
git pull origin master
cd ../..
-exec ./contrib/gana-update.sh
+exec ./contrib/gana-generate.sh
diff --git a/contrib/gnunet.tag b/contrib/gnunet.tag
index f270ba5ea..4cfdbff9c 100644
--- a/contrib/gnunet.tag
+++ b/contrib/gnunet.tag
@@ -18,6 +18,18 @@
</member>
<member kind="define">
<type>#define</type>
+ <name>GNUNET_CRYPTO_BSA_RSA</name>
+ <anchorfile>gnunet_crypto_lib.h</anchorfile>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>GNUNET_CRYPTO_BSA_CS</name>
+ <anchorfile>gnunet_crypto_lib.h</anchorfile>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
<name>GNUNET_NO</name>
<anchorfile>gnunet_util_lib.h</anchorfile>
<arglist></arglist>
@@ -31,7 +43,13 @@
<member kind="define">
<type>#define</type>
<name>GNUNET_TIME_UNIT_FOREVER_ABS</name>
- <anchorfile>gnunet_util_lib.h</anchorfile>
+ <anchorfile>gnunet_time_lib.h</anchorfile>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
+ <name>GNUNET_TIME_UNIT_ZERO_ABS</name>
+ <anchorfile>gnunet_time_lib.h</anchorfile>
<arglist></arglist>
</member>
</compound>
diff --git a/contrib/kyc-proof-already-done.en.must b/contrib/kyc-proof-already-done.en.must
new file mode 100644
index 000000000..c676aa931
--- /dev/null
+++ b/contrib/kyc-proof-already-done.en.must
@@ -0,0 +1,9 @@
+<html>
+<head>
+<title>200: KYC already completed</title>
+</head>
+<body>
+ The KYC process is already completed.
+ There is nothing left to do here.
+</body>
+</html>
diff --git a/contrib/kyc-proof-bad-request.en.must b/contrib/kyc-proof-bad-request.en.must
new file mode 100644
index 000000000..f55516873
--- /dev/null
+++ b/contrib/kyc-proof-bad-request.en.must
@@ -0,0 +1,15 @@
+<html>
+<head>
+<title>400: Malformed client request</title>
+</head>
+<body>
+The client's request was malformed.
+<pre>
+<!-- Taler error code --> {{ code }}:
+<!-- GANA EC hint --> {{ hint }}
+</pre>
+<p>
+<!-- optional human-readable message --> {{ message }}
+</p>
+</body>
+</html>
diff --git a/contrib/kyc-proof-endpoint-unknown.en.must b/contrib/kyc-proof-endpoint-unknown.en.must
new file mode 100644
index 000000000..275f42380
--- /dev/null
+++ b/contrib/kyc-proof-endpoint-unknown.en.must
@@ -0,0 +1,15 @@
+<html>
+<head>
+<title>404: Endpoint unknown</title>
+</head>
+<body>
+The given URL does not match any supported endpoint.
+<pre>
+<!-- Taler error code --> {{ code }}:
+<!-- GANA EC hint --> {{ hint }}
+</pre>
+<p>
+<!-- optional human-readable message --> {{ message }}
+</p>
+</body>
+</html>
diff --git a/contrib/kyc-proof-internal-error.en.must b/contrib/kyc-proof-internal-error.en.must
new file mode 100644
index 000000000..ab7845e0d
--- /dev/null
+++ b/contrib/kyc-proof-internal-error.en.must
@@ -0,0 +1,16 @@
+<html>
+<head>
+<title>500: Internal server error</title>
+</head>
+<body>
+ The server experienced an internal error handling
+ the request.
+<pre>
+<!-- Taler error code --> {{ code }}:
+<!-- GANA EC hint --> {{ hint }}
+</pre>
+<p>
+<!-- optional human-readable message --> {{ message }}
+</p>
+</body>
+</html>
diff --git a/contrib/kyc-proof-target-unknown.en.must b/contrib/kyc-proof-target-unknown.en.must
new file mode 100644
index 000000000..1a698506f
--- /dev/null
+++ b/contrib/kyc-proof-target-unknown.en.must
@@ -0,0 +1,15 @@
+<html>
+<head>
+<title>404: KYC request target unknown</title>
+</head>
+<body>
+We could not identify the KYC operation requested.
+<pre>
+<!-- Taler error code --> {{ code }}:
+<!-- GANA EC hint --> {{ hint }}
+</pre>
+<p>
+<!-- optional human-readable message --> {{ message }}
+</p>
+</body>
+</html>
diff --git a/contrib/kycaid-invalid-request.en.must b/contrib/kycaid-invalid-request.en.must
new file mode 100644
index 000000000..c33e3883f
--- /dev/null
+++ b/contrib/kycaid-invalid-request.en.must
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>400: Invalid endpoint for KYCaid</title>
+</head>
+<body>
+This endpoint is not defined for the KYCaid plugin.
+<pre>
+<!-- Taler error code --> {{ code }}:
+<!-- GANA string for EC --> {{ hint }}
+</pre>
+</body>
+</html>
diff --git a/contrib/locale/de/LC_MESSAGES/exchange-tos-v0.po b/contrib/locale/de/LC_MESSAGES/exchange-tos-v0.po
new file mode 100644
index 000000000..6cd899442
--- /dev/null
+++ b/contrib/locale/de/LC_MESSAGES/exchange-tos-v0.po
@@ -0,0 +1,403 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2014-2023 Taler Systems SA (GPLv3+ or GFDL 1.3+)
+# This file is distributed under the same license as the tos-v0 package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: tos-v0 tos-v0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-07-20 15:38+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Terms of Service"
+msgstr "Allgemeine Geschäftsbedingungen"
+
+msgid "Last Updated: 27.11.2023"
+msgstr ""
+
+msgid ""
+"Welcome! Taler Systems SA (“we,” “our,” or “us”) provides a payment service "
+"through our Internet presence (collectively the “Services”). Before using "
+"our Services, please read the Terms of Service (the “Terms” or the "
+"“Agreement”) carefully."
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid ""
+"This section provides a brief summary of the highlights of this Agreement. "
+"Please note that when you accept this Agreement, you are accepting all of "
+"the terms and conditions and not just this section. We and possibly other "
+"third parties provide Internet services which interact with the Taler "
+"Wallet’s self-hosted personal payment application. When using the Taler "
+"Wallet to interact with our Services, you are agreeing to our Terms, so "
+"please read carefully."
+msgstr ""
+
+msgid "Highlights:"
+msgstr ""
+
+msgid ""
+"You are responsible for keeping the data in your Taler Wallet at all times "
+"under your control. Any losses arising from you not being in control of your "
+"private information are your problem."
+msgstr ""
+
+msgid ""
+"We will try to transfer funds we hold in escrow for our users to any legal "
+"recipient to the best of our ability within the limitations of the law and "
+"our implementation. However, the Services offered today are highly "
+"experimental and the set of recipients of funds is severely restricted."
+msgstr ""
+
+msgid ""
+"For our Services, we may charge transaction fees. The specific fee structure "
+"is provided based on the Taler protocol and should be shown to you when you "
+"withdraw electronic coins using a Taler Wallet. You agree and understand "
+"that the Taler protocol allows for the fee structure to change."
+msgstr ""
+
+msgid ""
+"You agree to not intentionally overwhelm our systems with requests and "
+"follow responsible disclosure if you find security issues in our services."
+msgstr ""
+
+msgid ""
+"We cannot be held accountable for our Services not being available due to "
+"circumstances beyond our control. If we modify or terminate our services, we "
+"will try to give you the opportunity to recover your funds. However, given "
+"the experimental state of the Services today, this may not be possible. You "
+"are strongly advised to limit your use of the Service to small-scale "
+"experiments expecting total loss of all funds."
+msgstr ""
+
+msgid ""
+"These terms outline approved uses of our Services. The Services and these "
+"Terms are still at an experimental stage. If you have any questions or "
+"comments related to this Agreement, please send us a message to legal@taler-"
+"systems.com. If you do not agree to this Agreement, you must not use our "
+"Services."
+msgstr ""
+
+msgid "How you accept this policy"
+msgstr ""
+
+msgid ""
+"By sending funds to us (to top-up your Taler Wallet), you acknowledge that "
+"you have read, understood, and agreed to these Terms. We reserve the right "
+"to change these Terms at any time. If you disagree with the change, we may "
+"in the future offer you with an easy option to recover your unspent funds. "
+"However, in the current experimental period you acknowledge that this "
+"feature is not yet available, resulting in your funds being lost unless you "
+"accept the new Terms. If you continue to use our Services other than to "
+"recover your unspent funds, your continued use of our Services following any "
+"such change will signify your acceptance to be bound by the then current "
+"Terms. Please check the effective date above to determine if there have been "
+"any changes since you have last reviewed these Terms."
+msgstr ""
+
+msgid "Services"
+msgstr ""
+
+msgid ""
+"We will try to transfer funds that we hold in escrow for our users to any "
+"legal recipient to the best of our ability and within the limitations of the "
+"law and our implementation. However, the Services offered today are highly "
+"experimental and the set of recipients of funds is severely restricted. The "
+"Taler Wallet can be loaded by exchanging fiat currencies against electronic "
+"coins. We are providing this exchange service. Once your Taler Wallet is "
+"loaded with electronic coins they can be spent for purchases if the seller "
+"is accepting Taler as a means of payment. We are not guaranteeing that any "
+"seller is accepting Taler at all or a particular seller. The seller or "
+"recipient of deposits of electronic coins must specify the target account, "
+"as per the design of the Taler protocol. They are responsible for following "
+"the protocol and specifying the correct bank account, and are solely liable "
+"for any losses that may arise from specifying the wrong account. We will "
+"allow the government to link wire transfers to the underlying contract hash. "
+"It is the responsibility of recipients to preserve the full contracts and to "
+"pay whatever taxes and charges may be applicable. Technical issues may lead "
+"to situations where we are unable to make transfers at all or lead to "
+"incorrect transfers that cannot be reversed. We will only refuse to execute "
+"transfers if the transfers are prohibited by a competent legal authority and "
+"we are ordered to do so."
+msgstr ""
+
+msgid ""
+"When using our Services, you agree to not take any action that intentionally "
+"imposes an unreasonable load on our infrastructure. If you find security "
+"problems in our Services, you agree to first report them to security@taler-"
+"systems.com and grant us the right to publish your report. We warrant that "
+"we will ourselves publicly disclose any issues reported within 3 months, and "
+"that we will not prosecute anyone reporting security issues if they did not "
+"exploit the issue beyond a proof-of-concept, and followed the above "
+"responsible disclosure practice."
+msgstr ""
+
+msgid "Fees"
+msgstr ""
+
+msgid ""
+"You agree to pay the fees for exchanges and withdrawals completed via the "
+"Taler Wallet (\"Fees\") as defined by us, which we may change from time to "
+"time. With the exception of wire transfer fees, Taler transaction fees are "
+"set for any electronic coin at the time of withdrawal and fixed throughout "
+"the validity period of the respective electronic coin. Your wallet should "
+"obtain and display applicable fees when withdrawing funds. Fees for coins "
+"obtained as change may differ from the fees applicable to the original coin. "
+"Wire transfer fees that are independent from electronic coins may change "
+"annually. You authorize us to charge or deduct applicable fees owed in "
+"connection with deposits, exchanges and withdrawals following the rules of "
+"the Taler protocol. We reserve the right to provide different types of "
+"rewards to users either in the form of discount for our Services or in any "
+"other form at our discretion and without prior notice to you."
+msgstr ""
+
+msgid "Eligibility and Financial self-responsibility"
+msgstr ""
+
+msgid ""
+"To be eligible to use our Services, you must be able to form legally binding "
+"contracts or have the permission of your legal guardian. By using our "
+"Services, you represent and warrant that you meet all eligibility "
+"requirements that we outline in these Terms."
+msgstr ""
+
+msgid ""
+"You will be responsible for maintaining the availability, integrity and "
+"confidentiality of the data stored in your wallet. When you setup a Taler "
+"Wallet, you are strongly advised to follow the precautionary measures "
+"offered by the software to minimize the chances to losse access to or "
+"control over your Wallet data. We will not be liable for any loss or damage "
+"arising from your failure to comply with this paragraph."
+msgstr ""
+
+msgid "Copyrights and trademarks"
+msgstr ""
+
+msgid ""
+"The Taler Wallet is released under the terms of the GNU General Public "
+"License (GNU GPL). You have the right to access, use, and share the Taler "
+"Wallet, in modified or unmodified form. However, the GPL is a strong "
+"copyleft license, which means that any derivative works must be distributed "
+"under the same license terms as the original software. If you have any "
+"questions, you should review the GNU GPL’s full terms and conditions at "
+"https://www.gnu.org/licenses/gpl-3.0.en.html. “Taler” itself is a trademark "
+"of Taler Systems SA. You are welcome to use the name in relation to "
+"processing payments using the Taler protocol, assuming your use is "
+"compatible with an official release from the GNU Project that is not older "
+"than two years."
+msgstr ""
+
+msgid "Limitation of liability & disclaimer of warranties"
+msgstr ""
+
+msgid ""
+"You understand and agree that we have no control over, and no duty to take "
+"any action regarding: Failures, disruptions, errors, or delays in processing "
+"that you may experience while using our Services; The risk of failure of "
+"hardware, software, and Internet connections; The risk of malicious software "
+"being introduced or found in the software underlying the Taler Wallet; The "
+"risk that third parties may obtain unauthorized access to information stored "
+"within your Taler Wallet, including, but not limited to your Taler Wallet "
+"coins or backup encryption keys. You release us from all liability related "
+"to any losses, damages, or claims arising from:"
+msgstr ""
+
+msgid ""
+"user error such as forgotten passwords, incorrectly constructed transactions;"
+msgstr ""
+
+msgid "server failure or data loss;"
+msgstr ""
+
+msgid "unauthorized access to the Taler Wallet application;"
+msgstr ""
+
+msgid "bugs or other errors in the Taler Wallet software; and"
+msgstr ""
+
+msgid ""
+"any unauthorized third party activities, including, but not limited to, the "
+"use of viruses, phishing, brute forcing, or other means of attack against "
+"the Taler Wallet. We make no representations concerning any Third Party "
+"Content contained in or accessed through our Services."
+msgstr ""
+
+msgid ""
+"Any other terms, conditions, warranties, or representations associated with "
+"such content, are solely between you and such organizations and/or "
+"individuals."
+msgstr ""
+
+msgid ""
+"To the fullest extent permitted by applicable law, in no event will we or "
+"any of our officers, directors, representatives, agents, servants, counsel, "
+"employees, consultants, lawyers, and other personnel authorized to act, "
+"acting, or purporting to act on our behalf (collectively the “Taler "
+"Parties”) be liable to you under contract, tort, strict liability, "
+"negligence, or any other legal or equitable theory, for:"
+msgstr ""
+
+msgid ""
+"any lost profits, data loss, cost of procurement of substitute goods or "
+"services, or direct, indirect, incidental, special, punitive, compensatory, "
+"or consequential damages of any kind whatsoever resulting from:"
+msgstr ""
+
+msgid "your use of, or conduct in connection with, our services;"
+msgstr ""
+
+msgid ""
+"any unauthorized use of your wallet and/or private key due to your failure "
+"to maintain the confidentiality of your wallet;"
+msgstr ""
+
+msgid ""
+"any interruption or cessation of transmission to or from the services; or"
+msgstr ""
+
+msgid ""
+"any bugs, viruses, trojan horses, or the like that are found in the Taler "
+"Wallet software or that may be transmitted to or through our services by any "
+"third party (regardless of the source of origination), or"
+msgstr ""
+
+msgid "any direct damages."
+msgstr ""
+
+msgid ""
+"These limitations apply regardless of legal theory, whether based on tort, "
+"strict liability, breach of contract, breach of warranty, or any other legal "
+"theory, and whether or not we were advised of the possibility of such "
+"damages. Some jurisdictions do not allow the exclusion or limitation of "
+"liability for consequential or incidental damages, so the above limitation "
+"may not apply to you."
+msgstr ""
+
+msgid ""
+"Our services are provided \"as is\" and without warranty of any kind. To the "
+"maximum extent permitted by law, we disclaim all representations and "
+"warranties, express or implied, relating to the services and underlying "
+"software or any content on the services, whether provided or owned by us or "
+"by any third party, including without limitation, warranties of "
+"merchantability, fitness for a particular purpose, title, non-infringement, "
+"freedom from computer virus, and any implied warranties arising from course "
+"of dealing, course of performance, or usage in trade, all of which are "
+"expressly disclaimed. In addition, we do not represent or warrant that the "
+"content accessible via the services is accurate, complete, available, "
+"current, free of viruses or other harmful components, or that the results of "
+"using the services will meet your requirements. Some states do not allow the "
+"disclaimer of implied warranties, so the foregoing disclaimers may not apply "
+"to you. This paragraph gives you specific legal rights and you may also have "
+"other legal rights that vary from state to state."
+msgstr ""
+
+msgid "Indemnity and Time limitation on claims and Termination"
+msgstr ""
+
+msgid ""
+"To the extent permitted by applicable law, you agree to defend, indemnify, "
+"and hold harmless the Taler Parties from and against any and all claims, "
+"damages, obligations, losses, liabilities, costs or debt, and expenses "
+"(including, but not limited to, attorney’s fees) arising from: (a) your use "
+"of and access to the Services; (b) any feedback or submissions you provide "
+"to us concerning the Taler Wallet; (c) your violation of any term of this "
+"Agreement; or (d) your violation of any law, rule, or regulation, or the "
+"rights of any third party."
+msgstr ""
+
+msgid ""
+"You agree that any claim you may have arising out of or related to your "
+"relationship with us must be filed within one year after such claim arises, "
+"otherwise, your claim in permanently barred."
+msgstr ""
+
+msgid ""
+"In the event of termination concerning your use of our Services, your "
+"obligations under this Agreement will still continue."
+msgstr ""
+
+msgid "Discontinuance of services and Force majeure"
+msgstr ""
+
+msgid ""
+"We may, in our sole discretion and without cost to you, with or without "
+"prior notice, and at any time, modify or discontinue, temporarily or "
+"permanently, any portion of our Services. We will use the Taler protocol’s "
+"provisions to notify Wallets if our Services are to be discontinued. It is "
+"your responsibility to ensure that the Taler Wallet is online at least once "
+"every three months to observe these notifications. We shall not be held "
+"responsible or liable for any loss of funds in the event that we discontinue "
+"or depreciate the Services and your Taler Wallet fails to transfer out the "
+"coins within a three months notification period."
+msgstr ""
+
+msgid ""
+"We shall not be held liable for any delays, failure in performance, or "
+"interruptions of service which result directly or indirectly from any cause "
+"or condition beyond our reasonable control, including but not limited to: "
+"any delay or failure due to any act of God, act of civil or military "
+"authorities, act of terrorism, civil disturbance, war, strike or other labor "
+"dispute, fire, interruption in telecommunications or Internet services or "
+"network provider services, failure of equipment and/or software, other "
+"catastrophe, or any other occurrence which is beyond our reasonable control "
+"and shall not affect the validity and enforceability of any remaining "
+"provisions."
+msgstr ""
+
+msgid "Governing law, Waivers, Severability and Assignment"
+msgstr ""
+
+msgid ""
+"No matter where you’re located, the laws of Switzerland will govern these "
+"Terms. If any provisions of these Terms are inconsistent with any applicable "
+"law, those provisions will be superseded or modified only to the extent such "
+"provisions are inconsistent. The parties agree to submit to the ordinary "
+"courts in Zurich, Switzerland for exclusive jurisdiction of any dispute "
+"arising out of or related to your use of the Services or your breach of "
+"these Terms."
+msgstr ""
+
+msgid ""
+"Our failure to exercise or delay in exercising any right, power, or "
+"privilege under this Agreement shall not operate as a waiver; nor shall any "
+"single or partial exercise of any right, power, or privilege preclude any "
+"other or further exercise thereof."
+msgstr ""
+
+msgid ""
+"You agree that we may assign any of our rights and/or transfer, sub-"
+"contract, or delegate any of our obligations under these Terms."
+msgstr ""
+
+msgid ""
+"If it turns out that any part of this Agreement is invalid, void, or for any "
+"reason unenforceable, that term will be deemed severable and limited or "
+"eliminated to the minimum extent necessary."
+msgstr ""
+
+msgid ""
+"This Agreement sets forth the entire understanding and agreement as to the "
+"subject matter hereof and supersedes any and all prior discussions, "
+"agreements, and understandings of any kind (including, without limitation, "
+"any prior versions of this Agreement) and every nature between us. Except as "
+"provided for above, any modification to this Agreement must be in writing "
+"and must be signed by both parties."
+msgstr ""
+
+msgid "Questions or comments"
+msgstr ""
+
+msgid ""
+"We welcome comments, questions, concerns, or suggestions. Please send us a "
+"message on our contact page at legal@taler-systems.com."
+msgstr ""
diff --git a/contrib/microhttpd.tag b/contrib/microhttpd.tag
index d80405036..5156a1a3a 100644
--- a/contrib/microhttpd.tag
+++ b/contrib/microhttpd.tag
@@ -48,6 +48,12 @@
</member>
<member kind="define">
<type>#define</type>
+ <name>MHD_HTTP_CONTENT_TOO_LARGE</name>
+ <anchorfile>microhttpd.h</anchorfile>
+ <arglist></arglist>
+ </member>
+ <member kind="define">
+ <type>#define</type>
<name>MHD_HTTP_REQUEST_TIMEOUT</name>
<anchorfile>microhttpd.h</anchorfile>
<arglist></arglist>
diff --git a/contrib/oauth2-authentication-failure.en.must b/contrib/oauth2-authentication-failure.en.must
new file mode 100644
index 000000000..537423269
--- /dev/null
+++ b/contrib/oauth2-authentication-failure.en.must
@@ -0,0 +1,16 @@
+<html>
+<head>
+<title>403: Authentication by KYC server failed</title>
+</head>
+<body>
+ You failed the authentication check.
+ The transaction remains blocked.
+ Please obtain proper credentials and try again to proceed.
+<pre>
+<!-- as provided by OAuth2.0 server --> {{ error }}:
+<!-- optional, as provided by OAuth2.0 server --> {{ error_description }}
+
+<!-- optional link (render as link if present!), as provided by OAuth2.0 server --> {{ error_uri }}
+</pre>
+</body>
+</html>
diff --git a/contrib/oauth2-authorization-failure-malformed.en.must b/contrib/oauth2-authorization-failure-malformed.en.must
new file mode 100644
index 000000000..6f7552eae
--- /dev/null
+++ b/contrib/oauth2-authorization-failure-malformed.en.must
@@ -0,0 +1,13 @@
+<html>
+<head>
+<title>502: OAuth 2.0 service returned malformed response</title>
+</head>
+<body>
+ The KYC backend returned an authorization failure,
+ but additionally provided a malformed error response.
+ <pre>
+<!-- Should we output potentially sensitive data? --> {{ debug }}
+<!-- Optional: server response --> {{ server_response }}
+</pre>
+</body>
+</html>
diff --git a/contrib/oauth2-authorization-failure.en.must b/contrib/oauth2-authorization-failure.en.must
new file mode 100644
index 000000000..c184d10d8
--- /dev/null
+++ b/contrib/oauth2-authorization-failure.en.must
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>403: KYC server refused access</title>
+</head>
+<body>
+The KYC backend refused the authorization code used by the exchange operator. Please inform the exchange operator about this failure.
+<pre>
+<!-- as provided by OAuth2.0 server --> {{ error }}:
+<!-- as provided by OAuth2.0 server --> {{ error_description }}
+</pre>
+</body>
+</html>
diff --git a/contrib/oauth2-bad-request.en.must b/contrib/oauth2-bad-request.en.must
new file mode 100644
index 000000000..f55516873
--- /dev/null
+++ b/contrib/oauth2-bad-request.en.must
@@ -0,0 +1,15 @@
+<html>
+<head>
+<title>400: Malformed client request</title>
+</head>
+<body>
+The client's request was malformed.
+<pre>
+<!-- Taler error code --> {{ code }}:
+<!-- GANA EC hint --> {{ hint }}
+</pre>
+<p>
+<!-- optional human-readable message --> {{ message }}
+</p>
+</body>
+</html>
diff --git a/contrib/oauth2-conversion-failure.en.must b/contrib/oauth2-conversion-failure.en.must
new file mode 100644
index 000000000..e117f5de6
--- /dev/null
+++ b/contrib/oauth2-conversion-failure.en.must
@@ -0,0 +1,28 @@
+<html>
+<head>
+<title>502: Failed to convert KYC data into internal format</title>
+</head>
+<body>
+ The KYC backend returned a response which we then failed
+ to convert into our internal format.
+<pre>
+<!-- Taler Error code --> {{ code }}:
+<!-- Taler EC hint --> {{ hint }}
+</pre>
+<p>
+ <!-- human-readable message --> {{ message}}
+</p>
+<p>
+ Converter command used was: &quot;{{ converter }}&quot;
+</p>
+<p>
+ Converter JSON output:
+<pre>
+ <!-- true if we are in debug mode --> {{ debug }}
+ <!-- optional: attributes returned by script
+ (note: may contain user's private information) --> {{ attributes }}
+</pre>
+</p>
+</pre>
+</body>
+</html>
diff --git a/contrib/oauth2-provider-failure.en.must b/contrib/oauth2-provider-failure.en.must
new file mode 100644
index 000000000..d4c3585bf
--- /dev/null
+++ b/contrib/oauth2-provider-failure.en.must
@@ -0,0 +1,22 @@
+<html>
+<head>
+<title>502: KYC provider had an internal error</title>
+</head>
+<body>
+The KYC OAuth2 backend had an internal error.
+<pre>
+<!-- taler error code --> {{ code }}:
+<!-- GANA hint for EC --> {{ hint }}
+</pre>
+<p>
+ <!-- human readable message with more specifics -->
+ {{ message }}
+</p>
+<pre>
+ <!-- true if we are in debug mode --> {{ debug }}
+ <!-- optional: full response from OAuth provider;
+ may contain private information! -->
+ {{ server_response }}
+</p>
+</body>
+</html>
diff --git a/contrib/packages/fedora/etc-libtalerexchange/taler/overrides.conf b/contrib/packages/fedora/etc-libtalerexchange/taler/overrides.conf
new file mode 100644
index 000000000..60296ead4
--- /dev/null
+++ b/contrib/packages/fedora/etc-libtalerexchange/taler/overrides.conf
@@ -0,0 +1 @@
+# This configuration will be changed by tooling. Do not touch it manually.
diff --git a/contrib/packages/fedora/etc-libtalerexchange/taler/taler.conf b/contrib/packages/fedora/etc-libtalerexchange/taler/taler.conf
new file mode 100644
index 000000000..1c86ccc36
--- /dev/null
+++ b/contrib/packages/fedora/etc-libtalerexchange/taler/taler.conf
@@ -0,0 +1,49 @@
+# Main entry point for the GNU Taler configuration.
+#
+# Structure:
+# - taler.conf is the main configuration entry point
+# used by all Taler components (the file you are currently
+# looking at.
+# - overrides.conf contains configuration overrides that are
+# set by some tools that help with the configuration,
+# and should not be edited by humans. Comments in this file
+# are not preserved.
+# - conf.d/ contains configuration files for
+# Taler components, which can be read by all
+# users of the system and are included by the main
+# configuration.
+# - secrets/ contains configuration snippets
+# with secrets for particular services.
+# These files should have restrictive permissions
+# so that only users of the relevant services
+# can read it. All files in it should end with
+# ".secret.conf".
+
+[taler]
+
+# Currency of the Taler deployment. This setting applies to all Taler
+# components that only support a single currency.
+#currency = KUDOS
+
+# Smallest currency unit handled by the underlying bank system. Taler payments
+# can make payments smaller than this units, but interactions with external
+# systems is always rounded to this unit.
+#currency_round_unit = KUDOS:0.01
+
+# Monthly amount that mandatorily triggers an AML check
+#AML_THRESHOLD = KUDOS:10000000
+
+[paths]
+
+TALER_HOME = /var/lib/taler
+TALER_RUNTIME_DIR = /run/taler
+TALER_CACHE_HOME = /var/cache/taler
+TALER_CONFIG_HOME = /etc/taler
+TALER_DATA_HOME = /var/lib/taler
+
+
+# Inline configurations from all Taler components.
+@inline-matching@ conf.d/*.conf
+
+# Overrides from tools that help with configuration.
+@inline@ overrides.conf
diff --git a/contrib/packages/fedora/etc-taler-auditor/apache2/sites-available/taler-auditor.conf b/contrib/packages/fedora/etc-taler-auditor/apache2/sites-available/taler-auditor.conf
new file mode 100644
index 000000000..f68c59558
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-auditor/apache2/sites-available/taler-auditor.conf
@@ -0,0 +1,4 @@
+<Location "/taler-auditor/">
+ProxyPass "unix:/var/lib/taler-auditor/auditor.sock|http://example.com/"
+RequestHeader add "X-Forwarded-Proto" "https"
+</Location>
diff --git a/contrib/packages/fedora/etc-taler-auditor/nginx/sites-available/taler-auditor b/contrib/packages/fedora/etc-taler-auditor/nginx/sites-available/taler-auditor
new file mode 100644
index 000000000..f74035d53
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-auditor/nginx/sites-available/taler-auditor
@@ -0,0 +1,18 @@
+server {
+
+ listen 80;
+ listen [::]:80;
+
+ server_name localhost;
+
+ access_log /var/log/nginx/auditor.log;
+ error_log /var/log/nginx/auditor.err;
+
+ location /taler-auditor/ {
+ proxy_pass http://unix:/var/lib/taler-auditor/auditor.sock;
+ proxy_redirect off;
+ proxy_set_header Host $host;
+ proxy_set_header X-Forwarded-Host "localhost";
+ #proxy_set_header X-Forwarded-Proto "https";
+ }
+} \ No newline at end of file
diff --git a/contrib/packages/fedora/etc-taler-auditor/taler/conf.d/auditor-system.conf b/contrib/packages/fedora/etc-taler-auditor/taler/conf.d/auditor-system.conf
new file mode 100644
index 000000000..3d3aef33a
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-auditor/taler/conf.d/auditor-system.conf
@@ -0,0 +1,12 @@
+# Read secret sections into configuration, but only
+# if we have permission to do so.
+@inline-secret@ auditordb-postgres ../secrets/auditor-db.secret.conf
+
+[auditor]
+# Debian package is configured to use a reverse proxy with a UNIX
+# domain socket. See nginx/apache configuration files.
+SERVE = UNIX
+UNIXPATH = /var/lib/taler-auditor/auditor.sock
+
+# Only supported database is Postgres right now.
+DATABASE = postgres
diff --git a/contrib/packages/fedora/etc-taler-auditor/taler/secrets/auditor-db.secret.conf b/contrib/packages/fedora/etc-taler-auditor/taler/secrets/auditor-db.secret.conf
new file mode 100644
index 000000000..b81bb817f
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-auditor/taler/secrets/auditor-db.secret.conf
@@ -0,0 +1,10 @@
+# Database configuration for the Taler auditor.
+
+[auditordb-postgres]
+
+# Typically, there should only be a single line here, of the form:
+
+CONFIG=postgres:///DATABASE
+
+# The details of the URI depend on where the database lives and how
+# access control was configured.
diff --git a/contrib/packages/fedora/etc-taler-exchange/apache2/sites-available/taler-exchange.conf b/contrib/packages/fedora/etc-taler-exchange/apache2/sites-available/taler-exchange.conf
new file mode 100644
index 000000000..3ec14feb2
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-exchange/apache2/sites-available/taler-exchange.conf
@@ -0,0 +1,4 @@
+<Location "/taler-exchange/">
+ProxyPass "unix:/run/taler/exchange-httpd/exchange-http.sock|http://example.com/"
+RequestHeader add "X-Forwarded-Proto" "https"
+</Location>
diff --git a/contrib/packages/fedora/etc-taler-exchange/nginx/sites-available/taler-exchange b/contrib/packages/fedora/etc-taler-exchange/nginx/sites-available/taler-exchange
new file mode 100644
index 000000000..9b61a32df
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-exchange/nginx/sites-available/taler-exchange
@@ -0,0 +1,17 @@
+server {
+ listen 80;
+ listen [::]:80;
+
+ server_name localhost;
+
+ access_log /var/log/nginx/exchange.log;
+ error_log /var/log/nginx/exchange.err;
+
+ location /taler-exchange/ {
+ proxy_pass http://unix:/run/taler/exchange-httpd/exchange-http.sock:/;
+ proxy_redirect off;
+ proxy_set_header Host $host;
+ proxy_set_header X-Forwarded-Host "localhost";
+ #proxy_set_header X-Forwarded-Proto "https";
+ }
+}
diff --git a/contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-business.conf b/contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-business.conf
new file mode 100644
index 000000000..d5938f2b1
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-business.conf
@@ -0,0 +1,50 @@
+# Configuration for business-level aspects of the exchange.
+
+[exchange]
+
+# Here you MUST add the master public key of the offline system
+# which you can get using `taler-exchange-offline setup`.
+# This is just an example, your key will be different!
+# MASTER_PUBLIC_KEY = YE6Q6TR1EDB7FD0S68TGDZGF1P0GHJD2S0XVV8R2S62MYJ6HJ4ZG
+# MASTER_PUBLIC_KEY =
+
+# Publicly visible base URL of the exchange.
+# BASE_URL = https://example.com/
+# BASE_URL =
+
+# Here you MUST configure the amount above which transactions are
+# always subject to manual AML review.
+# AML_THRESHOLD =
+
+# Attribute encryption key for storing attributes encrypted
+# in the database. Should be a high-entropy nonce.
+ATTRIBUTE_ENCRYPTION_KEY = SET_ME_PLEASE
+
+# For your terms of service and privacy policy, you should specify
+# an Etag that must be updated whenever there are significant
+# changes to either document. The format is up to you, what matters
+# is that the value is updated and never re-used. See the HTTP
+# specification on Etags.
+# TERMS_ETAG =
+# PRIVACY_ETAG =
+
+SERVE = unix
+UNIXPATH_MODE = 666
+
+# Bank accounts used by the exchange should be specified here:
+[exchange-account-1]
+
+ENABLE_CREDIT = NO
+ENABLE_DEBIT = NO
+
+# Account identifier in the form of an RFC-8905 payto:// URI.
+# For SEPA, looks like payto://sepa/$IBAN?receiver-name=$NAME
+# Make sure to URL-encode spaces in $NAME!
+PAYTO_URI =
+
+# Credentials to access the account are in a separate
+# config file with restricted permissions.
+@inline-secret@ exchange-accountcredentials-1 ../secrets/exchange-accountcredentials-1.secret.conf
+
+
+
diff --git a/contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-coins.conf b/contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-coins.conf
new file mode 100644
index 000000000..8294525cb
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-coins.conf
@@ -0,0 +1,33 @@
+#
+# This configuration file specifies the various denominations offered by your
+# exchange.
+#
+# Each denomination must be specified in a sections starting with
+# "coin_".
+#
+# What follows is an example.
+#
+
+# [coin_FOO]
+## Actual value of the coin
+#VALUE = KUDOS:1
+
+## How long will one key be used for withdrawals?
+#DURATION_WITHDRAW = 7 days
+
+## How long do users have to spend their coins?
+#DURATION_SPEND = 2 years
+
+## How long does the exchange keep the proofs around for legal disputes?
+#DURATION_LEGAL = 6 years
+
+## Fees charged. Note that for the lowest denomination, the
+## fee must precisely be the lowest denomination, or zero.
+#FEE_WITHDRAW = KUDOS:0
+#FEE_DEPOSIT = KUDOS:0
+#FEE_REFRESH = KUDOS:0
+#FEE_REFUND = KUDOS:0
+
+## How long should the RSA keys be. Do not change unless you really know
+## what you are doing (consult your local cryptographer first!).
+#RSA_KEYSIZE = 2048
diff --git a/contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-system.conf b/contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-system.conf
new file mode 100644
index 000000000..4ad7e06f6
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-exchange/taler/conf.d/exchange-system.conf
@@ -0,0 +1,13 @@
+# Configuration settings for system parameters of the exchange.
+
+# Read secret sections into configuration, but only
+# if we have permission to do so.
+@inline-secret@ exchangedb-postgres ../secrets/exchange-db.secret.conf
+
+[exchange]
+
+# Only supported database is Postgres right now.
+DATABASE = postgres
+
+
+
diff --git a/contrib/packages/fedora/etc-taler-exchange/taler/secrets/exchange-accountcredentials-1.secret.conf b/contrib/packages/fedora/etc-taler-exchange/taler/secrets/exchange-accountcredentials-1.secret.conf
new file mode 100644
index 000000000..8c8d14320
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-exchange/taler/secrets/exchange-accountcredentials-1.secret.conf
@@ -0,0 +1,17 @@
+# This file contains the secret credentials
+# to access the Taler Wire Gateway API (usually
+# provided by LibEuFin) for the exchange accounts.
+#
+# Each exchange-account-* section should have a matching
+# exchange-accountcredentials-* section here.
+#
+# Each of those sections must be imported via @inline-secret@,
+# usually in conf.d/exchange-business.conf.
+
+[exchange-accountcredentials-1]
+
+wire_gateway_auth_method = basic
+password =
+username =
+wire_gateway_url =
+
diff --git a/contrib/packages/fedora/etc-taler-exchange/taler/secrets/exchange-db.secret.conf b/contrib/packages/fedora/etc-taler-exchange/taler/secrets/exchange-db.secret.conf
new file mode 100644
index 000000000..a7a727b62
--- /dev/null
+++ b/contrib/packages/fedora/etc-taler-exchange/taler/secrets/exchange-db.secret.conf
@@ -0,0 +1,10 @@
+# Database configuration for the Taler exchange.
+
+[exchangedb-postgres]
+
+# Typically, there should only be a single line here, of the form:
+
+# CONFIG=postgres:///DATABASE
+
+# The details of the URI depend on where the database lives and how
+# access control was configured.
diff --git a/contrib/packages/fedora/taler-auditor.taler-auditor-httpd.service b/contrib/packages/fedora/taler-auditor.taler-auditor-httpd.service
new file mode 100644
index 000000000..9aefab641
--- /dev/null
+++ b/contrib/packages/fedora/taler-auditor.taler-auditor-httpd.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=GNU Taler payment system auditor REST API
+After=postgres.service network.target
+
+[Service]
+User=taler-auditor-httpd
+Type=simple
+Restart=on-failure
+ExecStart=/usr/bin/taler-auditor-httpd -c /etc/taler/taler.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-aggregator.service b/contrib/packages/fedora/taler-exchange.taler-exchange-aggregator.service
new file mode 100644
index 000000000..246cad5c1
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-aggregator.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=GNU Taler payment system exchange aggregator service
+PartOf=taler-exchange.target
+After=postgres.service
+
+[Service]
+User=taler-exchange-aggregator
+Type=simple
+Restart=always
+RestartSec=1s
+ExecStart=/usr/bin/taler-exchange-aggregator -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectSystem=full
+Slice=taler-exchange.slice
+RuntimeMaxSec=3600s
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-aggregator@.service b/contrib/packages/fedora/taler-exchange.taler-exchange-aggregator@.service
new file mode 100644
index 000000000..bfc44a9a9
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-aggregator@.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=GNU Taler payment system exchange aggregator service
+PartOf=taler-exchange.target
+
+[Service]
+User=taler-exchange-aggregator
+Type=simple
+Restart=always
+RestartSec=1s
+ExecStart=/usr/bin/taler-exchange-aggregator -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectSystem=full
+Slice=taler-exchange.slice
+RuntimeMaxSec=3600s
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-closer.service b/contrib/packages/fedora/taler-exchange.taler-exchange-closer.service
new file mode 100644
index 000000000..97a385c13
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-closer.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=GNU Taler payment system exchange closer service
+PartOf=taler-exchange.target
+After=network.target postgres.service
+
+[Service]
+User=taler-exchange-closer
+Type=simple
+Restart=always
+RestartSec=1s
+ExecStart=/usr/bin/taler-exchange-closer -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectSystem=full
+Slice=taler-exchange.slice
+RuntimeMaxSec=3600s
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-expire.service b/contrib/packages/fedora/taler-exchange.taler-exchange-expire.service
new file mode 100644
index 000000000..250f210fe
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-expire.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=GNU Taler payment system exchange expire service
+PartOf=taler-exchange.target
+After=postgres.service
+
+[Service]
+User=taler-exchange-expire
+Type=simple
+Restart=always
+RestartSec=1s
+ExecStart=/usr/bin/taler-exchange-expire -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectSystem=full
+Slice=taler-exchange.slice
+RuntimeMaxSec=3600s
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-httpd.service b/contrib/packages/fedora/taler-exchange.taler-exchange-httpd.service
new file mode 100644
index 000000000..3671bdc7d
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-httpd.service
@@ -0,0 +1,33 @@
+[Unit]
+Description=GNU Taler payment system exchange REST API
+AssertPathExists=/run/taler/exchange-httpd
+Requires=taler-exchange-httpd.socket taler-exchange-secmod-cs.service taler-exchange-secmod-rsa.service taler-exchange-secmod-eddsa.service
+After=postgres.service network.target taler-exchange-secmod-cs.service taler-exchange-secmod-rsa.service taler-exchange-secmod-eddsa.service
+PartOf=taler-exchange.target
+
+[Service]
+User=taler-exchange-httpd
+Type=simple
+
+# Depending on the configuration, the service process kills itself and then
+# needs to be restarted. Thus no significant delay on restarts.
+Restart=always
+RestartSec=1ms
+
+# Disable the service if more than 5 restarts are encountered within 5s.
+# These are usually the systemd defaults, but can be overwritten, thus we set
+# them here explicitly, as the exchange code assumes StartLimitInterval
+# to be >=5s.
+StartLimitBurst=5
+StartLimitInterval=5s
+
+ExecStart=/usr/bin/taler-exchange-httpd -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=no
+PrivateDevices=yes
+ProtectSystem=full
+Slice=taler-exchange.slice
+
+[Install]
+WantedBy=multi-user.target
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-httpd@.service b/contrib/packages/fedora/taler-exchange.taler-exchange-httpd@.service
new file mode 100644
index 000000000..e0246899c
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-httpd@.service
@@ -0,0 +1,27 @@
+% This is a systemd service template.
+[Unit]
+Description=GNU Taler payment system exchange REST API at %I
+AssertPathExists=/run/taler/exchange-httpd
+Requires=taler-exchange-httpd@%i.socket taler-exchange-secmod-rsa.service taler-exchange-secmod-eddsa.service
+After=postgres.service network.target taler-exchange-secmod-rsa.service taler-exchange-secmod-eddsa.service
+PartOf=taler-exchange.target
+
+[Service]
+User=taler-exchange-httpd
+Type=simple
+# Depending on the configuration, the service suicides and then
+# needs to be restarted.
+Restart=always
+# Do not dally on restarts.
+RestartSec=1ms
+EnvironmentFile=/etc/environment
+ExecStart=/usr/bin/taler-exchange-httpd -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=no
+PrivateDevices=yes
+ProtectSystem=full
+Slice=taler-exchange.slice
+
+[Install]
+WantedBy=multi-user.target
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-secmod-cs.service b/contrib/packages/fedora/taler-exchange.taler-exchange-secmod-cs.service
new file mode 100644
index 000000000..3b5e0745d
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-secmod-cs.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=GNU Taler payment system exchange CS security module
+AssertPathExists=/run/taler/exchange-secmod-cs
+PartOf=taler-exchange.target
+
+[Service]
+User=taler-exchange-secmod-cs
+Type=simple
+Restart=always
+RestartSec=100ms
+ExecStart=/usr/bin/taler-exchange-secmod-cs -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=no
+PrivateDevices=yes
+ProtectSystem=full
+IPAddressDeny=any
+Slice=taler-exchange.slice
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-secmod-eddsa.service b/contrib/packages/fedora/taler-exchange.taler-exchange-secmod-eddsa.service
new file mode 100644
index 000000000..e8fba1736
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-secmod-eddsa.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=GNU Taler payment system exchange EdDSA security module
+AssertPathExists=/run/taler/exchange-secmod-eddsa
+PartOf=taler-exchange.target
+
+[Service]
+User=taler-exchange-secmod-eddsa
+Type=simple
+Restart=always
+RestartSec=100ms
+ExecStart=/usr/bin/taler-exchange-secmod-eddsa -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=no
+PrivateDevices=yes
+ProtectSystem=full
+IPAddressDeny=any
+Slice=taler-exchange.slice
+
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-secmod-rsa.service b/contrib/packages/fedora/taler-exchange.taler-exchange-secmod-rsa.service
new file mode 100644
index 000000000..10a9585a7
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-secmod-rsa.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=GNU Taler payment system exchange RSA security module
+AssertPathExists=/run/taler/exchange-secmod-rsa
+PartOf=taler-exchange.target
+
+[Service]
+User=taler-exchange-secmod-rsa
+Type=simple
+Restart=always
+RestartSec=100ms
+ExecStart=/usr/bin/taler-exchange-secmod-rsa -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=no
+PrivateDevices=yes
+ProtectSystem=full
+IPAddressDeny=any
+Slice=taler-exchange.slice
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-transfer.service b/contrib/packages/fedora/taler-exchange.taler-exchange-transfer.service
new file mode 100644
index 000000000..e26af20d0
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-transfer.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=Taler Exchange Transfer Service
+After=network.target postgres.service
+PartOf=taler-exchange.target
+
+[Service]
+User=taler-exchange-wire
+Type=simple
+Restart=always
+RestartSec=1s
+ExecStart=/usr/bin/taler-exchange-transfer -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectSystem=full
+Slice=taler-exchange.slice
+RuntimeMaxSec=3600s
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-wirewatch.service b/contrib/packages/fedora/taler-exchange.taler-exchange-wirewatch.service
new file mode 100644
index 000000000..7b74737b7
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-wirewatch.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=GNU Taler payment system exchange wirewatch service
+After=network.target postgres.service
+PartOf=taler-exchange.target
+
+[Service]
+User=taler-exchange-wire
+Type=simple
+Restart=always
+RestartSec=1s
+RuntimeMaxSec=3600s
+ExecStart=/usr/bin/taler-exchange-wirewatch -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectSystem=full
+Slice=taler-exchange.slice
diff --git a/contrib/packages/fedora/taler-exchange.taler-exchange-wirewatch@.service b/contrib/packages/fedora/taler-exchange.taler-exchange-wirewatch@.service
new file mode 100644
index 000000000..85bb9268b
--- /dev/null
+++ b/contrib/packages/fedora/taler-exchange.taler-exchange-wirewatch@.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=GNU Taler payment system exchange wirewatch service
+After=network.target
+PartOf=taler-exchange.target
+
+[Service]
+User=taler-exchange-wire
+Type=simple
+Restart=always
+RestartSec=1s
+ExecStart=/usr/bin/taler-exchange-wirewatch -c /etc/taler/taler.conf
+StandardOutput=journal
+StandardError=journal
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectSystem=full
+Slice=taler-exchange.slice
+RuntimeMaxSec=3600s
diff --git a/contrib/pp/.gitignore b/contrib/pp/.gitignore
deleted file mode 100644
index fb83616eb..000000000
--- a/contrib/pp/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-sphinx.err
-sphinx.log
-_build/
diff --git a/contrib/pp/Makefile b/contrib/pp/Makefile
deleted file mode 100644
index ab29543cb..000000000
--- a/contrib/pp/Makefile
+++ /dev/null
@@ -1,109 +0,0 @@
-# Makefile for Sphinx documentation
-#
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-PAPER =
-BUILDDIR = _build
-
-# User-friendly check for sphinx-build
-ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
-$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
-endif
-
-# Internal variables.
-PAPEROPT_a4 = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html json epub latex latexpdf text man doctest gettext
-
-help:
- @echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make a single large HTML file"
- @echo " json to make JSON files"
- @echo " epub to make an epub"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " pdf to make LaTeX files and run them through pdflatex"
- @echo " txt to make text files"
- @echo " man to make manual pages"
- @echo " texinfo to make Texinfo files"
- @echo " info to make Texinfo files and run them through makeinfo"
- @echo " gettext to make PO message catalogs"
- @echo " xml to make Docutils-native XML files"
- @echo " pseudoxml to make pseudoxml-XML files for display purposes"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
-
-clean:
- rm -rf $(BUILDDIR)/*
-
-
-# The html-linked builder does not support caching, so we
-# remove all cached state first.
-html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
- @echo
- @echo "Build finished. The HTML page is in $(BUILDDIR)/html."
-
-json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
- @echo
- @echo "Build finished; now you can process the JSON files."
-
-epub:
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
- @echo
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
- @echo "Run \`make' in that directory to run these through (pdf)latex" \
- "(use \`make latexpdf' here to do that automatically)."
-
-pdf:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/pdf
- @echo "Running LaTeX files through pdflatex..."
- $(MAKE) -C $(BUILDDIR)/pdf all-pdf
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/pdf."
-
-txt:
- $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/txt
- @echo
- @echo "Build finished. The text files are in $(BUILDDIR)/txt."
-
-man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
- @echo
- @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo
- @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
- @echo "Run \`make' in that directory to run these through makeinfo" \
- "(use \`make info' here to do that automatically)."
-
-info:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/info
- @echo "Running Texinfo files through makeinfo..."
- make -C $(BUILDDIR)/texinfo info
- @echo "makeinfo finished; the Info files are in $(BUILDDIR)/info."
-
-gettext:
- $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
- @echo
- @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
-
-xml:
- $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
- @echo
- @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
diff --git a/contrib/pp/README b/contrib/pp/README
deleted file mode 100644
index 17a17c584..000000000
--- a/contrib/pp/README
+++ /dev/null
@@ -1,58 +0,0 @@
-This directory contains the privacy policy (template) for exchange
-operators.
-
-
-Dependencies
-============
-
-Generating a new Privacy Policy requires Sphinx, LaTeX with babel
-packages for all supported languages. On Debian, you should
-at least install:
-
-$ apt install python3-sphinx sphinx-intl texlive-lang-german texlive-lang-english latexmk texlive-latex-recommended texlive-latex-extra
-
-(NOTE: List may be incomplete.)
-
-
-Updating the Privacy Policy
-===========================
-
-The master file with the Privacy Policy is 'pp.rst'.
-
-If you make substantial changes, you MUST change the "PP_VERSION"
-in contrib/Makefile.am to the new Etag.
-
-To begin the translation into other languages after editing the master
-file, run
-
-$ make gettext
-
-to generate the master PO file. Then, run
-
-$ sphinx-intl update -p _build/locale/ -l de -l fr -l it
-
-to update the PO files for the various languages (extend the list of
-languages as necessary). The PO files for the translators are kept
-at locale/$LANG/LC_MESSAGES/pp.po for the language $LANG.
-
-Once all PO files have been updated with new translations, run
-
-$ make update-pp
-
-in the "contrib/" directory to generate all of the formats. The
-respective make rule calls the '../update-pp.sh' script in the
-contrib/ directory, which calls the 'Makefile' in the pp/
-directory for the various supported languages and file formats
-and then moves the generated files to the target directory
-('contrib/pp/$LANG/$VERSION.$FORMAT')
-
-
-Adding a new language
-=====================
-
-To add a new language $LANG, add $LANG to "PP_LANGUAGES" in
-'contrib/Makefile.am' and run
-
-$ sphinx-intl update -p _build/gettext -l $LANG
-
-to generate the PO template.
diff --git a/contrib/pp/conf.py.in b/contrib/pp/conf.py.in
deleted file mode 100644
index d6805efec..000000000
--- a/contrib/pp/conf.py.in
+++ /dev/null
@@ -1,282 +0,0 @@
-"""
- This file is part of GNU TALER.
- Copyright (C) 2014-2022 Taler Systems SA
-
- TALER is free software; you can redistribute it and/or modify it under the
- terms of the GNU Lesser General Public License as published by the Free Software
- Foundation; either version 2.1, or (at your option) any later version.
-
- TALER is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License along with
- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
-
- @author Florian Dold
- @author Benedikt Muller
- @author Sree Harsha Totakura
- @author Marcello Stanisci
-"""
-# -*- coding: utf-8 -*-
-#
-# neuro documentation build configuration file, created by
-# sphinx-quickstart on Sat May 31 13:11:06 2014.
-#
-# This file is execfile()d with the current directory set to its
-# containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys
-import os
-
-sys.path.append(os.path.abspath('_exts'))
-
-#import taler_sphinx_theme
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
-
-# -- General configuration ------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-needs_sphinx = '1.8.5'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
- 'sphinx.ext.todo',
- 'sphinx.ext.imgmath',
-]
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-source_suffix = {
- '.rst': 'restructuredtext',
-}
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = '%VERSION%'
-
-# General information about the project.
-project = u'%VERSION%'
-copyright = u'2014-2022 Taler Systems SA (GPLv3+ or GFDL 1.3+)'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '%VERSION%'
-# The full version, including alpha/beta/rc tags.
-release = '%VERSION%'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-# language = "en de"
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build', '_exts', 'cf', 'prebuilt']
-
-# The reST default role (used for this markup: `text`) to use for all
-# documents.
-# default_role = "ts:type"
-
-locale_dirs = ['locale/']
-gettext_compact = False
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-# If true, keep warnings as "system message" paragraphs in the built documents.
-#keep_warnings = False
-
-# -- Options for HTML output ----------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-html_theme = 'epub'
-
-#html_theme_path = taler_sphinx_theme.html_theme_path()
-
-#html_sidebars = {'**': ['logo-text.html', 'globaltoc.html', 'searchbox.html']}
-
-rst_epilog = ""
-
-html_show_sphinx = False
-
-html_theme_options = {
- # Set the name of the project to appear in the sidebar
- "relbar1": "false",
- "footer": "false",
-}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# "<project> v<release> documentation".
-html_title = "Taler Privacy Policy"
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-html_short_title = "Privacy Policy"
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-# html_static_path = ['_static']
-
-# Add any extra paths that contain custom files (such as robots.txt or
-# .htaccess) here, relative to this directory. These files are copied
-# directly to the root of the documentation.
-#html_extra_path = []
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-html_show_sphinx = False
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
-# -- Options for LaTeX output ---------------------------------------------
-
-latex_elements = {
- # The paper size ('letterpaper' or 'a4paper').
- #'papersize': 'letterpaper',
-
- # The font size ('10pt', '11pt' or '12pt').
- #'pointsize': '10pt',
-
- # Additional stuff for the LaTeX preamble.
- #'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-# author, documentclass [howto, manual, or own class]).
-latex_documents = [
- ('%VERSION%', '%VERSION%.tex',
- 'Privacy Policy', 'GNU Taler team', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-# latex_appendices = ["fdl-1.3"]
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-# -- Options for manual page output ---------------------------------------
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-# -- Options for Texinfo output -------------------------------------------
-
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
-
-# If true, do not generate a @detailmenu in the "Top" node's menu.
-#texinfo_no_detailmenu = False
-
-
-# -- Options for epub output ----------------------------
-
-epub_basename = "%VERSION%"
-
-epub_title = "Privacy Policy"
diff --git a/contrib/pp/en/pp-v0.epub b/contrib/pp/en/pp-v0.epub
deleted file mode 100644
index 2827fcbee..000000000
--- a/contrib/pp/en/pp-v0.epub
+++ /dev/null
Binary files differ
diff --git a/contrib/pp/en/pp-v0.html b/contrib/pp/en/pp-v0.html
deleted file mode 100644
index 57b942607..000000000
--- a/contrib/pp/en/pp-v0.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<html lang="en">
-<head>
-<meta charset="utf-8"/>
-<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
-<title>Privacy Policy — Taler Privacy Policy</title>
-<link href="data:text/css,pre%20%7B%20line-height%3A%20125%25%3B%20margin%3A%200%3B%20%7D%0Atd.linenos%20pre%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23f0f0f0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Aspan.linenos%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23f0f0f0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Atd.linenos%20pre.special%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23ffffc0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Aspan.linenos.special%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23ffffc0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0A.highlight%20.hll%20%7B%20background-color%3A%20%23ffffcc%20%7D%0A.highlight%20%7B%20background%3A%20%23eeffcc%3B%20%7D%0A.highlight%20.c%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment%20%2A/%0A.highlight%20.err%20%7B%20border%3A%201px%20solid%20%23FF0000%20%7D%20/%2A%20Error%20%2A/%0A.highlight%20.k%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword%20%2A/%0A.highlight%20.o%20%7B%20color%3A%20%23666666%20%7D%20/%2A%20Operator%20%2A/%0A.highlight%20.ch%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Hashbang%20%2A/%0A.highlight%20.cm%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Multiline%20%2A/%0A.highlight%20.cp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Comment.Preproc%20%2A/%0A.highlight%20.cpf%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.PreprocFile%20%2A/%0A.highlight%20.c1%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Single%20%2A/%0A.highlight%20.cs%20%7B%20color%3A%20%23408090%3B%20background-color%3A%20%23fff0f0%20%7D%20/%2A%20Comment.Special%20%2A/%0A.highlight%20.gd%20%7B%20color%3A%20%23A00000%20%7D%20/%2A%20Generic.Deleted%20%2A/%0A.highlight%20.ge%20%7B%20font-style%3A%20italic%20%7D%20/%2A%20Generic.Emph%20%2A/%0A.highlight%20.gr%20%7B%20color%3A%20%23FF0000%20%7D%20/%2A%20Generic.Error%20%2A/%0A.highlight%20.gh%20%7B%20color%3A%20%23000080%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Heading%20%2A/%0A.highlight%20.gi%20%7B%20color%3A%20%2300A000%20%7D%20/%2A%20Generic.Inserted%20%2A/%0A.highlight%20.go%20%7B%20color%3A%20%23333333%20%7D%20/%2A%20Generic.Output%20%2A/%0A.highlight%20.gp%20%7B%20color%3A%20%23c65d09%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Prompt%20%2A/%0A.highlight%20.gs%20%7B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Strong%20%2A/%0A.highlight%20.gu%20%7B%20color%3A%20%23800080%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Subheading%20%2A/%0A.highlight%20.gt%20%7B%20color%3A%20%230044DD%20%7D%20/%2A%20Generic.Traceback%20%2A/%0A.highlight%20.kc%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Constant%20%2A/%0A.highlight%20.kd%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Declaration%20%2A/%0A.highlight%20.kn%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Namespace%20%2A/%0A.highlight%20.kp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Keyword.Pseudo%20%2A/%0A.highlight%20.kr%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Reserved%20%2A/%0A.highlight%20.kt%20%7B%20color%3A%20%23902000%20%7D%20/%2A%20Keyword.Type%20%2A/%0A.highlight%20.m%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number%20%2A/%0A.highlight%20.s%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String%20%2A/%0A.highlight%20.na%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Name.Attribute%20%2A/%0A.highlight%20.nb%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Builtin%20%2A/%0A.highlight%20.nc%20%7B%20color%3A%20%230e84b5%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Class%20%2A/%0A.highlight%20.no%20%7B%20color%3A%20%2360add5%20%7D%20/%2A%20Name.Constant%20%2A/%0A.highlight%20.nd%20%7B%20color%3A%20%23555555%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Decorator%20%2A/%0A.highlight%20.ni%20%7B%20color%3A%20%23d55537%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Entity%20%2A/%0A.highlight%20.ne%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Exception%20%2A/%0A.highlight%20.nf%20%7B%20color%3A%20%2306287e%20%7D%20/%2A%20Name.Function%20%2A/%0A.highlight%20.nl%20%7B%20color%3A%20%23002070%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Label%20%2A/%0A.highlight%20.nn%20%7B%20color%3A%20%230e84b5%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Namespace%20%2A/%0A.highlight%20.nt%20%7B%20color%3A%20%23062873%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Tag%20%2A/%0A.highlight%20.nv%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable%20%2A/%0A.highlight%20.ow%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Operator.Word%20%2A/%0A.highlight%20.w%20%7B%20color%3A%20%23bbbbbb%20%7D%20/%2A%20Text.Whitespace%20%2A/%0A.highlight%20.mb%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Bin%20%2A/%0A.highlight%20.mf%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Float%20%2A/%0A.highlight%20.mh%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Hex%20%2A/%0A.highlight%20.mi%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Integer%20%2A/%0A.highlight%20.mo%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Oct%20%2A/%0A.highlight%20.sa%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Affix%20%2A/%0A.highlight%20.sb%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Backtick%20%2A/%0A.highlight%20.sc%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Char%20%2A/%0A.highlight%20.dl%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Delimiter%20%2A/%0A.highlight%20.sd%20%7B%20color%3A%20%234070a0%3B%20font-style%3A%20italic%20%7D%20/%2A%20Literal.String.Doc%20%2A/%0A.highlight%20.s2%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Double%20%2A/%0A.highlight%20.se%20%7B%20color%3A%20%234070a0%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Literal.String.Escape%20%2A/%0A.highlight%20.sh%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Heredoc%20%2A/%0A.highlight%20.si%20%7B%20color%3A%20%2370a0d0%3B%20font-style%3A%20italic%20%7D%20/%2A%20Literal.String.Interpol%20%2A/%0A.highlight%20.sx%20%7B%20color%3A%20%23c65d09%20%7D%20/%2A%20Literal.String.Other%20%2A/%0A.highlight%20.sr%20%7B%20color%3A%20%23235388%20%7D%20/%2A%20Literal.String.Regex%20%2A/%0A.highlight%20.s1%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Single%20%2A/%0A.highlight%20.ss%20%7B%20color%3A%20%23517918%20%7D%20/%2A%20Literal.String.Symbol%20%2A/%0A.highlight%20.bp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Builtin.Pseudo%20%2A/%0A.highlight%20.fm%20%7B%20color%3A%20%2306287e%20%7D%20/%2A%20Name.Function.Magic%20%2A/%0A.highlight%20.vc%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Class%20%2A/%0A.highlight%20.vg%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Global%20%2A/%0A.highlight%20.vi%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Instance%20%2A/%0A.highlight%20.vm%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Magic%20%2A/%0A.highlight%20.il%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Integer.Long%20%2A/" rel="stylesheet" type="text/css"/><!--URL:_static/pygments.css-->
-<link href="data:text/css,/%2A%0A%20%2A%20epub.css_t%0A%20%2A%20~~~~~~~~~~%0A%20%2A%0A%20%2A%20Sphinx%20stylesheet%20--%20epub%20theme.%0A%20%2A%0A%20%2A%20%3Acopyright%3A%20Copyright%202007-2021%20by%20the%20Sphinx%20team%2C%20see%20AUTHORS.%0A%20%2A%20%3Alicense%3A%20BSD%2C%20see%20LICENSE%20for%20details.%0A%20%2A%0A%20%2A/%0A%0A/%2A%20--%20main%20layout%20-----------------------------------------------------------%20%2A/%0A%0A%0A%0Adiv.clearer%20%7B%0A%20%20%20%20clear%3A%20both%3B%0A%7D%0A%0Aa%3Alink%2C%20a%3Avisited%20%7B%0A%20%20%20%20color%3A%20%233333ff%3B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0Aimg%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20max-width%3A%20100%25%3B%0A%7D%0A%0A/%2A%20--%20relbar%20----------------------------------------------------------------%20%2A/%0A%0Adiv.related%20%7B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0Adiv.related%20h3%20%7B%0A%20%20%20%20display%3A%20none%3B%0A%7D%0A%0Adiv.related%20ul%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding%3A%200%200%200%2010px%3B%0A%20%20%20%20list-style%3A%20none%3B%0A%7D%0A%0Adiv.related%20li%20%7B%0A%20%20%20%20display%3A%20inline%3B%0A%7D%0A%0Adiv.related%20li.right%20%7B%0A%20%20%20%20float%3A%20right%3B%0A%20%20%20%20margin-right%3A%205px%3B%0A%7D%0A%0A/%2A%20--%20sidebar%20---------------------------------------------------------------%20%2A/%0A%0Adiv.sphinxsidebarwrapper%20%7B%0A%20%20%20%20padding%3A%2010px%205px%200%2010px%3B%0A%7D%0A%0Adiv.sphinxsidebar%20%7B%0A%20%20%20%20float%3A%20left%3B%0A%20%20%20%20width%3A%20230px%3B%0A%20%20%20%20margin-left%3A%20-100%25%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20%7B%0A%20%20%20%20list-style%3A%20none%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20ul%2C%0Adiv.sphinxsidebar%20ul.want-points%20%7B%0A%20%20%20%20margin-left%3A%2020px%3B%0A%20%20%20%20list-style%3A%20square%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20ul%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0Adiv.sphinxsidebar%20form%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%7D%0A%0Adiv.sphinxsidebar%20input%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%2398dbcc%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%20100%25%3B%0A%7D%0A%0Aimg%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20max-width%3A%20100%25%3B%0A%7D%0A%0A/%2A%20--%20search%20page%20-----------------------------------------------------------%20%2A/%0A%0Aul.search%20%7B%0A%20%20%20%20margin%3A%2010px%200%200%2020px%3B%0A%20%20%20%20padding%3A%200%3B%0A%7D%0A%0Aul.search%20li%20%7B%0A%20%20%20%20padding%3A%205px%200%205px%2020px%3B%0A%20%20%20%20background-image%3A%20url%28file.png%29%3B%0A%20%20%20%20background-repeat%3A%20no-repeat%3B%0A%20%20%20%20background-position%3A%200%207px%3B%0A%7D%0A%0Aul.search%20li%20a%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Aul.search%20li%20div.context%20%7B%0A%20%20%20%20color%3A%20%23888%3B%0A%20%20%20%20margin%3A%202px%200%200%2030px%3B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0Aul.keywordmatches%20li.goodmatch%20a%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A/%2A%20--%20index%20page%20------------------------------------------------------------%20%2A/%0A%0Atable.contentstable%20%7B%0A%20%20%20%20width%3A%2090%25%3B%0A%7D%0A%0Atable.contentstable%20p.biglink%20%7B%0A%20%20%20%20line-height%3A%20150%25%3B%0A%7D%0A%0Aa.biglink%20%7B%0A%20%20%20%20font-size%3A%20130%25%3B%0A%7D%0A%0Aspan.linkdescr%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%20%20%20%20padding-top%3A%205px%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0A/%2A%20--%20general%20index%20---------------------------------------------------------%20%2A/%0A%0Atable.indextable%20td%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%20%20%20%20vertical-align%3A%20top%3B%0A%7D%0A%0Atable.indextable%20ul%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%20%20%20%20list-style-type%3A%20none%3B%0A%7D%0A%0Atable.indextable%20%3E%20tbody%20%3E%20tr%20%3E%20td%20%3E%20ul%20%7B%0A%20%20%20%20padding-left%3A%200em%3B%0A%7D%0A%0Atable.indextable%20tr.pcap%20%7B%0A%20%20%20%20height%3A%2010px%3B%0A%7D%0A%0Atable.indextable%20tr.cap%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%20%20%20%20background-color%3A%20%23f2f2f2%3B%0A%7D%0A%0Aimg.toggler%20%7B%0A%20%20%20%20margin-right%3A%203px%3B%0A%20%20%20%20margin-top%3A%203px%3B%0A%20%20%20%20cursor%3A%20pointer%3B%0A%7D%0A%0A/%2A%20--%20domain%20module%20index%20---------------------------------------------------%20%2A/%0A%0Atable.modindextable%20td%20%7B%0A%20%20%20%20padding%3A%202px%3B%0A%20%20%20%20border-collapse%3A%20collapse%3B%0A%7D%0A%0A/%2A%20--%20general%20body%20styles%20---------------------------------------------------%20%2A/%0A%0Aa.headerlink%20%7B%0A%20%20%20%20visibility%3A%20hidden%3B%0A%7D%0A%0Adiv.body%20p.caption%20%7B%0A%20%20%20%20text-align%3A%20inherit%3B%0A%7D%0A%0Adiv.body%20td%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0A.first%20%7B%0A%20%20%20%20margin-top%3A%200%20%21important%3B%0A%7D%0A%0Ap.rubric%20%7B%0A%20%20%20%20margin-top%3A%2030px%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A.align-left%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0A.align-center%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%7D%0A%0A.align-right%20%7B%0A%20%20%20%20text-align%3A%20right%3B%0A%7D%0A%0A/%2A%20--%20sidebars%20--------------------------------------------------------------%20%2A/%0A%0Adiv.sidebar%20%7B%0A%20%20%20%20margin%3A%200%200%200.5em%201em%3B%0A%20%20%20%20border%3A%201px%20solid%20%23ddb%3B%0A%20%20%20%20padding%3A%207px%207px%200%207px%3B%0A%20%20%20%20background-color%3A%20%23ffe%3B%0A%20%20%20%20width%3A%2040%25%3B%0A%20%20%20%20float%3A%20right%3B%0A%7D%0A%0Ap.sidebar-title%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A/%2A%20--%20topics%20----------------------------------------------------------------%20%2A/%0A%0Adiv.topic%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%23ccc%3B%0A%20%20%20%20padding%3A%207px%207px%200%207px%3B%0A%20%20%20%20margin%3A%2010px%200%2010px%200%3B%0A%7D%0A%0Ap.topic-title%20%7B%0A%20%20%20%20font-size%3A%20110%25%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%7D%0A%0A/%2A%20--%20admonitions%20-----------------------------------------------------------%20%2A/%0A%0Adiv.admonition%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%20%20%20%20padding%3A%207px%3B%0A%7D%0A%0Adiv.admonition%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Adiv.admonition%20dl%20%7B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0Ap.admonition-title%20%7B%0A%20%20%20%20margin%3A%200px%2010px%205px%200px%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Adiv.body%20p.centered%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%20%20%20%20margin-top%3A%2025px%3B%0A%7D%0A%0A/%2A%20--%20tables%20----------------------------------------------------------------%20%2A/%0A%0Atable.docutils%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20border-collapse%3A%20collapse%3B%0A%7D%0A%0Atable%20caption%20span.caption-number%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Atable%20caption%20span.caption-text%20%7B%0A%7D%0A%0Atable.docutils%20td%2C%20table.docutils%20th%20%7B%0A%20%20%20%20padding%3A%201px%208px%201px%205px%3B%0A%20%20%20%20border-top%3A%200%3B%0A%20%20%20%20border-left%3A%200%3B%0A%20%20%20%20border-right%3A%200%3B%0A%20%20%20%20border-bottom%3A%201px%20solid%20%23aaa%3B%0A%7D%0A%0Atable.footnote%20td%2C%20table.footnote%20th%20%7B%0A%20%20%20%20border%3A%200%20%21important%3B%0A%7D%0A%0Ath%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%20%20%20%20padding-right%3A%205px%3B%0A%7D%0A%0Atable.citation%20%7B%0A%20%20%20%20border-left%3A%20solid%201px%20gray%3B%0A%20%20%20%20margin-left%3A%201px%3B%0A%7D%0A%0Atable.citation%20td%20%7B%0A%20%20%20%20border-bottom%3A%20none%3B%0A%7D%0A%0A/%2A%20--%20figures%20---------------------------------------------------------------%20%2A/%0A%0Adiv.figure%20p.caption%20span.caption-number%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adiv.figure%20p.caption%20span.caption-text%20%7B%0A%7D%0A%0A/%2A%20--%20field%20list%20styles%20-----------------------------------------------------%20%2A/%0A%0A/%2A%20--%20for%20html4%20--%20%2A/%0A%0Atable.field-list%20td%2C%20table.field-list%20th%20%7B%0A%20%20%20%20border%3A%200%20%21important%3B%0A%7D%0A%0A.field-list%20ul%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding-left%3A%201em%3B%0A%7D%0A%0A.field-list%20p%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0A/%2A%20--%20for%20html5%20--%20%2A/%0A%0A/%2A%20bold%20field%20name%2C%20content%20starts%20on%20the%20same%20line%20%2A/%0A%0Adl.field-list%20%3E%20dt%2C%0Adl.option-list%20%3E%20dt%2C%0Adl.docinfo%20%3E%20dt%2C%0Adl.footnote%20%3E%20dt%2C%0Adl.citation%20%3E%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20clear%3A%20left%3B%0A%20%20%20%20float%3A%20left%3B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding%3A%200%3B%0A%20%20%20%20padding-right%3A%200.5em%3B%0A%7D%0A%0A/%2A%20Offset%20for%20field%20content%20%28corresponds%20to%20the%20--field-name-limit%20option%29%20%2A/%0A%0Adl.field-list%20%3E%20dd%2C%0Adl.option-list%20%3E%20dd%2C%0Adl.docinfo%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%20%209em%3B%20/%2A%20ca.%2014%20chars%20in%20the%20test%20examples%20%2A/%0A%7D%0A%0A/%2A%20start%20field-body%20on%20a%20new%20line%20after%20long%20field%20names%20%2A/%0A%0Adl.field-list%20%3E%20dd%20%3E%20%2A%3Afirst-child%2C%0Adl.option-list%20%3E%20dd%20%3E%20%2A%3Afirst-child%0A%7B%0A%20%20%20%20display%3A%20inline-block%3B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0Adl.field-list%20%3E%20dt%3Aafter%2C%0Adl.docinfo%20%3E%20dt%3Aafter%20%7B%0A%20%20%20%20content%3A%20%22%3A%22%3B%0A%7D%0A%0A/%2A%20--%20option%20lists%20----------------------------------------------------------%20%2A/%0A%0Adl.option-list%20%7B%0A%20%20%20%20margin-left%3A%2040px%3B%0A%7D%0A%0Adl.option-list%20%3E%20dt%20%7B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0Aspan.option%20%7B%0A%20%20%20%20white-space%3A%20nowrap%3B%0A%7D%0A%0A/%2A%20--%20lists%20-----------------------------------------------------------------%20%2A/%0A%0A/%2A%20--%20compact%20and%20simple%20lists%3A%20no%20margin%20between%20items%20--%20%2A/%0A%0A.simple%20%20li%2C%20.compact%20li%2C%0A.simple%20%20ul%2C%20.compact%20ul%2C%0A.simple%20%20ol%2C%20.compact%20ol%2C%0A.simple%20%3E%20li%20p%2C%20.compact%20%3E%20li%20p%2C%0Adl.simple%20%3E%20dd%2C%20dl.compact%20%3E%20dd%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0A/%2A%20--%20enumerated%20lists%20------------------------------------------------------%20%2A/%0A%0Aol.arabic%20%7B%0A%20%20%20%20list-style%3A%20decimal%3B%0A%7D%0A%0Aol.loweralpha%20%7B%0A%20%20%20%20list-style%3A%20lower-alpha%3B%0A%7D%0A%0Aol.upperalpha%20%7B%0A%20%20%20%20list-style%3A%20upper-alpha%3B%0A%7D%0A%0Aol.lowerroman%20%7B%0A%20%20%20%20list-style%3A%20lower-roman%3B%0A%7D%0A%0Aol.upperroman%20%7B%0A%20%20%20%20list-style%3A%20upper-roman%3B%0A%7D%0A%0Adt%20span.classifier%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adt%20span.classifier%3Abefore%20%7B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20margin%3A%200.5em%3B%0A%20%20%20%20content%3A%20%22%3A%22%3B%0A%7D%0A%0A/%2A%20--%20other%20body%20styles%20-----------------------------------------------------%20%2A/%0A%0Adl%20%7B%0A%20%20%20%20margin-bottom%3A%2015px%3B%0A%7D%0A%0Add%20p%20%7B%0A%20%20%20%20margin-top%3A%200px%3B%0A%7D%0A%0Add%20ul%2C%20dd%20table%20%7B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%7D%0A%0Add%20%7B%0A%20%20%20%20margin-top%3A%203px%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%20%20%20%20margin-left%3A%2030px%3B%0A%7D%0A%0Adt%3Atarget%2C%20.highlighted%20%7B%0A%20%20%20%20background-color%3A%20%23ddd%3B%0A%7D%0A%0Adl.glossary%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20font-size%3A%20110%25%3B%0A%7D%0A%0A.optional%20%7B%0A%20%20%20%20font-size%3A%20130%25%3B%0A%7D%0A%0A.sig-paren%20%7B%0A%20%20%20%20font-size%3A%20larger%3B%0A%7D%0A%0A.versionmodified%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A.system-message%20%7B%0A%20%20%20%20background-color%3A%20%23fda%3B%0A%20%20%20%20padding%3A%205px%3B%0A%20%20%20%20border%3A%203px%20solid%20red%3B%0A%7D%0A%0A/%2A%20--%20footnotes%20and%20citations%20-----------------------------------------------%20%2A/%0A%0A/%2A%20--%20for%20html4%20--%20%2A/%0A.footnote%3Atarget%20%20%7B%0A%20%20%20%20background-color%3A%20%23dddddd%3B%0A%7D%0A%0A/%2A%20--%20for%20html5%20--%20%2A/%0A%0Adl.footnote.superscript%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%201em%3B%0A%7D%0A%0Adl.footnote.brackets%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%202em%3B%0A%7D%0A%0Adl%20%3E%20dt.label%20%7B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0Aa.footnote-reference.brackets%3Abefore%2C%0Adt.label%20%3E%20span.brackets%3Abefore%20%7B%0A%20%20%20%20content%3A%20%22%5B%22%3B%0A%7D%0A%0Aa.footnote-reference.brackets%3Aafter%2C%0Adt.label%20%3E%20span.brackets%3Aafter%20%7B%0A%20%20%20%20content%3A%20%22%5D%22%3B%0A%7D%0A%0Aa.footnote-reference.superscript%2C%0Adl.footnote.superscript%20%3E%20dt.label%20%7B%0A%20%20%20%20vertical-align%3A%20super%3B%0A%20%20%20%20font-size%3A%20smaller%3B%0A%7D%0A%0Adt.label%20%3E%20span.fn-backref%20%7B%0A%20%20%20%20margin-left%3A%200.2em%3B%0A%7D%0A%0Adt.label%20%3E%20span.fn-backref%20%3E%20a%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A/%2A%20--%20line%20blocks%20-----------------------------------------------------------%20%2A/%0A%0A.line-block%20%7B%0A%20%20%20%20display%3A%20block%3B%0A%20%20%20%20margin-top%3A%201em%3B%0A%20%20%20%20margin-bottom%3A%201em%3B%0A%7D%0A%0A.line-block%20.line-block%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%20%20%20%20margin-left%3A%201.5em%3B%0A%7D%0A%0A.guilabel%2C%20.menuselection%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A.accelerator%20%7B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0A.classifier%20%7B%0A%20%20%20%20font-style%3A%20oblique%3B%0A%7D%0A%0Aabbr%2C%20acronym%20%7B%0A%20%20%20%20border-bottom%3A%20dotted%201px%3B%0A%20%20%20%20cursor%3A%20help%3B%0A%7D%0A%0A/%2A%20--%20code%20displays%20---------------------------------------------------------%20%2A/%0A%0Apre%20%7B%0A%20%20%20%20font-family%3A%20monospace%3B%0A%20%20%20%20overflow%3A%20auto%3B%0A%20%20%20%20overflow-y%3A%20hidden%3B%0A%7D%0A%0Atd.linenos%20pre%20%7B%0A%20%20%20%20padding%3A%205px%200px%3B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20color%3A%20%23aaa%3B%0A%7D%0A%0Atable.highlighttable%20%7B%0A%20%20%20%20margin-left%3A%200.5em%3B%0A%7D%0A%0Atable.highlighttable%20td%20%7B%0A%20%20%20%20padding%3A%200%200.5em%200%200.5em%3B%0A%7D%0A%0Acode%20%7B%0A%20%20%20%20font-family%3A%20monospace%3B%0A%7D%0A%0Adiv.code-block-caption%20span.caption-number%20%7B%0A%20%20%20%20padding%3A%200.1em%200.3em%3B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adiv.code-block-caption%20span.caption-text%20%7B%0A%7D%0A%0Adiv.literal-block-wrapper%20%7B%0A%20%20%20%20padding%3A%201em%201em%200%3B%0A%7D%0A%0Adiv.literal-block-wrapper%20div.highlight%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0Acode.descname%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20font-size%3A%201.2em%3B%0A%7D%0A%0Acode.descclassname%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%7D%0A%0Acode.xref%2C%20a%20code%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Ah1%20code%2C%20h2%20code%2C%20h3%20code%2C%20h4%20code%2C%20h5%20code%2C%20h6%20code%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%7D%0A%0A/%2A%20--%20math%20display%20----------------------------------------------------------%20%2A/%0A%0Aimg.math%20%7B%0A%20%20%20%20vertical-align%3A%20middle%3B%0A%7D%0A%0Adiv.body%20div.math%20p%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%7D%0A%0Aspan.eqno%20%7B%0A%20%20%20%20float%3A%20right%3B%0A%7D%0A%0A/%2A%20--%20special%20divs%20%20---------------------------------------------------------%20%2A/%0A%0Adiv.quotebar%20%7B%0A%20%20%20%20background-color%3A%20%23e3eff1%3B%0A%20%20%20%20max-width%3A%20250px%3B%0A%20%20%20%20float%3A%20right%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20padding%3A%207px%207px%3B%0A%20%20%20%20border%3A%201px%20solid%20%23ccc%3B%0A%7D%0Adiv.footer%20%7B%0A%20%20%20%20background-color%3A%20%23e3eff1%3B%0A%20%20%20%20padding%3A%203px%208px%203px%200%3B%0A%20%20%20%20clear%3A%20both%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%2080%25%3B%0A%20%20%20%20text-align%3A%20right%3B%0A%7D%0A%0Adiv.footer%20a%20%7B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0A/%2A%20--%20link-target%20-----------------------------------------------------------%20%2A/%0A%0A.link-target%20%7B%0A%20%20%20%20font-size%3A%2080%25%3B%0A%7D%0A%0Atable%20.link-target%20%7B%0A%20%20%20%20/%2A%20Do%20not%20show%20links%20in%20tables%2C%20there%20is%20not%20enough%20space%20%2A/%0A%20%20%20%20display%3A%20none%3B%0A%7D%0A%0A/%2A%20--%20font-face%20-------------------------------------------------------------%20%2A/%0A%0A/%2A%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Regular.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20oblique%2C%20italic%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Italic.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Bold.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20oblique%2C%20italic%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-BoldItalic.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%2A/" rel="stylesheet" type="text/css"/><!--URL:_static/epub.css-->
-<script data-url_root="./" id="documentation_options" src="data:application/javascript,var%20DOCUMENTATION_OPTIONS%20%3D%20%7B%0A%20%20%20%20URL_ROOT%3A%20document.getElementById%28%22documentation_options%22%29.getAttribute%28%27data-url_root%27%29%2C%0A%20%20%20%20VERSION%3A%20%27pp-v0%27%2C%0A%20%20%20%20LANGUAGE%3A%20%27en%27%2C%0A%20%20%20%20COLLAPSE_INDEX%3A%20false%2C%0A%20%20%20%20BUILDER%3A%20%27html%27%2C%0A%20%20%20%20FILE_SUFFIX%3A%20%27.html%27%2C%0A%20%20%20%20LINK_SUFFIX%3A%20%27.html%27%2C%0A%20%20%20%20HAS_SOURCE%3A%20true%2C%0A%20%20%20%20SOURCELINK_SUFFIX%3A%20%27.txt%27%2C%0A%20%20%20%20NAVIGATION_WITH_KEYS%3A%20false%0A%7D%3B"></script><!--URL:_static/documentation_options.js-->
-<script src="data:application/javascript,/%2A%21%0A%20%2A%20jQuery%20JavaScript%20Library%20v3.5.1%0A%20%2A%20https%3A//jquery.com/%0A%20%2A%0A%20%2A%20Includes%20Sizzle.js%0A%20%2A%20https%3A//sizzlejs.com/%0A%20%2A%0A%20%2A%20Copyright%20JS%20Foundation%20and%20other%20contributors%0A%20%2A%20Released%20under%20the%20MIT%20license%0A%20%2A%20https%3A//jquery.org/license%0A%20%2A/%0A%28%20function%28%20global%2C%20factory%20%29%20%7B%0A%0A%09%22use%20strict%22%3B%0A%0A%09if%20%28%20typeof%20module%20%3D%3D%3D%20%22object%22%20%26%26%20typeof%20module.exports%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20For%20CommonJS%20and%20CommonJS-like%20environments%20where%20a%20proper%20%60window%60%0A%09%09//%20is%20present%2C%20execute%20the%20factory%20and%20get%20jQuery.%0A%09%09//%20For%20environments%20that%20do%20not%20have%20a%20%60window%60%20with%20a%20%60document%60%0A%09%09//%20%28such%20as%20Node.js%29%2C%20expose%20a%20factory%20as%20module.exports.%0A%09%09//%20This%20accentuates%20the%20need%20for%20the%20creation%20of%20a%20real%20%60window%60.%0A%09%09//%20e.g.%20var%20jQuery%20%3D%20require%28%22jquery%22%29%28window%29%3B%0A%09%09//%20See%20ticket%20%2314549%20for%20more%20info.%0A%09%09module.exports%20%3D%20global.document%20%3F%0A%09%09%09factory%28%20global%2C%20true%20%29%20%3A%0A%09%09%09function%28%20w%20%29%20%7B%0A%09%09%09%09if%20%28%20%21w.document%20%29%20%7B%0A%09%09%09%09%09throw%20new%20Error%28%20%22jQuery%20requires%20a%20window%20with%20a%20document%22%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20factory%28%20w%20%29%3B%0A%09%09%09%7D%3B%0A%09%7D%20else%20%7B%0A%09%09factory%28%20global%20%29%3B%0A%09%7D%0A%0A//%20Pass%20this%20if%20window%20is%20not%20defined%20yet%0A%7D%20%29%28%20typeof%20window%20%21%3D%3D%20%22undefined%22%20%3F%20window%20%3A%20this%2C%20function%28%20window%2C%20noGlobal%20%29%20%7B%0A%0A//%20Edge%20%3C%3D%2012%20-%2013%2B%2C%20Firefox%20%3C%3D18%20-%2045%2B%2C%20IE%2010%20-%2011%2C%20Safari%205.1%20-%209%2B%2C%20iOS%206%20-%209.1%0A//%20throw%20exceptions%20when%20non-strict%20code%20%28e.g.%2C%20ASP.NET%204.5%29%20accesses%20strict%20mode%0A//%20arguments.callee.caller%20%28trac-13335%29.%20But%20as%20of%20jQuery%203.0%20%282016%29%2C%20strict%20mode%20should%20be%20common%0A//%20enough%20that%20all%20such%20attempts%20are%20guarded%20in%20a%20try%20block.%0A%22use%20strict%22%3B%0A%0Avar%20arr%20%3D%20%5B%5D%3B%0A%0Avar%20getProto%20%3D%20Object.getPrototypeOf%3B%0A%0Avar%20slice%20%3D%20arr.slice%3B%0A%0Avar%20flat%20%3D%20arr.flat%20%3F%20function%28%20array%20%29%20%7B%0A%09return%20arr.flat.call%28%20array%20%29%3B%0A%7D%20%3A%20function%28%20array%20%29%20%7B%0A%09return%20arr.concat.apply%28%20%5B%5D%2C%20array%20%29%3B%0A%7D%3B%0A%0A%0Avar%20push%20%3D%20arr.push%3B%0A%0Avar%20indexOf%20%3D%20arr.indexOf%3B%0A%0Avar%20class2type%20%3D%20%7B%7D%3B%0A%0Avar%20toString%20%3D%20class2type.toString%3B%0A%0Avar%20hasOwn%20%3D%20class2type.hasOwnProperty%3B%0A%0Avar%20fnToString%20%3D%20hasOwn.toString%3B%0A%0Avar%20ObjectFunctionString%20%3D%20fnToString.call%28%20Object%20%29%3B%0A%0Avar%20support%20%3D%20%7B%7D%3B%0A%0Avar%20isFunction%20%3D%20function%20isFunction%28%20obj%20%29%20%7B%0A%0A%20%20%20%20%20%20//%20Support%3A%20Chrome%20%3C%3D57%2C%20Firefox%20%3C%3D52%0A%20%20%20%20%20%20//%20In%20some%20browsers%2C%20typeof%20returns%20%22function%22%20for%20HTML%20%3Cobject%3E%20elements%0A%20%20%20%20%20%20//%20%28i.e.%2C%20%60typeof%20document.createElement%28%20%22object%22%20%29%20%3D%3D%3D%20%22function%22%60%29.%0A%20%20%20%20%20%20//%20We%20don%27t%20want%20to%20classify%20%2Aany%2A%20DOM%20node%20as%20a%20function.%0A%20%20%20%20%20%20return%20typeof%20obj%20%3D%3D%3D%20%22function%22%20%26%26%20typeof%20obj.nodeType%20%21%3D%3D%20%22number%22%3B%0A%20%20%7D%3B%0A%0A%0Avar%20isWindow%20%3D%20function%20isWindow%28%20obj%20%29%20%7B%0A%09%09return%20obj%20%21%3D%20null%20%26%26%20obj%20%3D%3D%3D%20obj.window%3B%0A%09%7D%3B%0A%0A%0Avar%20document%20%3D%20window.document%3B%0A%0A%0A%0A%09var%20preservedScriptAttributes%20%3D%20%7B%0A%09%09type%3A%20true%2C%0A%09%09src%3A%20true%2C%0A%09%09nonce%3A%20true%2C%0A%09%09noModule%3A%20true%0A%09%7D%3B%0A%0A%09function%20DOMEval%28%20code%2C%20node%2C%20doc%20%29%20%7B%0A%09%09doc%20%3D%20doc%20%7C%7C%20document%3B%0A%0A%09%09var%20i%2C%20val%2C%0A%09%09%09script%20%3D%20doc.createElement%28%20%22script%22%20%29%3B%0A%0A%09%09script.text%20%3D%20code%3B%0A%09%09if%20%28%20node%20%29%20%7B%0A%09%09%09for%20%28%20i%20in%20preservedScriptAttributes%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Firefox%2064%2B%2C%20Edge%2018%2B%0A%09%09%09%09//%20Some%20browsers%20don%27t%20support%20the%20%22nonce%22%20property%20on%20scripts.%0A%09%09%09%09//%20On%20the%20other%20hand%2C%20just%20using%20%60getAttribute%60%20is%20not%20enough%20as%0A%09%09%09%09//%20the%20%60nonce%60%20attribute%20is%20reset%20to%20an%20empty%20string%20whenever%20it%0A%09%09%09%09//%20becomes%20browsing-context%20connected.%0A%09%09%09%09//%20See%20https%3A//github.com/whatwg/html/issues/2369%0A%09%09%09%09//%20See%20https%3A//html.spec.whatwg.org/%23nonce-attributes%0A%09%09%09%09//%20The%20%60node.getAttribute%60%20check%20was%20added%20for%20the%20sake%20of%0A%09%09%09%09//%20%60jQuery.globalEval%60%20so%20that%20it%20can%20fake%20a%20nonce-containing%20node%0A%09%09%09%09//%20via%20an%20object.%0A%09%09%09%09val%20%3D%20node%5B%20i%20%5D%20%7C%7C%20node.getAttribute%20%26%26%20node.getAttribute%28%20i%20%29%3B%0A%09%09%09%09if%20%28%20val%20%29%20%7B%0A%09%09%09%09%09script.setAttribute%28%20i%2C%20val%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09doc.head.appendChild%28%20script%20%29.parentNode.removeChild%28%20script%20%29%3B%0A%09%7D%0A%0A%0Afunction%20toType%28%20obj%20%29%20%7B%0A%09if%20%28%20obj%20%3D%3D%20null%20%29%20%7B%0A%09%09return%20obj%20%2B%20%22%22%3B%0A%09%7D%0A%0A%09//%20Support%3A%20Android%20%3C%3D2.3%20only%20%28functionish%20RegExp%29%0A%09return%20typeof%20obj%20%3D%3D%3D%20%22object%22%20%7C%7C%20typeof%20obj%20%3D%3D%3D%20%22function%22%20%3F%0A%09%09class2type%5B%20toString.call%28%20obj%20%29%20%5D%20%7C%7C%20%22object%22%20%3A%0A%09%09typeof%20obj%3B%0A%7D%0A/%2A%20global%20Symbol%20%2A/%0A//%20Defining%20this%20global%20in%20.eslintrc.json%20would%20create%20a%20danger%20of%20using%20the%20global%0A//%20unguarded%20in%20another%20place%2C%20it%20seems%20safer%20to%20define%20global%20only%20for%20this%20module%0A%0A%0A%0Avar%0A%09version%20%3D%20%223.5.1%22%2C%0A%0A%09//%20Define%20a%20local%20copy%20of%20jQuery%0A%09jQuery%20%3D%20function%28%20selector%2C%20context%20%29%20%7B%0A%0A%09%09//%20The%20jQuery%20object%20is%20actually%20just%20the%20init%20constructor%20%27enhanced%27%0A%09%09//%20Need%20init%20if%20jQuery%20is%20called%20%28just%20allow%20error%20to%20be%20thrown%20if%20not%20included%29%0A%09%09return%20new%20jQuery.fn.init%28%20selector%2C%20context%20%29%3B%0A%09%7D%3B%0A%0AjQuery.fn%20%3D%20jQuery.prototype%20%3D%20%7B%0A%0A%09//%20The%20current%20version%20of%20jQuery%20being%20used%0A%09jquery%3A%20version%2C%0A%0A%09constructor%3A%20jQuery%2C%0A%0A%09//%20The%20default%20length%20of%20a%20jQuery%20object%20is%200%0A%09length%3A%200%2C%0A%0A%09toArray%3A%20function%28%29%20%7B%0A%09%09return%20slice.call%28%20this%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Get%20the%20Nth%20element%20in%20the%20matched%20element%20set%20OR%0A%09//%20Get%20the%20whole%20matched%20element%20set%20as%20a%20clean%20array%0A%09get%3A%20function%28%20num%20%29%20%7B%0A%0A%09%09//%20Return%20all%20the%20elements%20in%20a%20clean%20array%0A%09%09if%20%28%20num%20%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20slice.call%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20just%20the%20one%20element%20from%20the%20set%0A%09%09return%20num%20%3C%200%20%3F%20this%5B%20num%20%2B%20this.length%20%5D%20%3A%20this%5B%20num%20%5D%3B%0A%09%7D%2C%0A%0A%09//%20Take%20an%20array%20of%20elements%20and%20push%20it%20onto%20the%20stack%0A%09//%20%28returning%20the%20new%20matched%20element%20set%29%0A%09pushStack%3A%20function%28%20elems%20%29%20%7B%0A%0A%09%09//%20Build%20a%20new%20jQuery%20matched%20element%20set%0A%09%09var%20ret%20%3D%20jQuery.merge%28%20this.constructor%28%29%2C%20elems%20%29%3B%0A%0A%09%09//%20Add%20the%20old%20object%20onto%20the%20stack%20%28as%20a%20reference%29%0A%09%09ret.prevObject%20%3D%20this%3B%0A%0A%09%09//%20Return%20the%20newly-formed%20element%20set%0A%09%09return%20ret%3B%0A%09%7D%2C%0A%0A%09//%20Execute%20a%20callback%20for%20every%20element%20in%20the%20matched%20set.%0A%09each%3A%20function%28%20callback%20%29%20%7B%0A%09%09return%20jQuery.each%28%20this%2C%20callback%20%29%3B%0A%09%7D%2C%0A%0A%09map%3A%20function%28%20callback%20%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.map%28%20this%2C%20function%28%20elem%2C%20i%20%29%20%7B%0A%09%09%09return%20callback.call%28%20elem%2C%20i%2C%20elem%20%29%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09slice%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20slice.apply%28%20this%2C%20arguments%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09first%3A%20function%28%29%20%7B%0A%09%09return%20this.eq%28%200%20%29%3B%0A%09%7D%2C%0A%0A%09last%3A%20function%28%29%20%7B%0A%09%09return%20this.eq%28%20-1%20%29%3B%0A%09%7D%2C%0A%0A%09even%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.grep%28%20this%2C%20function%28%20_elem%2C%20i%20%29%20%7B%0A%09%09%09return%20%28%20i%20%2B%201%20%29%20%25%202%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09odd%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.grep%28%20this%2C%20function%28%20_elem%2C%20i%20%29%20%7B%0A%09%09%09return%20i%20%25%202%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09eq%3A%20function%28%20i%20%29%20%7B%0A%09%09var%20len%20%3D%20this.length%2C%0A%09%09%09j%20%3D%20%2Bi%20%2B%20%28%20i%20%3C%200%20%3F%20len%20%3A%200%20%29%3B%0A%09%09return%20this.pushStack%28%20j%20%3E%3D%200%20%26%26%20j%20%3C%20len%20%3F%20%5B%20this%5B%20j%20%5D%20%5D%20%3A%20%5B%5D%20%29%3B%0A%09%7D%2C%0A%0A%09end%3A%20function%28%29%20%7B%0A%09%09return%20this.prevObject%20%7C%7C%20this.constructor%28%29%3B%0A%09%7D%2C%0A%0A%09//%20For%20internal%20use%20only.%0A%09//%20Behaves%20like%20an%20Array%27s%20method%2C%20not%20like%20a%20jQuery%20method.%0A%09push%3A%20push%2C%0A%09sort%3A%20arr.sort%2C%0A%09splice%3A%20arr.splice%0A%7D%3B%0A%0AjQuery.extend%20%3D%20jQuery.fn.extend%20%3D%20function%28%29%20%7B%0A%09var%20options%2C%20name%2C%20src%2C%20copy%2C%20copyIsArray%2C%20clone%2C%0A%09%09target%20%3D%20arguments%5B%200%20%5D%20%7C%7C%20%7B%7D%2C%0A%09%09i%20%3D%201%2C%0A%09%09length%20%3D%20arguments.length%2C%0A%09%09deep%20%3D%20false%3B%0A%0A%09//%20Handle%20a%20deep%20copy%20situation%0A%09if%20%28%20typeof%20target%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09deep%20%3D%20target%3B%0A%0A%09%09//%20Skip%20the%20boolean%20and%20the%20target%0A%09%09target%20%3D%20arguments%5B%20i%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09i%2B%2B%3B%0A%09%7D%0A%0A%09//%20Handle%20case%20when%20target%20is%20a%20string%20or%20something%20%28possible%20in%20deep%20copy%29%0A%09if%20%28%20typeof%20target%20%21%3D%3D%20%22object%22%20%26%26%20%21isFunction%28%20target%20%29%20%29%20%7B%0A%09%09target%20%3D%20%7B%7D%3B%0A%09%7D%0A%0A%09//%20Extend%20jQuery%20itself%20if%20only%20one%20argument%20is%20passed%0A%09if%20%28%20i%20%3D%3D%3D%20length%20%29%20%7B%0A%09%09target%20%3D%20this%3B%0A%09%09i--%3B%0A%09%7D%0A%0A%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%0A%09%09//%20Only%20deal%20with%20non-null/undefined%20values%0A%09%09if%20%28%20%28%20options%20%3D%20arguments%5B%20i%20%5D%20%29%20%21%3D%20null%20%29%20%7B%0A%0A%09%09%09//%20Extend%20the%20base%20object%0A%09%09%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09%09%09copy%20%3D%20options%5B%20name%20%5D%3B%0A%0A%09%09%09%09//%20Prevent%20Object.prototype%20pollution%0A%09%09%09%09//%20Prevent%20never-ending%20loop%0A%09%09%09%09if%20%28%20name%20%3D%3D%3D%20%22__proto__%22%20%7C%7C%20target%20%3D%3D%3D%20copy%20%29%20%7B%0A%09%09%09%09%09continue%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Recurse%20if%20we%27re%20merging%20plain%20objects%20or%20arrays%0A%09%09%09%09if%20%28%20deep%20%26%26%20copy%20%26%26%20%28%20jQuery.isPlainObject%28%20copy%20%29%20%7C%7C%0A%09%09%09%09%09%28%20copyIsArray%20%3D%20Array.isArray%28%20copy%20%29%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09src%20%3D%20target%5B%20name%20%5D%3B%0A%0A%09%09%09%09%09//%20Ensure%20proper%20type%20for%20the%20source%20value%0A%09%09%09%09%09if%20%28%20copyIsArray%20%26%26%20%21Array.isArray%28%20src%20%29%20%29%20%7B%0A%09%09%09%09%09%09clone%20%3D%20%5B%5D%3B%0A%09%09%09%09%09%7D%20else%20if%20%28%20%21copyIsArray%20%26%26%20%21jQuery.isPlainObject%28%20src%20%29%20%29%20%7B%0A%09%09%09%09%09%09clone%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09clone%20%3D%20src%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09copyIsArray%20%3D%20false%3B%0A%0A%09%09%09%09%09//%20Never%20move%20original%20objects%2C%20clone%20them%0A%09%09%09%09%09target%5B%20name%20%5D%20%3D%20jQuery.extend%28%20deep%2C%20clone%2C%20copy%20%29%3B%0A%0A%09%09%09%09//%20Don%27t%20bring%20in%20undefined%20values%0A%09%09%09%09%7D%20else%20if%20%28%20copy%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09target%5B%20name%20%5D%20%3D%20copy%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20modified%20object%0A%09return%20target%3B%0A%7D%3B%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Unique%20for%20each%20copy%20of%20jQuery%20on%20the%20page%0A%09expando%3A%20%22jQuery%22%20%2B%20%28%20version%20%2B%20Math.random%28%29%20%29.replace%28%20/%5CD/g%2C%20%22%22%20%29%2C%0A%0A%09//%20Assume%20jQuery%20is%20ready%20without%20the%20ready%20module%0A%09isReady%3A%20true%2C%0A%0A%09error%3A%20function%28%20msg%20%29%20%7B%0A%09%09throw%20new%20Error%28%20msg%20%29%3B%0A%09%7D%2C%0A%0A%09noop%3A%20function%28%29%20%7B%7D%2C%0A%0A%09isPlainObject%3A%20function%28%20obj%20%29%20%7B%0A%09%09var%20proto%2C%20Ctor%3B%0A%0A%09%09//%20Detect%20obvious%20negatives%0A%09%09//%20Use%20toString%20instead%20of%20jQuery.type%20to%20catch%20host%20objects%0A%09%09if%20%28%20%21obj%20%7C%7C%20toString.call%28%20obj%20%29%20%21%3D%3D%20%22%5Bobject%20Object%5D%22%20%29%20%7B%0A%09%09%09return%20false%3B%0A%09%09%7D%0A%0A%09%09proto%20%3D%20getProto%28%20obj%20%29%3B%0A%0A%09%09//%20Objects%20with%20no%20prototype%20%28e.g.%2C%20%60Object.create%28%20null%20%29%60%29%20are%20plain%0A%09%09if%20%28%20%21proto%20%29%20%7B%0A%09%09%09return%20true%3B%0A%09%09%7D%0A%0A%09%09//%20Objects%20with%20prototype%20are%20plain%20iff%20they%20were%20constructed%20by%20a%20global%20Object%20function%0A%09%09Ctor%20%3D%20hasOwn.call%28%20proto%2C%20%22constructor%22%20%29%20%26%26%20proto.constructor%3B%0A%09%09return%20typeof%20Ctor%20%3D%3D%3D%20%22function%22%20%26%26%20fnToString.call%28%20Ctor%20%29%20%3D%3D%3D%20ObjectFunctionString%3B%0A%09%7D%2C%0A%0A%09isEmptyObject%3A%20function%28%20obj%20%29%20%7B%0A%09%09var%20name%3B%0A%0A%09%09for%20%28%20name%20in%20obj%20%29%20%7B%0A%09%09%09return%20false%3B%0A%09%09%7D%0A%09%09return%20true%3B%0A%09%7D%2C%0A%0A%09//%20Evaluates%20a%20script%20in%20a%20provided%20context%3B%20falls%20back%20to%20the%20global%20one%0A%09//%20if%20not%20specified.%0A%09globalEval%3A%20function%28%20code%2C%20options%2C%20doc%20%29%20%7B%0A%09%09DOMEval%28%20code%2C%20%7B%20nonce%3A%20options%20%26%26%20options.nonce%20%7D%2C%20doc%20%29%3B%0A%09%7D%2C%0A%0A%09each%3A%20function%28%20obj%2C%20callback%20%29%20%7B%0A%09%09var%20length%2C%20i%20%3D%200%3B%0A%0A%09%09if%20%28%20isArrayLike%28%20obj%20%29%20%29%20%7B%0A%09%09%09length%20%3D%20obj.length%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20callback.call%28%20obj%5B%20i%20%5D%2C%20i%2C%20obj%5B%20i%20%5D%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28%20i%20in%20obj%20%29%20%7B%0A%09%09%09%09if%20%28%20callback.call%28%20obj%5B%20i%20%5D%2C%20i%2C%20obj%5B%20i%20%5D%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20obj%3B%0A%09%7D%2C%0A%0A%09//%20results%20is%20for%20internal%20usage%20only%0A%09makeArray%3A%20function%28%20arr%2C%20results%20%29%20%7B%0A%09%09var%20ret%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09%09if%20%28%20arr%20%21%3D%20null%20%29%20%7B%0A%09%09%09if%20%28%20isArrayLike%28%20Object%28%20arr%20%29%20%29%20%29%20%7B%0A%09%09%09%09jQuery.merge%28%20ret%2C%0A%09%09%09%09%09typeof%20arr%20%3D%3D%3D%20%22string%22%20%3F%0A%09%09%09%09%09%5B%20arr%20%5D%20%3A%20arr%0A%09%09%09%09%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09push.call%28%20ret%2C%20arr%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20ret%3B%0A%09%7D%2C%0A%0A%09inArray%3A%20function%28%20elem%2C%20arr%2C%20i%20%29%20%7B%0A%09%09return%20arr%20%3D%3D%20null%20%3F%20-1%20%3A%20indexOf.call%28%20arr%2C%20elem%2C%20i%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09merge%3A%20function%28%20first%2C%20second%20%29%20%7B%0A%09%09var%20len%20%3D%20%2Bsecond.length%2C%0A%09%09%09j%20%3D%200%2C%0A%09%09%09i%20%3D%20first.length%3B%0A%0A%09%09for%20%28%20%3B%20j%20%3C%20len%3B%20j%2B%2B%20%29%20%7B%0A%09%09%09first%5B%20i%2B%2B%20%5D%20%3D%20second%5B%20j%20%5D%3B%0A%09%09%7D%0A%0A%09%09first.length%20%3D%20i%3B%0A%0A%09%09return%20first%3B%0A%09%7D%2C%0A%0A%09grep%3A%20function%28%20elems%2C%20callback%2C%20invert%20%29%20%7B%0A%09%09var%20callbackInverse%2C%0A%09%09%09matches%20%3D%20%5B%5D%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09length%20%3D%20elems.length%2C%0A%09%09%09callbackExpect%20%3D%20%21invert%3B%0A%0A%09%09//%20Go%20through%20the%20array%2C%20only%20saving%20the%20items%0A%09%09//%20that%20pass%20the%20validator%20function%0A%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09callbackInverse%20%3D%20%21callback%28%20elems%5B%20i%20%5D%2C%20i%20%29%3B%0A%09%09%09if%20%28%20callbackInverse%20%21%3D%3D%20callbackExpect%20%29%20%7B%0A%09%09%09%09matches.push%28%20elems%5B%20i%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20matches%3B%0A%09%7D%2C%0A%0A%09//%20arg%20is%20for%20internal%20usage%20only%0A%09map%3A%20function%28%20elems%2C%20callback%2C%20arg%20%29%20%7B%0A%09%09var%20length%2C%20value%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09ret%20%3D%20%5B%5D%3B%0A%0A%09%09//%20Go%20through%20the%20array%2C%20translating%20each%20of%20the%20items%20to%20their%20new%20values%0A%09%09if%20%28%20isArrayLike%28%20elems%20%29%20%29%20%7B%0A%09%09%09length%20%3D%20elems.length%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09value%20%3D%20callback%28%20elems%5B%20i%20%5D%2C%20i%2C%20arg%20%29%3B%0A%0A%09%09%09%09if%20%28%20value%20%21%3D%20null%20%29%20%7B%0A%09%09%09%09%09ret.push%28%20value%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Go%20through%20every%20key%20on%20the%20object%2C%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28%20i%20in%20elems%20%29%20%7B%0A%09%09%09%09value%20%3D%20callback%28%20elems%5B%20i%20%5D%2C%20i%2C%20arg%20%29%3B%0A%0A%09%09%09%09if%20%28%20value%20%21%3D%20null%20%29%20%7B%0A%09%09%09%09%09ret.push%28%20value%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Flatten%20any%20nested%20arrays%0A%09%09return%20flat%28%20ret%20%29%3B%0A%09%7D%2C%0A%0A%09//%20A%20global%20GUID%20counter%20for%20objects%0A%09guid%3A%201%2C%0A%0A%09//%20jQuery.support%20is%20not%20used%20in%20Core%20but%20other%20projects%20attach%20their%0A%09//%20properties%20to%20it%20so%20it%20needs%20to%20exist.%0A%09support%3A%20support%0A%7D%20%29%3B%0A%0Aif%20%28%20typeof%20Symbol%20%3D%3D%3D%20%22function%22%20%29%20%7B%0A%09jQuery.fn%5B%20Symbol.iterator%20%5D%20%3D%20arr%5B%20Symbol.iterator%20%5D%3B%0A%7D%0A%0A//%20Populate%20the%20class2type%20map%0AjQuery.each%28%20%22Boolean%20Number%20String%20Function%20Array%20Date%20RegExp%20Object%20Error%20Symbol%22.split%28%20%22%20%22%20%29%2C%0Afunction%28%20_i%2C%20name%20%29%20%7B%0A%09class2type%5B%20%22%5Bobject%20%22%20%2B%20name%20%2B%20%22%5D%22%20%5D%20%3D%20name.toLowerCase%28%29%3B%0A%7D%20%29%3B%0A%0Afunction%20isArrayLike%28%20obj%20%29%20%7B%0A%0A%09//%20Support%3A%20real%20iOS%208.2%20only%20%28not%20reproducible%20in%20simulator%29%0A%09//%20%60in%60%20check%20used%20to%20prevent%20JIT%20error%20%28gh-2145%29%0A%09//%20hasOwn%20isn%27t%20used%20here%20due%20to%20false%20negatives%0A%09//%20regarding%20Nodelist%20length%20in%20IE%0A%09var%20length%20%3D%20%21%21obj%20%26%26%20%22length%22%20in%20obj%20%26%26%20obj.length%2C%0A%09%09type%20%3D%20toType%28%20obj%20%29%3B%0A%0A%09if%20%28%20isFunction%28%20obj%20%29%20%7C%7C%20isWindow%28%20obj%20%29%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%0A%0A%09return%20type%20%3D%3D%3D%20%22array%22%20%7C%7C%20length%20%3D%3D%3D%200%20%7C%7C%0A%09%09typeof%20length%20%3D%3D%3D%20%22number%22%20%26%26%20length%20%3E%200%20%26%26%20%28%20length%20-%201%20%29%20in%20obj%3B%0A%7D%0Avar%20Sizzle%20%3D%0A/%2A%21%0A%20%2A%20Sizzle%20CSS%20Selector%20Engine%20v2.3.5%0A%20%2A%20https%3A//sizzlejs.com/%0A%20%2A%0A%20%2A%20Copyright%20JS%20Foundation%20and%20other%20contributors%0A%20%2A%20Released%20under%20the%20MIT%20license%0A%20%2A%20https%3A//js.foundation/%0A%20%2A%0A%20%2A%20Date%3A%202020-03-14%0A%20%2A/%0A%28%20function%28%20window%20%29%20%7B%0Avar%20i%2C%0A%09support%2C%0A%09Expr%2C%0A%09getText%2C%0A%09isXML%2C%0A%09tokenize%2C%0A%09compile%2C%0A%09select%2C%0A%09outermostContext%2C%0A%09sortInput%2C%0A%09hasDuplicate%2C%0A%0A%09//%20Local%20document%20vars%0A%09setDocument%2C%0A%09document%2C%0A%09docElem%2C%0A%09documentIsHTML%2C%0A%09rbuggyQSA%2C%0A%09rbuggyMatches%2C%0A%09matches%2C%0A%09contains%2C%0A%0A%09//%20Instance-specific%20data%0A%09expando%20%3D%20%22sizzle%22%20%2B%201%20%2A%20new%20Date%28%29%2C%0A%09preferredDoc%20%3D%20window.document%2C%0A%09dirruns%20%3D%200%2C%0A%09done%20%3D%200%2C%0A%09classCache%20%3D%20createCache%28%29%2C%0A%09tokenCache%20%3D%20createCache%28%29%2C%0A%09compilerCache%20%3D%20createCache%28%29%2C%0A%09nonnativeSelectorCache%20%3D%20createCache%28%29%2C%0A%09sortOrder%20%3D%20function%28%20a%2C%20b%20%29%20%7B%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%7D%0A%09%09return%200%3B%0A%09%7D%2C%0A%0A%09//%20Instance%20methods%0A%09hasOwn%20%3D%20%28%20%7B%7D%20%29.hasOwnProperty%2C%0A%09arr%20%3D%20%5B%5D%2C%0A%09pop%20%3D%20arr.pop%2C%0A%09pushNative%20%3D%20arr.push%2C%0A%09push%20%3D%20arr.push%2C%0A%09slice%20%3D%20arr.slice%2C%0A%0A%09//%20Use%20a%20stripped-down%20indexOf%20as%20it%27s%20faster%20than%20native%0A%09//%20https%3A//jsperf.com/thor-indexof-vs-for/5%0A%09indexOf%20%3D%20function%28%20list%2C%20elem%20%29%20%7B%0A%09%09var%20i%20%3D%200%2C%0A%09%09%09len%20%3D%20list.length%3B%0A%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20list%5B%20i%20%5D%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09return%20i%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20-1%3B%0A%09%7D%2C%0A%0A%09booleans%20%3D%20%22checked%7Cselected%7Casync%7Cautofocus%7Cautoplay%7Ccontrols%7Cdefer%7Cdisabled%7Chidden%7C%22%20%2B%0A%09%09%22ismap%7Cloop%7Cmultiple%7Copen%7Creadonly%7Crequired%7Cscoped%22%2C%0A%0A%09//%20Regular%20expressions%0A%0A%09//%20http%3A//www.w3.org/TR/css3-selectors/%23whitespace%0A%09whitespace%20%3D%20%22%5B%5C%5Cx20%5C%5Ct%5C%5Cr%5C%5Cn%5C%5Cf%5D%22%2C%0A%0A%09//%20https%3A//www.w3.org/TR/css-syntax-3/%23ident-token-diagram%0A%09identifier%20%3D%20%22%28%3F%3A%5C%5C%5C%5C%5B%5C%5Cda-fA-F%5D%7B1%2C6%7D%22%20%2B%20whitespace%20%2B%0A%09%09%22%3F%7C%5C%5C%5C%5C%5B%5E%5C%5Cr%5C%5Cn%5C%5Cf%5D%7C%5B%5C%5Cw-%5D%7C%5B%5E%5C0-%5C%5Cx7f%5D%29%2B%22%2C%0A%0A%09//%20Attribute%20selectors%3A%20http%3A//www.w3.org/TR/selectors/%23attribute-selectors%0A%09attributes%20%3D%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2A%28%22%20%2B%20identifier%20%2B%20%22%29%28%3F%3A%22%20%2B%20whitespace%20%2B%0A%0A%09%09//%20Operator%20%28capture%202%29%0A%09%09%22%2A%28%5B%2A%5E%24%7C%21~%5D%3F%3D%29%22%20%2B%20whitespace%20%2B%0A%0A%09%09//%20%22Attribute%20values%20must%20be%20CSS%20identifiers%20%5Bcapture%205%5D%0A%09%09//%20or%20strings%20%5Bcapture%203%20or%20capture%204%5D%22%0A%09%09%22%2A%28%3F%3A%27%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%27%5D%29%2A%29%27%7C%5C%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%5C%22%5D%29%2A%29%5C%22%7C%28%22%20%2B%20identifier%20%2B%20%22%29%29%7C%29%22%20%2B%0A%09%09whitespace%20%2B%20%22%2A%5C%5C%5D%22%2C%0A%0A%09pseudos%20%3D%20%22%3A%28%22%20%2B%20identifier%20%2B%20%22%29%28%3F%3A%5C%5C%28%28%22%20%2B%0A%0A%09%09//%20To%20reduce%20the%20number%20of%20selectors%20needing%20tokenize%20in%20the%20preFilter%2C%20prefer%20arguments%3A%0A%09%09//%201.%20quoted%20%28capture%203%3B%20capture%204%20or%20capture%205%29%0A%09%09%22%28%27%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%27%5D%29%2A%29%27%7C%5C%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%5C%22%5D%29%2A%29%5C%22%29%7C%22%20%2B%0A%0A%09%09//%202.%20simple%20%28capture%206%29%0A%09%09%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%28%29%5B%5C%5C%5D%5D%7C%22%20%2B%20attributes%20%2B%20%22%29%2A%29%7C%22%20%2B%0A%0A%09%09//%203.%20anything%20else%20%28capture%202%29%0A%09%09%22.%2A%22%20%2B%0A%09%09%22%29%5C%5C%29%7C%29%22%2C%0A%0A%09//%20Leading%20and%20non-escaped%20trailing%20whitespace%2C%20capturing%20some%20non-whitespace%20characters%20preceding%20the%20latter%0A%09rwhitespace%20%3D%20new%20RegExp%28%20whitespace%20%2B%20%22%2B%22%2C%20%22g%22%20%29%2C%0A%09rtrim%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2B%7C%28%28%3F%3A%5E%7C%5B%5E%5C%5C%5C%5C%5D%29%28%3F%3A%5C%5C%5C%5C.%29%2A%29%22%20%2B%0A%09%09whitespace%20%2B%20%22%2B%24%22%2C%20%22g%22%20%29%2C%0A%0A%09rcomma%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2A%2C%22%20%2B%20whitespace%20%2B%20%22%2A%22%20%29%2C%0A%09rcombinators%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2A%28%5B%3E%2B~%5D%7C%22%20%2B%20whitespace%20%2B%20%22%29%22%20%2B%20whitespace%20%2B%0A%09%09%22%2A%22%20%29%2C%0A%09rdescend%20%3D%20new%20RegExp%28%20whitespace%20%2B%20%22%7C%3E%22%20%29%2C%0A%0A%09rpseudo%20%3D%20new%20RegExp%28%20pseudos%20%29%2C%0A%09ridentifier%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20identifier%20%2B%20%22%24%22%20%29%2C%0A%0A%09matchExpr%20%3D%20%7B%0A%09%09%22ID%22%3A%20new%20RegExp%28%20%22%5E%23%28%22%20%2B%20identifier%20%2B%20%22%29%22%20%29%2C%0A%09%09%22CLASS%22%3A%20new%20RegExp%28%20%22%5E%5C%5C.%28%22%20%2B%20identifier%20%2B%20%22%29%22%20%29%2C%0A%09%09%22TAG%22%3A%20new%20RegExp%28%20%22%5E%28%22%20%2B%20identifier%20%2B%20%22%7C%5B%2A%5D%29%22%20%29%2C%0A%09%09%22ATTR%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20attributes%20%29%2C%0A%09%09%22PSEUDO%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20pseudos%20%29%2C%0A%09%09%22CHILD%22%3A%20new%20RegExp%28%20%22%5E%3A%28only%7Cfirst%7Clast%7Cnth%7Cnth-last%29-%28child%7Cof-type%29%28%3F%3A%5C%5C%28%22%20%2B%0A%09%09%09whitespace%20%2B%20%22%2A%28even%7Codd%7C%28%28%5B%2B-%5D%7C%29%28%5C%5Cd%2A%29n%7C%29%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3A%28%5B%2B-%5D%7C%29%22%20%2B%0A%09%09%09whitespace%20%2B%20%22%2A%28%5C%5Cd%2B%29%7C%29%29%22%20%2B%20whitespace%20%2B%20%22%2A%5C%5C%29%7C%29%22%2C%20%22i%22%20%29%2C%0A%09%09%22bool%22%3A%20new%20RegExp%28%20%22%5E%28%3F%3A%22%20%2B%20booleans%20%2B%20%22%29%24%22%2C%20%22i%22%20%29%2C%0A%0A%09%09//%20For%20use%20in%20libraries%20implementing%20.is%28%29%0A%09%09//%20We%20use%20this%20for%20POS%20matching%20in%20%60select%60%0A%09%09%22needsContext%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%0A%09%09%09%22%2A%5B%3E%2B~%5D%7C%3A%28even%7Codd%7Ceq%7Cgt%7Clt%7Cnth%7Cfirst%7Clast%29%28%3F%3A%5C%5C%28%22%20%2B%20whitespace%20%2B%0A%09%09%09%22%2A%28%28%3F%3A-%5C%5Cd%29%3F%5C%5Cd%2A%29%22%20%2B%20whitespace%20%2B%20%22%2A%5C%5C%29%7C%29%28%3F%3D%5B%5E-%5D%7C%24%29%22%2C%20%22i%22%20%29%0A%09%7D%2C%0A%0A%09rhtml%20%3D%20/HTML%24/i%2C%0A%09rinputs%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Cbutton%29%24/i%2C%0A%09rheader%20%3D%20/%5Eh%5Cd%24/i%2C%0A%0A%09rnative%20%3D%20/%5E%5B%5E%7B%5D%2B%5C%7B%5Cs%2A%5C%5Bnative%20%5Cw/%2C%0A%0A%09//%20Easily-parseable/retrievable%20ID%20or%20TAG%20or%20CLASS%20selectors%0A%09rquickExpr%20%3D%20/%5E%28%3F%3A%23%28%5B%5Cw-%5D%2B%29%7C%28%5Cw%2B%29%7C%5C.%28%5B%5Cw-%5D%2B%29%29%24/%2C%0A%0A%09rsibling%20%3D%20/%5B%2B~%5D/%2C%0A%0A%09//%20CSS%20escapes%0A%09//%20http%3A//www.w3.org/TR/CSS21/syndata.html%23escaped-characters%0A%09runescape%20%3D%20new%20RegExp%28%20%22%5C%5C%5C%5C%5B%5C%5Cda-fA-F%5D%7B1%2C6%7D%22%20%2B%20whitespace%20%2B%20%22%3F%7C%5C%5C%5C%5C%28%5B%5E%5C%5Cr%5C%5Cn%5C%5Cf%5D%29%22%2C%20%22g%22%20%29%2C%0A%09funescape%20%3D%20function%28%20escape%2C%20nonHex%20%29%20%7B%0A%09%09var%20high%20%3D%20%220x%22%20%2B%20escape.slice%28%201%20%29%20-%200x10000%3B%0A%0A%09%09return%20nonHex%20%3F%0A%0A%09%09%09//%20Strip%20the%20backslash%20prefix%20from%20a%20non-hex%20escape%20sequence%0A%09%09%09nonHex%20%3A%0A%0A%09%09%09//%20Replace%20a%20hexadecimal%20escape%20sequence%20with%20the%20encoded%20Unicode%20code%20point%0A%09%09%09//%20Support%3A%20IE%20%3C%3D11%2B%0A%09%09%09//%20For%20values%20outside%20the%20Basic%20Multilingual%20Plane%20%28BMP%29%2C%20manually%20construct%20a%0A%09%09%09//%20surrogate%20pair%0A%09%09%09high%20%3C%200%20%3F%0A%09%09%09%09String.fromCharCode%28%20high%20%2B%200x10000%20%29%20%3A%0A%09%09%09%09String.fromCharCode%28%20high%20%3E%3E%2010%20%7C%200xD800%2C%20high%20%26%200x3FF%20%7C%200xDC00%20%29%3B%0A%09%7D%2C%0A%0A%09//%20CSS%20string/identifier%20serialization%0A%09//%20https%3A//drafts.csswg.org/cssom/%23common-serializing-idioms%0A%09rcssescape%20%3D%20/%28%5B%5C0-%5Cx1f%5Cx7f%5D%7C%5E-%3F%5Cd%29%7C%5E-%24%7C%5B%5E%5C0-%5Cx1f%5Cx7f-%5CuFFFF%5Cw-%5D/g%2C%0A%09fcssescape%20%3D%20function%28%20ch%2C%20asCodePoint%20%29%20%7B%0A%09%09if%20%28%20asCodePoint%20%29%20%7B%0A%0A%09%09%09//%20U%2B0000%20NULL%20becomes%20U%2BFFFD%20REPLACEMENT%20CHARACTER%0A%09%09%09if%20%28%20ch%20%3D%3D%3D%20%22%5C0%22%20%29%20%7B%0A%09%09%09%09return%20%22%5CuFFFD%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Control%20characters%20and%20%28dependent%20upon%20position%29%20numbers%20get%20escaped%20as%20code%20points%0A%09%09%09return%20ch.slice%28%200%2C%20-1%20%29%20%2B%20%22%5C%5C%22%20%2B%0A%09%09%09%09ch.charCodeAt%28%20ch.length%20-%201%20%29.toString%28%2016%20%29%20%2B%20%22%20%22%3B%0A%09%09%7D%0A%0A%09%09//%20Other%20potentially-special%20ASCII%20characters%20get%20backslash-escaped%0A%09%09return%20%22%5C%5C%22%20%2B%20ch%3B%0A%09%7D%2C%0A%0A%09//%20Used%20for%20iframes%0A%09//%20See%20setDocument%28%29%0A%09//%20Removing%20the%20function%20wrapper%20causes%20a%20%22Permission%20Denied%22%0A%09//%20error%20in%20IE%0A%09unloadHandler%20%3D%20function%28%29%20%7B%0A%09%09setDocument%28%29%3B%0A%09%7D%2C%0A%0A%09inDisabledFieldset%20%3D%20addCombinator%28%0A%09%09function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20true%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22fieldset%22%3B%0A%09%09%7D%2C%0A%09%09%7B%20dir%3A%20%22parentNode%22%2C%20next%3A%20%22legend%22%20%7D%0A%09%29%3B%0A%0A//%20Optimize%20for%20push.apply%28%20_%2C%20NodeList%20%29%0Atry%20%7B%0A%09push.apply%28%0A%09%09%28%20arr%20%3D%20slice.call%28%20preferredDoc.childNodes%20%29%20%29%2C%0A%09%09preferredDoc.childNodes%0A%09%29%3B%0A%0A%09//%20Support%3A%20Android%3C4.0%0A%09//%20Detect%20silently%20failing%20push.apply%0A%09//%20eslint-disable-next-line%20no-unused-expressions%0A%09arr%5B%20preferredDoc.childNodes.length%20%5D.nodeType%3B%0A%7D%20catch%20%28%20e%20%29%20%7B%0A%09push%20%3D%20%7B%20apply%3A%20arr.length%20%3F%0A%0A%09%09//%20Leverage%20slice%20if%20possible%0A%09%09function%28%20target%2C%20els%20%29%20%7B%0A%09%09%09pushNative.apply%28%20target%2C%20slice.call%28%20els%20%29%20%29%3B%0A%09%09%7D%20%3A%0A%0A%09%09//%20Support%3A%20IE%3C9%0A%09%09//%20Otherwise%20append%20directly%0A%09%09function%28%20target%2C%20els%20%29%20%7B%0A%09%09%09var%20j%20%3D%20target.length%2C%0A%09%09%09%09i%20%3D%200%3B%0A%0A%09%09%09//%20Can%27t%20trust%20NodeList.length%0A%09%09%09while%20%28%20%28%20target%5B%20j%2B%2B%20%5D%20%3D%20els%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%7D%0A%09%09%09target.length%20%3D%20j%20-%201%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0Afunction%20Sizzle%28%20selector%2C%20context%2C%20results%2C%20seed%20%29%20%7B%0A%09var%20m%2C%20i%2C%20elem%2C%20nid%2C%20match%2C%20groups%2C%20newSelector%2C%0A%09%09newContext%20%3D%20context%20%26%26%20context.ownerDocument%2C%0A%0A%09%09//%20nodeType%20defaults%20to%209%2C%20since%20context%20defaults%20to%20document%0A%09%09nodeType%20%3D%20context%20%3F%20context.nodeType%20%3A%209%3B%0A%0A%09results%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09//%20Return%20early%20from%20calls%20with%20invalid%20selector%20or%20context%0A%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%7C%7C%20%21selector%20%7C%7C%0A%09%09nodeType%20%21%3D%3D%201%20%26%26%20nodeType%20%21%3D%3D%209%20%26%26%20nodeType%20%21%3D%3D%2011%20%29%20%7B%0A%0A%09%09return%20results%3B%0A%09%7D%0A%0A%09//%20Try%20to%20shortcut%20find%20operations%20%28as%20opposed%20to%20filters%29%20in%20HTML%20documents%0A%09if%20%28%20%21seed%20%29%20%7B%0A%09%09setDocument%28%20context%20%29%3B%0A%09%09context%20%3D%20context%20%7C%7C%20document%3B%0A%0A%09%09if%20%28%20documentIsHTML%20%29%20%7B%0A%0A%09%09%09//%20If%20the%20selector%20is%20sufficiently%20simple%2C%20try%20using%20a%20%22get%2ABy%2A%22%20DOM%20method%0A%09%09%09//%20%28excepting%20DocumentFragment%20context%2C%20where%20the%20methods%20don%27t%20exist%29%0A%09%09%09if%20%28%20nodeType%20%21%3D%3D%2011%20%26%26%20%28%20match%20%3D%20rquickExpr.exec%28%20selector%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20ID%20selector%0A%09%09%09%09if%20%28%20%28%20m%20%3D%20match%5B%201%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Document%20context%0A%09%09%09%09%09if%20%28%20nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20context.getElementById%28%20m%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20IE%2C%20Opera%2C%20Webkit%0A%09%09%09%09%09%09%09//%20TODO%3A%20identify%20versions%0A%09%09%09%09%09%09%09//%20getElementById%20can%20match%20elements%20by%20name%20instead%20of%20ID%0A%09%09%09%09%09%09%09if%20%28%20elem.id%20%3D%3D%3D%20m%20%29%20%7B%0A%09%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Element%20context%0A%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%2C%20Opera%2C%20Webkit%0A%09%09%09%09%09%09//%20TODO%3A%20identify%20versions%0A%09%09%09%09%09%09//%20getElementById%20can%20match%20elements%20by%20name%20instead%20of%20ID%0A%09%09%09%09%09%09if%20%28%20newContext%20%26%26%20%28%20elem%20%3D%20newContext.getElementById%28%20m%20%29%20%29%20%26%26%0A%09%09%09%09%09%09%09contains%28%20context%2C%20elem%20%29%20%26%26%0A%09%09%09%09%09%09%09elem.id%20%3D%3D%3D%20m%20%29%20%7B%0A%0A%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09//%20Type%20selector%0A%09%09%09%09%7D%20else%20if%20%28%20match%5B%202%20%5D%20%29%20%7B%0A%09%09%09%09%09push.apply%28%20results%2C%20context.getElementsByTagName%28%20selector%20%29%20%29%3B%0A%09%09%09%09%09return%20results%3B%0A%0A%09%09%09%09//%20Class%20selector%0A%09%09%09%09%7D%20else%20if%20%28%20%28%20m%20%3D%20match%5B%203%20%5D%20%29%20%26%26%20support.getElementsByClassName%20%26%26%0A%09%09%09%09%09context.getElementsByClassName%20%29%20%7B%0A%0A%09%09%09%09%09push.apply%28%20results%2C%20context.getElementsByClassName%28%20m%20%29%20%29%3B%0A%09%09%09%09%09return%20results%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Take%20advantage%20of%20querySelectorAll%0A%09%09%09if%20%28%20support.qsa%20%26%26%0A%09%09%09%09%21nonnativeSelectorCache%5B%20selector%20%2B%20%22%20%22%20%5D%20%26%26%0A%09%09%09%09%28%20%21rbuggyQSA%20%7C%7C%20%21rbuggyQSA.test%28%20selector%20%29%20%29%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20IE%208%20only%0A%09%09%09%09//%20Exclude%20object%20elements%0A%09%09%09%09%28%20nodeType%20%21%3D%3D%201%20%7C%7C%20context.nodeName.toLowerCase%28%29%20%21%3D%3D%20%22object%22%20%29%20%29%20%7B%0A%0A%09%09%09%09newSelector%20%3D%20selector%3B%0A%09%09%09%09newContext%20%3D%20context%3B%0A%0A%09%09%09%09//%20qSA%20considers%20elements%20outside%20a%20scoping%20root%20when%20evaluating%20child%20or%0A%09%09%09%09//%20descendant%20combinators%2C%20which%20is%20not%20what%20we%20want.%0A%09%09%09%09//%20In%20such%20cases%2C%20we%20work%20around%20the%20behavior%20by%20prefixing%20every%20selector%20in%20the%0A%09%09%09%09//%20list%20with%20an%20ID%20selector%20referencing%20the%20scope%20context.%0A%09%09%09%09//%20The%20technique%20has%20to%20be%20used%20as%20well%20when%20a%20leading%20combinator%20is%20used%0A%09%09%09%09//%20as%20such%20selectors%20are%20not%20recognized%20by%20querySelectorAll.%0A%09%09%09%09//%20Thanks%20to%20Andrew%20Dupont%20for%20this%20technique.%0A%09%09%09%09if%20%28%20nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%09%28%20rdescend.test%28%20selector%20%29%20%7C%7C%20rcombinators.test%28%20selector%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Expand%20context%20for%20sibling%20selectors%0A%09%09%09%09%09newContext%20%3D%20rsibling.test%28%20selector%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%0A%09%09%09%09%09%09context%3B%0A%0A%09%09%09%09%09//%20We%20can%20use%20%3Ascope%20instead%20of%20the%20ID%20hack%20if%20the%20browser%0A%09%09%09%09%09//%20supports%20it%20%26%20if%20we%27re%20not%20changing%20the%20context.%0A%09%09%09%09%09if%20%28%20newContext%20%21%3D%3D%20context%20%7C%7C%20%21support.scope%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Capture%20the%20context%20ID%2C%20setting%20it%20first%20if%20necessary%0A%09%09%09%09%09%09if%20%28%20%28%20nid%20%3D%20context.getAttribute%28%20%22id%22%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09nid%20%3D%20nid.replace%28%20rcssescape%2C%20fcssescape%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09context.setAttribute%28%20%22id%22%2C%20%28%20nid%20%3D%20expando%20%29%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Prefix%20every%20selector%20in%20the%20list%0A%09%09%09%09%09groups%20%3D%20tokenize%28%20selector%20%29%3B%0A%09%09%09%09%09i%20%3D%20groups.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09groups%5B%20i%20%5D%20%3D%20%28%20nid%20%3F%20%22%23%22%20%2B%20nid%20%3A%20%22%3Ascope%22%20%29%20%2B%20%22%20%22%20%2B%0A%09%09%09%09%09%09%09toSelector%28%20groups%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09newSelector%20%3D%20groups.join%28%20%22%2C%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09push.apply%28%20results%2C%0A%09%09%09%09%09%09newContext.querySelectorAll%28%20newSelector%20%29%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%09return%20results%3B%0A%09%09%09%09%7D%20catch%20%28%20qsaError%20%29%20%7B%0A%09%09%09%09%09nonnativeSelectorCache%28%20selector%2C%20true%20%29%3B%0A%09%09%09%09%7D%20finally%20%7B%0A%09%09%09%09%09if%20%28%20nid%20%3D%3D%3D%20expando%20%29%20%7B%0A%09%09%09%09%09%09context.removeAttribute%28%20%22id%22%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20All%20others%0A%09return%20select%28%20selector.replace%28%20rtrim%2C%20%22%241%22%20%29%2C%20context%2C%20results%2C%20seed%20%29%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Create%20key-value%20caches%20of%20limited%20size%0A%20%2A%20%40returns%20%7Bfunction%28string%2C%20object%29%7D%20Returns%20the%20Object%20data%20after%20storing%20it%20on%20itself%20with%0A%20%2A%09property%20name%20the%20%28space-suffixed%29%20string%20and%20%28if%20the%20cache%20is%20larger%20than%20Expr.cacheLength%29%0A%20%2A%09deleting%20the%20oldest%20entry%0A%20%2A/%0Afunction%20createCache%28%29%20%7B%0A%09var%20keys%20%3D%20%5B%5D%3B%0A%0A%09function%20cache%28%20key%2C%20value%20%29%20%7B%0A%0A%09%09//%20Use%20%28key%20%2B%20%22%20%22%29%20to%20avoid%20collision%20with%20native%20prototype%20properties%20%28see%20Issue%20%23157%29%0A%09%09if%20%28%20keys.push%28%20key%20%2B%20%22%20%22%20%29%20%3E%20Expr.cacheLength%20%29%20%7B%0A%0A%09%09%09//%20Only%20keep%20the%20most%20recent%20entries%0A%09%09%09delete%20cache%5B%20keys.shift%28%29%20%5D%3B%0A%09%09%7D%0A%09%09return%20%28%20cache%5B%20key%20%2B%20%22%20%22%20%5D%20%3D%20value%20%29%3B%0A%09%7D%0A%09return%20cache%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Mark%20a%20function%20for%20special%20use%20by%20Sizzle%0A%20%2A%20%40param%20%7BFunction%7D%20fn%20The%20function%20to%20mark%0A%20%2A/%0Afunction%20markFunction%28%20fn%20%29%20%7B%0A%09fn%5B%20expando%20%5D%20%3D%20true%3B%0A%09return%20fn%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Support%20testing%20using%20an%20element%0A%20%2A%20%40param%20%7BFunction%7D%20fn%20Passed%20the%20created%20element%20and%20returns%20a%20boolean%20result%0A%20%2A/%0Afunction%20assert%28%20fn%20%29%20%7B%0A%09var%20el%20%3D%20document.createElement%28%20%22fieldset%22%20%29%3B%0A%0A%09try%20%7B%0A%09%09return%20%21%21fn%28%20el%20%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%20finally%20%7B%0A%0A%09%09//%20Remove%20from%20its%20parent%20by%20default%0A%09%09if%20%28%20el.parentNode%20%29%20%7B%0A%09%09%09el.parentNode.removeChild%28%20el%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20release%20memory%20in%20IE%0A%09%09el%20%3D%20null%3B%0A%09%7D%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Adds%20the%20same%20handler%20for%20all%20of%20the%20specified%20attrs%0A%20%2A%20%40param%20%7BString%7D%20attrs%20Pipe-separated%20list%20of%20attributes%0A%20%2A%20%40param%20%7BFunction%7D%20handler%20The%20method%20that%20will%20be%20applied%0A%20%2A/%0Afunction%20addHandle%28%20attrs%2C%20handler%20%29%20%7B%0A%09var%20arr%20%3D%20attrs.split%28%20%22%7C%22%20%29%2C%0A%09%09i%20%3D%20arr.length%3B%0A%0A%09while%20%28%20i--%20%29%20%7B%0A%09%09Expr.attrHandle%5B%20arr%5B%20i%20%5D%20%5D%20%3D%20handler%3B%0A%09%7D%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Checks%20document%20order%20of%20two%20siblings%0A%20%2A%20%40param%20%7BElement%7D%20a%0A%20%2A%20%40param%20%7BElement%7D%20b%0A%20%2A%20%40returns%20%7BNumber%7D%20Returns%20less%20than%200%20if%20a%20precedes%20b%2C%20greater%20than%200%20if%20a%20follows%20b%0A%20%2A/%0Afunction%20siblingCheck%28%20a%2C%20b%20%29%20%7B%0A%09var%20cur%20%3D%20b%20%26%26%20a%2C%0A%09%09diff%20%3D%20cur%20%26%26%20a.nodeType%20%3D%3D%3D%201%20%26%26%20b.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09a.sourceIndex%20-%20b.sourceIndex%3B%0A%0A%09//%20Use%20IE%20sourceIndex%20if%20available%20on%20both%20nodes%0A%09if%20%28%20diff%20%29%20%7B%0A%09%09return%20diff%3B%0A%09%7D%0A%0A%09//%20Check%20if%20b%20follows%20a%0A%09if%20%28%20cur%20%29%20%7B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.nextSibling%20%29%20%29%20%7B%0A%09%09%09if%20%28%20cur%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20a%20%3F%201%20%3A%20-1%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20input%20types%0A%20%2A%20%40param%20%7BString%7D%20type%0A%20%2A/%0Afunction%20createInputPseudo%28%20type%20%29%20%7B%0A%09return%20function%28%20elem%20%29%20%7B%0A%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09return%20name%20%3D%3D%3D%20%22input%22%20%26%26%20elem.type%20%3D%3D%3D%20type%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20buttons%0A%20%2A%20%40param%20%7BString%7D%20type%0A%20%2A/%0Afunction%20createButtonPseudo%28%20type%20%29%20%7B%0A%09return%20function%28%20elem%20%29%20%7B%0A%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09return%20%28%20name%20%3D%3D%3D%20%22input%22%20%7C%7C%20name%20%3D%3D%3D%20%22button%22%20%29%20%26%26%20elem.type%20%3D%3D%3D%20type%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20%3Aenabled/%3Adisabled%0A%20%2A%20%40param%20%7BBoolean%7D%20disabled%20true%20for%20%3Adisabled%3B%20false%20for%20%3Aenabled%0A%20%2A/%0Afunction%20createDisabledPseudo%28%20disabled%20%29%20%7B%0A%0A%09//%20Known%20%3Adisabled%20false%20positives%3A%20fieldset%5Bdisabled%5D%20%3E%20legend%3Anth-of-type%28n%2B2%29%20%3Acan-disable%0A%09return%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20Only%20certain%20elements%20can%20match%20%3Aenabled%20or%20%3Adisabled%0A%09%09//%20https%3A//html.spec.whatwg.org/multipage/scripting.html%23selector-enabled%0A%09%09//%20https%3A//html.spec.whatwg.org/multipage/scripting.html%23selector-disabled%0A%09%09if%20%28%20%22form%22%20in%20elem%20%29%20%7B%0A%0A%09%09%09//%20Check%20for%20inherited%20disabledness%20on%20relevant%20non-disabled%20elements%3A%0A%09%09%09//%20%2A%20listed%20form-associated%20elements%20in%20a%20disabled%20fieldset%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23category-listed%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23concept-fe-disabled%0A%09%09%09//%20%2A%20option%20elements%20in%20a%20disabled%20optgroup%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23concept-option-disabled%0A%09%09%09//%20All%20such%20elements%20have%20a%20%22form%22%20property.%0A%09%09%09if%20%28%20elem.parentNode%20%26%26%20elem.disabled%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09//%20Option%20elements%20defer%20to%20a%20parent%20optgroup%20if%20present%0A%09%09%09%09if%20%28%20%22label%22%20in%20elem%20%29%20%7B%0A%09%09%09%09%09if%20%28%20%22label%22%20in%20elem.parentNode%20%29%20%7B%0A%09%09%09%09%09%09return%20elem.parentNode.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Support%3A%20IE%206%20-%2011%0A%09%09%09%09//%20Use%20the%20isDisabled%20shortcut%20property%20to%20check%20for%20disabled%20fieldset%20ancestors%0A%09%09%09%09return%20elem.isDisabled%20%3D%3D%3D%20disabled%20%7C%7C%0A%0A%09%09%09%09%09//%20Where%20there%20is%20no%20isDisabled%2C%20check%20manually%0A%09%09%09%09%09/%2A%20jshint%20-W018%20%2A/%0A%09%09%09%09%09elem.isDisabled%20%21%3D%3D%20%21disabled%20%26%26%0A%09%09%09%09%09inDisabledFieldset%28%20elem%20%29%20%3D%3D%3D%20disabled%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%0A%09%09//%20Try%20to%20winnow%20out%20elements%20that%20can%27t%20be%20disabled%20before%20trusting%20the%20disabled%20property.%0A%09%09//%20Some%20victims%20get%20caught%20in%20our%20net%20%28label%2C%20legend%2C%20menu%2C%20track%29%2C%20but%20it%20shouldn%27t%0A%09%09//%20even%20exist%20on%20them%2C%20let%20alone%20have%20a%20boolean%20value.%0A%09%09%7D%20else%20if%20%28%20%22label%22%20in%20elem%20%29%20%7B%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%7D%0A%0A%09%09//%20Remaining%20elements%20are%20neither%20%3Aenabled%20nor%20%3Adisabled%0A%09%09return%20false%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20positionals%0A%20%2A%20%40param%20%7BFunction%7D%20fn%0A%20%2A/%0Afunction%20createPositionalPseudo%28%20fn%20%29%20%7B%0A%09return%20markFunction%28%20function%28%20argument%20%29%20%7B%0A%09%09argument%20%3D%20%2Bargument%3B%0A%09%09return%20markFunction%28%20function%28%20seed%2C%20matches%20%29%20%7B%0A%09%09%09var%20j%2C%0A%09%09%09%09matchIndexes%20%3D%20fn%28%20%5B%5D%2C%20seed.length%2C%20argument%20%29%2C%0A%09%09%09%09i%20%3D%20matchIndexes.length%3B%0A%0A%09%09%09//%20Match%20elements%20found%20at%20the%20specified%20indexes%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20seed%5B%20%28%20j%20%3D%20matchIndexes%5B%20i%20%5D%20%29%20%5D%20%29%20%7B%0A%09%09%09%09%09seed%5B%20j%20%5D%20%3D%20%21%28%20matches%5B%20j%20%5D%20%3D%20seed%5B%20j%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Checks%20a%20node%20for%20validity%20as%20a%20Sizzle%20context%0A%20%2A%20%40param%20%7BElement%7CObject%3D%7D%20context%0A%20%2A%20%40returns%20%7BElement%7CObject%7CBoolean%7D%20The%20input%20node%20if%20acceptable%2C%20otherwise%20a%20falsy%20value%0A%20%2A/%0Afunction%20testContext%28%20context%20%29%20%7B%0A%09return%20context%20%26%26%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%26%26%20context%3B%0A%7D%0A%0A//%20Expose%20support%20vars%20for%20convenience%0Asupport%20%3D%20Sizzle.support%20%3D%20%7B%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Detects%20XML%20nodes%0A%20%2A%20%40param%20%7BElement%7CObject%7D%20elem%20An%20element%20or%20a%20document%0A%20%2A%20%40returns%20%7BBoolean%7D%20True%20iff%20elem%20is%20a%20non-HTML%20XML%20node%0A%20%2A/%0AisXML%20%3D%20Sizzle.isXML%20%3D%20function%28%20elem%20%29%20%7B%0A%09var%20namespace%20%3D%20elem.namespaceURI%2C%0A%09%09docElem%20%3D%20%28%20elem.ownerDocument%20%7C%7C%20elem%20%29.documentElement%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D8%0A%09//%20Assume%20HTML%20when%20documentElement%20doesn%27t%20yet%20exist%2C%20such%20as%20inside%20loading%20iframes%0A%09//%20https%3A//bugs.jquery.com/ticket/4833%0A%09return%20%21rhtml.test%28%20namespace%20%7C%7C%20docElem%20%26%26%20docElem.nodeName%20%7C%7C%20%22HTML%22%20%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Sets%20document-related%20variables%20once%20based%20on%20the%20current%20document%0A%20%2A%20%40param%20%7BElement%7CObject%7D%20%5Bdoc%5D%20An%20element%20or%20document%20object%20to%20use%20to%20set%20the%20document%0A%20%2A%20%40returns%20%7BObject%7D%20Returns%20the%20current%20document%0A%20%2A/%0AsetDocument%20%3D%20Sizzle.setDocument%20%3D%20function%28%20node%20%29%20%7B%0A%09var%20hasCompare%2C%20subWindow%2C%0A%09%09doc%20%3D%20node%20%3F%20node.ownerDocument%20%7C%7C%20node%20%3A%20preferredDoc%3B%0A%0A%09//%20Return%20early%20if%20doc%20is%20invalid%20or%20already%20selected%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20doc%20%3D%3D%20document%20%7C%7C%20doc.nodeType%20%21%3D%3D%209%20%7C%7C%20%21doc.documentElement%20%29%20%7B%0A%09%09return%20document%3B%0A%09%7D%0A%0A%09//%20Update%20global%20variables%0A%09document%20%3D%20doc%3B%0A%09docElem%20%3D%20document.documentElement%3B%0A%09documentIsHTML%20%3D%20%21isXML%28%20document%20%29%3B%0A%0A%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%0A%09//%20Accessing%20iframe%20documents%20after%20unload%20throws%20%22permission%20denied%22%20errors%20%28jQuery%20%2313936%29%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20preferredDoc%20%21%3D%20document%20%26%26%0A%09%09%28%20subWindow%20%3D%20document.defaultView%20%29%20%26%26%20subWindow.top%20%21%3D%3D%20subWindow%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%2011%2C%20Edge%0A%09%09if%20%28%20subWindow.addEventListener%20%29%20%7B%0A%09%09%09subWindow.addEventListener%28%20%22unload%22%2C%20unloadHandler%2C%20false%20%29%3B%0A%0A%09%09//%20Support%3A%20IE%209%20-%2010%20only%0A%09%09%7D%20else%20if%20%28%20subWindow.attachEvent%20%29%20%7B%0A%09%09%09subWindow.attachEvent%28%20%22onunload%22%2C%20unloadHandler%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Support%3A%20IE%208%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%2C%20Chrome%20%3C%3D16%20-%2025%20only%2C%20Firefox%20%3C%3D3.6%20-%2031%20only%2C%0A%09//%20Safari%204%20-%205%20only%2C%20Opera%20%3C%3D11.6%20-%2012.x%20only%0A%09//%20IE/Edge%20%26%20older%20browsers%20don%27t%20support%20the%20%3Ascope%20pseudo-class.%0A%09//%20Support%3A%20Safari%206.0%20only%0A%09//%20Safari%206.0%20supports%20%3Ascope%20but%20it%27s%20an%20alias%20of%20%3Aroot%20there.%0A%09support.scope%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09docElem.appendChild%28%20el%20%29.appendChild%28%20document.createElement%28%20%22div%22%20%29%20%29%3B%0A%09%09return%20typeof%20el.querySelectorAll%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%21el.querySelectorAll%28%20%22%3Ascope%20fieldset%20div%22%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09/%2A%20Attributes%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Support%3A%20IE%3C8%0A%09//%20Verify%20that%20getAttribute%20really%20returns%20attributes%20and%20not%20properties%0A%09//%20%28excepting%20IE8%20booleans%29%0A%09support.attributes%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09el.className%20%3D%20%22i%22%3B%0A%09%09return%20%21el.getAttribute%28%20%22className%22%20%29%3B%0A%09%7D%20%29%3B%0A%0A%09/%2A%20getElement%28s%29By%2A%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Check%20if%20getElementsByTagName%28%22%2A%22%29%20returns%20only%20elements%0A%09support.getElementsByTagName%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09el.appendChild%28%20document.createComment%28%20%22%22%20%29%20%29%3B%0A%09%09return%20%21el.getElementsByTagName%28%20%22%2A%22%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09//%20Support%3A%20IE%3C9%0A%09support.getElementsByClassName%20%3D%20rnative.test%28%20document.getElementsByClassName%20%29%3B%0A%0A%09//%20Support%3A%20IE%3C10%0A%09//%20Check%20if%20getElementById%20returns%20elements%20by%20name%0A%09//%20The%20broken%20getElementById%20methods%20don%27t%20pick%20up%20programmatically-set%20names%2C%0A%09//%20so%20use%20a%20roundabout%20getElementsByName%20test%0A%09support.getById%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09docElem.appendChild%28%20el%20%29.id%20%3D%20expando%3B%0A%09%09return%20%21document.getElementsByName%20%7C%7C%20%21document.getElementsByName%28%20expando%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09//%20ID%20filter%20and%20find%0A%09if%20%28%20support.getById%20%29%20%7B%0A%09%09Expr.filter%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%20%29%20%7B%0A%09%09%09var%20attrId%20%3D%20id.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20elem.getAttribute%28%20%22id%22%20%29%20%3D%3D%3D%20attrId%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%0A%09%09Expr.find%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementById%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09%09var%20elem%20%3D%20context.getElementById%28%20id%20%29%3B%0A%09%09%09%09return%20elem%20%3F%20%5B%20elem%20%5D%20%3A%20%5B%5D%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%20else%20%7B%0A%09%09Expr.filter%5B%20%22ID%22%20%5D%20%3D%20%20function%28%20id%20%29%20%7B%0A%09%09%09var%20attrId%20%3D%20id.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20node%20%3D%20typeof%20elem.getAttributeNode%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%09%09elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09return%20node%20%26%26%20node.value%20%3D%3D%3D%20attrId%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Support%3A%20IE%206%20-%207%20only%0A%09%09//%20getElementById%20is%20not%20reliable%20as%20a%20find%20shortcut%0A%09%09Expr.find%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementById%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09%09var%20node%2C%20i%2C%20elems%2C%0A%09%09%09%09%09elem%20%3D%20context.getElementById%28%20id%20%29%3B%0A%0A%09%09%09%09if%20%28%20elem%20%29%20%7B%0A%0A%09%09%09%09%09//%20Verify%20the%20id%20attribute%0A%09%09%09%09%09node%20%3D%20elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09%09if%20%28%20node%20%26%26%20node.value%20%3D%3D%3D%20id%20%29%20%7B%0A%09%09%09%09%09%09return%20%5B%20elem%20%5D%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Fall%20back%20on%20getElementsByName%0A%09%09%09%09%09elems%20%3D%20context.getElementsByName%28%20id%20%29%3B%0A%09%09%09%09%09i%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20elem%20%3D%20elems%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09node%20%3D%20elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09%09%09if%20%28%20node%20%26%26%20node.value%20%3D%3D%3D%20id%20%29%20%7B%0A%09%09%09%09%09%09%09return%20%5B%20elem%20%5D%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20%5B%5D%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%0A%09//%20Tag%0A%09Expr.find%5B%20%22TAG%22%20%5D%20%3D%20support.getElementsByTagName%20%3F%0A%09%09function%28%20tag%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09%09%09return%20context.getElementsByTagName%28%20tag%20%29%3B%0A%0A%09%09%09//%20DocumentFragment%20nodes%20don%27t%20have%20gEBTN%0A%09%09%09%7D%20else%20if%20%28%20support.qsa%20%29%20%7B%0A%09%09%09%09return%20context.querySelectorAll%28%20tag%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%3A%0A%0A%09%09function%28%20tag%2C%20context%20%29%20%7B%0A%09%09%09var%20elem%2C%0A%09%09%09%09tmp%20%3D%20%5B%5D%2C%0A%09%09%09%09i%20%3D%200%2C%0A%0A%09%09%09%09//%20By%20happy%20coincidence%2C%20a%20%28broken%29%20gEBTN%20appears%20on%20DocumentFragment%20nodes%20too%0A%09%09%09%09results%20%3D%20context.getElementsByTagName%28%20tag%20%29%3B%0A%0A%09%09%09//%20Filter%20out%20possible%20comments%0A%09%09%09if%20%28%20tag%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20results%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09%09%09tmp.push%28%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20tmp%3B%0A%09%09%09%7D%0A%09%09%09return%20results%3B%0A%09%09%7D%3B%0A%0A%09//%20Class%0A%09Expr.find%5B%20%22CLASS%22%20%5D%20%3D%20support.getElementsByClassName%20%26%26%20function%28%20className%2C%20context%20%29%20%7B%0A%09%09if%20%28%20typeof%20context.getElementsByClassName%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09return%20context.getElementsByClassName%28%20className%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09/%2A%20QSA/matchesSelector%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20QSA%20and%20matchesSelector%20support%0A%0A%09//%20matchesSelector%28%3Aactive%29%20reports%20false%20when%20true%20%28IE9/Opera%2011.5%29%0A%09rbuggyMatches%20%3D%20%5B%5D%3B%0A%0A%09//%20qSa%28%3Afocus%29%20reports%20false%20when%20true%20%28Chrome%2021%29%0A%09//%20We%20allow%20this%20because%20of%20a%20bug%20in%20IE8/9%20that%20throws%20an%20error%0A%09//%20whenever%20%60document.activeElement%60%20is%20accessed%20on%20an%20iframe%0A%09//%20So%2C%20we%20allow%20%3Afocus%20to%20pass%20through%20QSA%20all%20the%20time%20to%20avoid%20the%20IE%20error%0A%09//%20See%20https%3A//bugs.jquery.com/ticket/13378%0A%09rbuggyQSA%20%3D%20%5B%5D%3B%0A%0A%09if%20%28%20%28%20support.qsa%20%3D%20rnative.test%28%20document.querySelectorAll%20%29%20%29%20%29%20%7B%0A%0A%09%09//%20Build%20QSA%20regex%0A%09%09//%20Regex%20strategy%20adopted%20from%20Diego%20Perini%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%0A%09%09%09var%20input%3B%0A%0A%09%09%09//%20Select%20is%20set%20to%20empty%20string%20on%20purpose%0A%09%09%09//%20This%20is%20to%20test%20IE%27s%20treatment%20of%20not%20explicitly%0A%09%09%09//%20setting%20a%20boolean%20content%20attribute%2C%0A%09%09%09//%20since%20its%20presence%20should%20be%20enough%0A%09%09%09//%20https%3A//bugs.jquery.com/ticket/12359%0A%09%09%09docElem.appendChild%28%20el%20%29.innerHTML%20%3D%20%22%3Ca%20id%3D%27%22%20%2B%20expando%20%2B%20%22%27%3E%3C/a%3E%22%20%2B%0A%09%09%09%09%22%3Cselect%20id%3D%27%22%20%2B%20expando%20%2B%20%22-%5Cr%5C%5C%27%20msallowcapture%3D%27%27%3E%22%20%2B%0A%09%09%09%09%22%3Coption%20selected%3D%27%27%3E%3C/option%3E%3C/select%3E%22%3B%0A%0A%09%09%09//%20Support%3A%20IE8%2C%20Opera%2011-12.16%0A%09%09%09//%20Nothing%20should%20be%20selected%20when%20empty%20strings%20follow%20%5E%3D%20or%20%24%3D%20or%20%2A%3D%0A%09%09%09//%20The%20test%20attribute%20must%20be%20unknown%20in%20Opera%20but%20%22safe%22%20for%20WinRT%0A%09%09%09//%20https%3A//msdn.microsoft.com/en-us/library/ie/hh465388.aspx%23attribute_section%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%5Bmsallowcapture%5E%3D%27%27%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5B%2A%5E%24%5D%3D%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3A%27%27%7C%5C%22%5C%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE8%0A%09%09%09//%20Boolean%20attributes%20and%20%22value%22%20are%20not%20treated%20correctly%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bselected%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3Avalue%7C%22%20%2B%20booleans%20%2B%20%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Chrome%3C29%2C%20Android%3C4.4%2C%20Safari%3C7.0%2B%2C%20iOS%3C7.0%2B%2C%20PhantomJS%3C1.9.8%2B%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bid~%3D%22%20%2B%20expando%20%2B%20%22-%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22~%3D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09%09//%20IE%2011/Edge%20don%27t%20find%20elements%20on%20a%20%60%5Bname%3D%27%27%5D%60%20query%20in%20some%20cases.%0A%09%09%09//%20Adding%20a%20temporary%20attribute%20to%20the%20document%20before%20the%20selection%20works%0A%09%09%09//%20around%20the%20issue.%0A%09%09%09//%20Interestingly%2C%20IE%2010%20%26%20older%20don%27t%20seem%20to%20have%20the%20issue.%0A%09%09%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09%09%09input.setAttribute%28%20%22name%22%2C%20%22%22%20%29%3B%0A%09%09%09el.appendChild%28%20input%20%29%3B%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bname%3D%27%27%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2Aname%22%20%2B%20whitespace%20%2B%20%22%2A%3D%22%20%2B%0A%09%09%09%09%09whitespace%20%2B%20%22%2A%28%3F%3A%27%27%7C%5C%22%5C%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Webkit/Opera%20-%20%3Achecked%20should%20return%20selected%20option%20elements%0A%09%09%09//%20http%3A//www.w3.org/TR/2011/REC-css3-selectors-20110929/%23checked%0A%09%09%09//%20IE8%20throws%20error%20here%20and%20will%20not%20see%20later%20tests%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%3Achecked%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Achecked%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Safari%208%2B%2C%20iOS%208%2B%0A%09%09%09//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D136851%0A%09%09%09//%20In-page%20%60selector%23id%20sibling-combinator%20selector%60%20fails%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22a%23%22%20%2B%20expando%20%2B%20%22%2B%2A%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22.%23.%2B%5B%2B~%5D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D3.6%20-%205%20only%0A%09%09%09//%20Old%20Firefox%20doesn%27t%20throw%20on%20a%20badly-escaped%20identifier.%0A%09%09%09el.querySelectorAll%28%20%22%5C%5C%5Cf%22%20%29%3B%0A%09%09%09rbuggyQSA.push%28%20%22%5B%5C%5Cr%5C%5Cn%5C%5Cf%5D%22%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%09%09%09el.innerHTML%20%3D%20%22%3Ca%20href%3D%27%27%20disabled%3D%27disabled%27%3E%3C/a%3E%22%20%2B%0A%09%09%09%09%22%3Cselect%20disabled%3D%27disabled%27%3E%3Coption/%3E%3C/select%3E%22%3B%0A%0A%09%09%09//%20Support%3A%20Windows%208%20Native%20Apps%0A%09%09%09//%20The%20type%20and%20name%20attributes%20are%20restricted%20during%20.innerHTML%20assignment%0A%09%09%09var%20input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09%09%09input.setAttribute%28%20%22type%22%2C%20%22hidden%22%20%29%3B%0A%09%09%09el.appendChild%28%20input%20%29.setAttribute%28%20%22name%22%2C%20%22D%22%20%29%3B%0A%0A%09%09%09//%20Support%3A%20IE8%0A%09%09%09//%20Enforce%20case-sensitivity%20of%20name%20attribute%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%5Bname%3Dd%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22name%22%20%2B%20whitespace%20%2B%20%22%2A%5B%2A%5E%24%7C%21~%5D%3F%3D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20FF%203.5%20-%20%3Aenabled/%3Adisabled%20and%20hidden%20elements%20%28hidden%20elements%20are%20still%20enabled%29%0A%09%09%09//%20IE8%20throws%20error%20here%20and%20will%20not%20see%20later%20tests%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%3Aenabled%22%20%29.length%20%21%3D%3D%202%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Aenabled%22%2C%20%22%3Adisabled%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE9-11%2B%0A%09%09%09//%20IE%27s%20%3Adisabled%20selector%20does%20not%20pick%20up%20the%20children%20of%20disabled%20fieldsets%0A%09%09%09docElem.appendChild%28%20el%20%29.disabled%20%3D%20true%3B%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%3Adisabled%22%20%29.length%20%21%3D%3D%202%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Aenabled%22%2C%20%22%3Adisabled%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Opera%2010%20-%2011%20only%0A%09%09%09//%20Opera%2010-11%20does%20not%20throw%20on%20post-comma%20invalid%20pseudos%0A%09%09%09el.querySelectorAll%28%20%22%2A%2C%3Ax%22%20%29%3B%0A%09%09%09rbuggyQSA.push%28%20%22%2C.%2A%3A%22%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09if%20%28%20%28%20support.matchesSelector%20%3D%20rnative.test%28%20%28%20matches%20%3D%20docElem.matches%20%7C%7C%0A%09%09docElem.webkitMatchesSelector%20%7C%7C%0A%09%09docElem.mozMatchesSelector%20%7C%7C%0A%09%09docElem.oMatchesSelector%20%7C%7C%0A%09%09docElem.msMatchesSelector%20%29%20%29%20%29%20%29%20%7B%0A%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%0A%09%09%09//%20Check%20to%20see%20if%20it%27s%20possible%20to%20do%20matchesSelector%0A%09%09%09//%20on%20a%20disconnected%20node%20%28IE%209%29%0A%09%09%09support.disconnectedMatch%20%3D%20matches.call%28%20el%2C%20%22%2A%22%20%29%3B%0A%0A%09%09%09//%20This%20should%20fail%20with%20an%20exception%0A%09%09%09//%20Gecko%20does%20not%20error%2C%20returns%20false%20instead%0A%09%09%09matches.call%28%20el%2C%20%22%5Bs%21%3D%27%27%5D%3Ax%22%20%29%3B%0A%09%09%09rbuggyMatches.push%28%20%22%21%3D%22%2C%20pseudos%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09rbuggyQSA%20%3D%20rbuggyQSA.length%20%26%26%20new%20RegExp%28%20rbuggyQSA.join%28%20%22%7C%22%20%29%20%29%3B%0A%09rbuggyMatches%20%3D%20rbuggyMatches.length%20%26%26%20new%20RegExp%28%20rbuggyMatches.join%28%20%22%7C%22%20%29%20%29%3B%0A%0A%09/%2A%20Contains%0A%09----------------------------------------------------------------------%20%2A/%0A%09hasCompare%20%3D%20rnative.test%28%20docElem.compareDocumentPosition%20%29%3B%0A%0A%09//%20Element%20contains%20another%0A%09//%20Purposefully%20self-exclusive%0A%09//%20As%20in%2C%20an%20element%20does%20not%20contain%20itself%0A%09contains%20%3D%20hasCompare%20%7C%7C%20rnative.test%28%20docElem.contains%20%29%20%3F%0A%09%09function%28%20a%2C%20b%20%29%20%7B%0A%09%09%09var%20adown%20%3D%20a.nodeType%20%3D%3D%3D%209%20%3F%20a.documentElement%20%3A%20a%2C%0A%09%09%09%09bup%20%3D%20b%20%26%26%20b.parentNode%3B%0A%09%09%09return%20a%20%3D%3D%3D%20bup%20%7C%7C%20%21%21%28%20bup%20%26%26%20bup.nodeType%20%3D%3D%3D%201%20%26%26%20%28%0A%09%09%09%09adown.contains%20%3F%0A%09%09%09%09%09adown.contains%28%20bup%20%29%20%3A%0A%09%09%09%09%09a.compareDocumentPosition%20%26%26%20a.compareDocumentPosition%28%20bup%20%29%20%26%2016%0A%09%09%09%29%20%29%3B%0A%09%09%7D%20%3A%0A%09%09function%28%20a%2C%20b%20%29%20%7B%0A%09%09%09if%20%28%20b%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20b%20%3D%20b.parentNode%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20b%20%3D%3D%3D%20a%20%29%20%7B%0A%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%3B%0A%0A%09/%2A%20Sorting%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Document%20order%20sorting%0A%09sortOrder%20%3D%20hasCompare%20%3F%0A%09function%28%20a%2C%20b%20%29%20%7B%0A%0A%09%09//%20Flag%20for%20duplicate%20removal%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09//%20Sort%20on%20method%20existence%20if%20only%20one%20input%20has%20compareDocumentPosition%0A%09%09var%20compare%20%3D%20%21a.compareDocumentPosition%20-%20%21b.compareDocumentPosition%3B%0A%09%09if%20%28%20compare%20%29%20%7B%0A%09%09%09return%20compare%3B%0A%09%09%7D%0A%0A%09%09//%20Calculate%20position%20if%20both%20inputs%20belong%20to%20the%20same%20document%0A%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09compare%20%3D%20%28%20a.ownerDocument%20%7C%7C%20a%20%29%20%3D%3D%20%28%20b.ownerDocument%20%7C%7C%20b%20%29%20%3F%0A%09%09%09a.compareDocumentPosition%28%20b%20%29%20%3A%0A%0A%09%09%09//%20Otherwise%20we%20know%20they%20are%20disconnected%0A%09%09%091%3B%0A%0A%09%09//%20Disconnected%20nodes%0A%09%09if%20%28%20compare%20%26%201%20%7C%7C%0A%09%09%09%28%20%21support.sortDetached%20%26%26%20b.compareDocumentPosition%28%20a%20%29%20%3D%3D%3D%20compare%20%29%20%29%20%7B%0A%0A%09%09%09//%20Choose%20the%20first%20element%20that%20is%20related%20to%20our%20preferred%20document%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09if%20%28%20a%20%3D%3D%20document%20%7C%7C%20a.ownerDocument%20%3D%3D%20preferredDoc%20%26%26%0A%09%09%09%09contains%28%20preferredDoc%2C%20a%20%29%20%29%20%7B%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09if%20%28%20b%20%3D%3D%20document%20%7C%7C%20b.ownerDocument%20%3D%3D%20preferredDoc%20%26%26%0A%09%09%09%09contains%28%20preferredDoc%2C%20b%20%29%20%29%20%7B%0A%09%09%09%09return%201%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Maintain%20original%20order%0A%09%09%09return%20sortInput%20%3F%0A%09%09%09%09%28%20indexOf%28%20sortInput%2C%20a%20%29%20-%20indexOf%28%20sortInput%2C%20b%20%29%20%29%20%3A%0A%09%09%09%090%3B%0A%09%09%7D%0A%0A%09%09return%20compare%20%26%204%20%3F%20-1%20%3A%201%3B%0A%09%7D%20%3A%0A%09function%28%20a%2C%20b%20%29%20%7B%0A%0A%09%09//%20Exit%20early%20if%20the%20nodes%20are%20identical%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09var%20cur%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09aup%20%3D%20a.parentNode%2C%0A%09%09%09bup%20%3D%20b.parentNode%2C%0A%09%09%09ap%20%3D%20%5B%20a%20%5D%2C%0A%09%09%09bp%20%3D%20%5B%20b%20%5D%3B%0A%0A%09%09//%20Parentless%20nodes%20are%20either%20documents%20or%20disconnected%0A%09%09if%20%28%20%21aup%20%7C%7C%20%21bup%20%29%20%7B%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09/%2A%20eslint-disable%20eqeqeq%20%2A/%0A%09%09%09return%20a%20%3D%3D%20document%20%3F%20-1%20%3A%0A%09%09%09%09b%20%3D%3D%20document%20%3F%201%20%3A%0A%09%09%09%09/%2A%20eslint-enable%20eqeqeq%20%2A/%0A%09%09%09%09aup%20%3F%20-1%20%3A%0A%09%09%09%09bup%20%3F%201%20%3A%0A%09%09%09%09sortInput%20%3F%0A%09%09%09%09%28%20indexOf%28%20sortInput%2C%20a%20%29%20-%20indexOf%28%20sortInput%2C%20b%20%29%20%29%20%3A%0A%09%09%09%090%3B%0A%0A%09%09//%20If%20the%20nodes%20are%20siblings%2C%20we%20can%20do%20a%20quick%20check%0A%09%09%7D%20else%20if%20%28%20aup%20%3D%3D%3D%20bup%20%29%20%7B%0A%09%09%09return%20siblingCheck%28%20a%2C%20b%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Otherwise%20we%20need%20full%20lists%20of%20their%20ancestors%20for%20comparison%0A%09%09cur%20%3D%20a%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.parentNode%20%29%20%29%20%7B%0A%09%09%09ap.unshift%28%20cur%20%29%3B%0A%09%09%7D%0A%09%09cur%20%3D%20b%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.parentNode%20%29%20%29%20%7B%0A%09%09%09bp.unshift%28%20cur%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Walk%20down%20the%20tree%20looking%20for%20a%20discrepancy%0A%09%09while%20%28%20ap%5B%20i%20%5D%20%3D%3D%3D%20bp%5B%20i%20%5D%20%29%20%7B%0A%09%09%09i%2B%2B%3B%0A%09%09%7D%0A%0A%09%09return%20i%20%3F%0A%0A%09%09%09//%20Do%20a%20sibling%20check%20if%20the%20nodes%20have%20a%20common%20ancestor%0A%09%09%09siblingCheck%28%20ap%5B%20i%20%5D%2C%20bp%5B%20i%20%5D%20%29%20%3A%0A%0A%09%09%09//%20Otherwise%20nodes%20in%20our%20document%20sort%20first%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09/%2A%20eslint-disable%20eqeqeq%20%2A/%0A%09%09%09ap%5B%20i%20%5D%20%3D%3D%20preferredDoc%20%3F%20-1%20%3A%0A%09%09%09bp%5B%20i%20%5D%20%3D%3D%20preferredDoc%20%3F%201%20%3A%0A%09%09%09/%2A%20eslint-enable%20eqeqeq%20%2A/%0A%09%09%090%3B%0A%09%7D%3B%0A%0A%09return%20document%3B%0A%7D%3B%0A%0ASizzle.matches%20%3D%20function%28%20expr%2C%20elements%20%29%20%7B%0A%09return%20Sizzle%28%20expr%2C%20null%2C%20null%2C%20elements%20%29%3B%0A%7D%3B%0A%0ASizzle.matchesSelector%20%3D%20function%28%20elem%2C%20expr%20%29%20%7B%0A%09setDocument%28%20elem%20%29%3B%0A%0A%09if%20%28%20support.matchesSelector%20%26%26%20documentIsHTML%20%26%26%0A%09%09%21nonnativeSelectorCache%5B%20expr%20%2B%20%22%20%22%20%5D%20%26%26%0A%09%09%28%20%21rbuggyMatches%20%7C%7C%20%21rbuggyMatches.test%28%20expr%20%29%20%29%20%26%26%0A%09%09%28%20%21rbuggyQSA%20%20%20%20%20%7C%7C%20%21rbuggyQSA.test%28%20expr%20%29%20%29%20%29%20%7B%0A%0A%09%09try%20%7B%0A%09%09%09var%20ret%20%3D%20matches.call%28%20elem%2C%20expr%20%29%3B%0A%0A%09%09%09//%20IE%209%27s%20matchesSelector%20returns%20false%20on%20disconnected%20nodes%0A%09%09%09if%20%28%20ret%20%7C%7C%20support.disconnectedMatch%20%7C%7C%0A%0A%09%09%09%09//%20As%20well%2C%20disconnected%20nodes%20are%20said%20to%20be%20in%20a%20document%0A%09%09%09%09//%20fragment%20in%20IE%209%0A%09%09%09%09elem.document%20%26%26%20elem.document.nodeType%20%21%3D%3D%2011%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09%09nonnativeSelectorCache%28%20expr%2C%20true%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20Sizzle%28%20expr%2C%20document%2C%20null%2C%20%5B%20elem%20%5D%20%29.length%20%3E%200%3B%0A%7D%3B%0A%0ASizzle.contains%20%3D%20function%28%20context%2C%20elem%20%29%20%7B%0A%0A%09//%20Set%20document%20vars%20if%20needed%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20%28%20context.ownerDocument%20%7C%7C%20context%20%29%20%21%3D%20document%20%29%20%7B%0A%09%09setDocument%28%20context%20%29%3B%0A%09%7D%0A%09return%20contains%28%20context%2C%20elem%20%29%3B%0A%7D%3B%0A%0ASizzle.attr%20%3D%20function%28%20elem%2C%20name%20%29%20%7B%0A%0A%09//%20Set%20document%20vars%20if%20needed%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20%28%20elem.ownerDocument%20%7C%7C%20elem%20%29%20%21%3D%20document%20%29%20%7B%0A%09%09setDocument%28%20elem%20%29%3B%0A%09%7D%0A%0A%09var%20fn%20%3D%20Expr.attrHandle%5B%20name.toLowerCase%28%29%20%5D%2C%0A%0A%09%09//%20Don%27t%20get%20fooled%20by%20Object.prototype%20properties%20%28jQuery%20%2313807%29%0A%09%09val%20%3D%20fn%20%26%26%20hasOwn.call%28%20Expr.attrHandle%2C%20name.toLowerCase%28%29%20%29%20%3F%0A%09%09%09fn%28%20elem%2C%20name%2C%20%21documentIsHTML%20%29%20%3A%0A%09%09%09undefined%3B%0A%0A%09return%20val%20%21%3D%3D%20undefined%20%3F%0A%09%09val%20%3A%0A%09%09support.attributes%20%7C%7C%20%21documentIsHTML%20%3F%0A%09%09%09elem.getAttribute%28%20name%20%29%20%3A%0A%09%09%09%28%20val%20%3D%20elem.getAttributeNode%28%20name%20%29%20%29%20%26%26%20val.specified%20%3F%0A%09%09%09%09val.value%20%3A%0A%09%09%09%09null%3B%0A%7D%3B%0A%0ASizzle.escape%20%3D%20function%28%20sel%20%29%20%7B%0A%09return%20%28%20sel%20%2B%20%22%22%20%29.replace%28%20rcssescape%2C%20fcssescape%20%29%3B%0A%7D%3B%0A%0ASizzle.error%20%3D%20function%28%20msg%20%29%20%7B%0A%09throw%20new%20Error%28%20%22Syntax%20error%2C%20unrecognized%20expression%3A%20%22%20%2B%20msg%20%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Document%20sorting%20and%20removing%20duplicates%0A%20%2A%20%40param%20%7BArrayLike%7D%20results%0A%20%2A/%0ASizzle.uniqueSort%20%3D%20function%28%20results%20%29%20%7B%0A%09var%20elem%2C%0A%09%09duplicates%20%3D%20%5B%5D%2C%0A%09%09j%20%3D%200%2C%0A%09%09i%20%3D%200%3B%0A%0A%09//%20Unless%20we%20%2Aknow%2A%20we%20can%20detect%20duplicates%2C%20assume%20their%20presence%0A%09hasDuplicate%20%3D%20%21support.detectDuplicates%3B%0A%09sortInput%20%3D%20%21support.sortStable%20%26%26%20results.slice%28%200%20%29%3B%0A%09results.sort%28%20sortOrder%20%29%3B%0A%0A%09if%20%28%20hasDuplicate%20%29%20%7B%0A%09%09while%20%28%20%28%20elem%20%3D%20results%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20elem%20%3D%3D%3D%20results%5B%20i%20%5D%20%29%20%7B%0A%09%09%09%09j%20%3D%20duplicates.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09results.splice%28%20duplicates%5B%20j%20%5D%2C%201%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Clear%20input%20after%20sorting%20to%20release%20objects%0A%09//%20See%20https%3A//github.com/jquery/sizzle/pull/225%0A%09sortInput%20%3D%20null%3B%0A%0A%09return%20results%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Utility%20function%20for%20retrieving%20the%20text%20value%20of%20an%20array%20of%20DOM%20nodes%0A%20%2A%20%40param%20%7BArray%7CElement%7D%20elem%0A%20%2A/%0AgetText%20%3D%20Sizzle.getText%20%3D%20function%28%20elem%20%29%20%7B%0A%09var%20node%2C%0A%09%09ret%20%3D%20%22%22%2C%0A%09%09i%20%3D%200%2C%0A%09%09nodeType%20%3D%20elem.nodeType%3B%0A%0A%09if%20%28%20%21nodeType%20%29%20%7B%0A%0A%09%09//%20If%20no%20nodeType%2C%20this%20is%20expected%20to%20be%20an%20array%0A%09%09while%20%28%20%28%20node%20%3D%20elem%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09//%20Do%20not%20traverse%20comment%20nodes%0A%09%09%09ret%20%2B%3D%20getText%28%20node%20%29%3B%0A%09%09%7D%0A%09%7D%20else%20if%20%28%20nodeType%20%3D%3D%3D%201%20%7C%7C%20nodeType%20%3D%3D%3D%209%20%7C%7C%20nodeType%20%3D%3D%3D%2011%20%29%20%7B%0A%0A%09%09//%20Use%20textContent%20for%20elements%0A%09%09//%20innerText%20usage%20removed%20for%20consistency%20of%20new%20lines%20%28jQuery%20%2311153%29%0A%09%09if%20%28%20typeof%20elem.textContent%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20elem.textContent%3B%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Traverse%20its%20children%0A%09%09%09for%20%28%20elem%20%3D%20elem.firstChild%3B%20elem%3B%20elem%20%3D%20elem.nextSibling%20%29%20%7B%0A%09%09%09%09ret%20%2B%3D%20getText%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20else%20if%20%28%20nodeType%20%3D%3D%3D%203%20%7C%7C%20nodeType%20%3D%3D%3D%204%20%29%20%7B%0A%09%09return%20elem.nodeValue%3B%0A%09%7D%0A%0A%09//%20Do%20not%20include%20comment%20or%20processing%20instruction%20nodes%0A%0A%09return%20ret%3B%0A%7D%3B%0A%0AExpr%20%3D%20Sizzle.selectors%20%3D%20%7B%0A%0A%09//%20Can%20be%20adjusted%20by%20the%20user%0A%09cacheLength%3A%2050%2C%0A%0A%09createPseudo%3A%20markFunction%2C%0A%0A%09match%3A%20matchExpr%2C%0A%0A%09attrHandle%3A%20%7B%7D%2C%0A%0A%09find%3A%20%7B%7D%2C%0A%0A%09relative%3A%20%7B%0A%09%09%22%3E%22%3A%20%7B%20dir%3A%20%22parentNode%22%2C%20first%3A%20true%20%7D%2C%0A%09%09%22%20%22%3A%20%7B%20dir%3A%20%22parentNode%22%20%7D%2C%0A%09%09%22%2B%22%3A%20%7B%20dir%3A%20%22previousSibling%22%2C%20first%3A%20true%20%7D%2C%0A%09%09%22~%22%3A%20%7B%20dir%3A%20%22previousSibling%22%20%7D%0A%09%7D%2C%0A%0A%09preFilter%3A%20%7B%0A%09%09%22ATTR%22%3A%20function%28%20match%20%29%20%7B%0A%09%09%09match%5B%201%20%5D%20%3D%20match%5B%201%20%5D.replace%28%20runescape%2C%20funescape%20%29%3B%0A%0A%09%09%09//%20Move%20the%20given%20value%20to%20match%5B3%5D%20whether%20quoted%20or%20unquoted%0A%09%09%09match%5B%203%20%5D%20%3D%20%28%20match%5B%203%20%5D%20%7C%7C%20match%5B%204%20%5D%20%7C%7C%0A%09%09%09%09match%5B%205%20%5D%20%7C%7C%20%22%22%20%29.replace%28%20runescape%2C%20funescape%20%29%3B%0A%0A%09%09%09if%20%28%20match%5B%202%20%5D%20%3D%3D%3D%20%22~%3D%22%20%29%20%7B%0A%09%09%09%09match%5B%203%20%5D%20%3D%20%22%20%22%20%2B%20match%5B%203%20%5D%20%2B%20%22%20%22%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20match.slice%28%200%2C%204%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22CHILD%22%3A%20function%28%20match%20%29%20%7B%0A%0A%09%09%09/%2A%20matches%20from%20matchExpr%5B%22CHILD%22%5D%0A%09%09%09%091%20type%20%28only%7Cnth%7C...%29%0A%09%09%09%092%20what%20%28child%7Cof-type%29%0A%09%09%09%093%20argument%20%28even%7Codd%7C%5Cd%2A%7C%5Cd%2An%28%5B%2B-%5D%5Cd%2B%29%3F%7C...%29%0A%09%09%09%094%20xn-component%20of%20xn%2By%20argument%20%28%5B%2B-%5D%3F%5Cd%2An%7C%29%0A%09%09%09%095%20sign%20of%20xn-component%0A%09%09%09%096%20x%20of%20xn-component%0A%09%09%09%097%20sign%20of%20y-component%0A%09%09%09%098%20y%20of%20y-component%0A%09%09%09%2A/%0A%09%09%09match%5B%201%20%5D%20%3D%20match%5B%201%20%5D.toLowerCase%28%29%3B%0A%0A%09%09%09if%20%28%20match%5B%201%20%5D.slice%28%200%2C%203%20%29%20%3D%3D%3D%20%22nth%22%20%29%20%7B%0A%0A%09%09%09%09//%20nth-%2A%20requires%20argument%0A%09%09%09%09if%20%28%20%21match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09%09Sizzle.error%28%20match%5B%200%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20numeric%20x%20and%20y%20parameters%20for%20Expr.filter.CHILD%0A%09%09%09%09//%20remember%20that%20false/true%20cast%20respectively%20to%200/1%0A%09%09%09%09match%5B%204%20%5D%20%3D%20%2B%28%20match%5B%204%20%5D%20%3F%0A%09%09%09%09%09match%5B%205%20%5D%20%2B%20%28%20match%5B%206%20%5D%20%7C%7C%201%20%29%20%3A%0A%09%09%09%09%092%20%2A%20%28%20match%5B%203%20%5D%20%3D%3D%3D%20%22even%22%20%7C%7C%20match%5B%203%20%5D%20%3D%3D%3D%20%22odd%22%20%29%20%29%3B%0A%09%09%09%09match%5B%205%20%5D%20%3D%20%2B%28%20%28%20match%5B%207%20%5D%20%2B%20match%5B%208%20%5D%20%29%20%7C%7C%20match%5B%203%20%5D%20%3D%3D%3D%20%22odd%22%20%29%3B%0A%0A%09%09%09%09//%20other%20types%20prohibit%20arguments%0A%09%09%09%7D%20else%20if%20%28%20match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09Sizzle.error%28%20match%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20match%3B%0A%09%09%7D%2C%0A%0A%09%09%22PSEUDO%22%3A%20function%28%20match%20%29%20%7B%0A%09%09%09var%20excess%2C%0A%09%09%09%09unquoted%20%3D%20%21match%5B%206%20%5D%20%26%26%20match%5B%202%20%5D%3B%0A%0A%09%09%09if%20%28%20matchExpr%5B%20%22CHILD%22%20%5D.test%28%20match%5B%200%20%5D%20%29%20%29%20%7B%0A%09%09%09%09return%20null%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Accept%20quoted%20arguments%20as-is%0A%09%09%09if%20%28%20match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09match%5B%202%20%5D%20%3D%20match%5B%204%20%5D%20%7C%7C%20match%5B%205%20%5D%20%7C%7C%20%22%22%3B%0A%0A%09%09%09//%20Strip%20excess%20characters%20from%20unquoted%20arguments%0A%09%09%09%7D%20else%20if%20%28%20unquoted%20%26%26%20rpseudo.test%28%20unquoted%20%29%20%26%26%0A%0A%09%09%09%09//%20Get%20excess%20from%20tokenize%20%28recursively%29%0A%09%09%09%09%28%20excess%20%3D%20tokenize%28%20unquoted%2C%20true%20%29%20%29%20%26%26%0A%0A%09%09%09%09//%20advance%20to%20the%20next%20closing%20parenthesis%0A%09%09%09%09%28%20excess%20%3D%20unquoted.indexOf%28%20%22%29%22%2C%20unquoted.length%20-%20excess%20%29%20-%20unquoted.length%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20excess%20is%20a%20negative%20index%0A%09%09%09%09match%5B%200%20%5D%20%3D%20match%5B%200%20%5D.slice%28%200%2C%20excess%20%29%3B%0A%09%09%09%09match%5B%202%20%5D%20%3D%20unquoted.slice%28%200%2C%20excess%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Return%20only%20captures%20needed%20by%20the%20pseudo%20filter%20method%20%28type%20and%20argument%29%0A%09%09%09return%20match.slice%28%200%2C%203%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09filter%3A%20%7B%0A%0A%09%09%22TAG%22%3A%20function%28%20nodeNameSelector%20%29%20%7B%0A%09%09%09var%20nodeName%20%3D%20nodeNameSelector.replace%28%20runescape%2C%20funescape%20%29.toLowerCase%28%29%3B%0A%09%09%09return%20nodeNameSelector%20%3D%3D%3D%20%22%2A%22%20%3F%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%20%3A%0A%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09return%20elem.nodeName%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20nodeName%3B%0A%09%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22CLASS%22%3A%20function%28%20className%20%29%20%7B%0A%09%09%09var%20pattern%20%3D%20classCache%5B%20className%20%2B%20%22%20%22%20%5D%3B%0A%0A%09%09%09return%20pattern%20%7C%7C%0A%09%09%09%09%28%20pattern%20%3D%20new%20RegExp%28%20%22%28%5E%7C%22%20%2B%20whitespace%20%2B%0A%09%09%09%09%09%22%29%22%20%2B%20className%20%2B%20%22%28%22%20%2B%20whitespace%20%2B%20%22%7C%24%29%22%20%29%20%29%20%26%26%20classCache%28%0A%09%09%09%09%09%09className%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09return%20pattern.test%28%0A%09%09%09%09%09%09%09%09typeof%20elem.className%20%3D%3D%3D%20%22string%22%20%26%26%20elem.className%20%7C%7C%0A%09%09%09%09%09%09%09%09typeof%20elem.getAttribute%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%09%09%09%09%09%09elem.getAttribute%28%20%22class%22%20%29%20%7C%7C%0A%09%09%09%09%09%09%09%09%22%22%0A%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22ATTR%22%3A%20function%28%20name%2C%20operator%2C%20check%20%29%20%7B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20result%20%3D%20Sizzle.attr%28%20elem%2C%20name%20%29%3B%0A%0A%09%09%09%09if%20%28%20result%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09return%20operator%20%3D%3D%3D%20%22%21%3D%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28%20%21operator%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09result%20%2B%3D%20%22%22%3B%0A%0A%09%09%09%09/%2A%20eslint-disable%20max-len%20%2A/%0A%0A%09%09%09%09return%20operator%20%3D%3D%3D%20%22%3D%22%20%3F%20result%20%3D%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%21%3D%22%20%3F%20result%20%21%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%5E%3D%22%20%3F%20check%20%26%26%20result.indexOf%28%20check%20%29%20%3D%3D%3D%200%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%2A%3D%22%20%3F%20check%20%26%26%20result.indexOf%28%20check%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%24%3D%22%20%3F%20check%20%26%26%20result.slice%28%20-check.length%20%29%20%3D%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22~%3D%22%20%3F%20%28%20%22%20%22%20%2B%20result.replace%28%20rwhitespace%2C%20%22%20%22%20%29%20%2B%20%22%20%22%20%29.indexOf%28%20check%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%7C%3D%22%20%3F%20result%20%3D%3D%3D%20check%20%7C%7C%20result.slice%28%200%2C%20check.length%20%2B%201%20%29%20%3D%3D%3D%20check%20%2B%20%22-%22%20%3A%0A%09%09%09%09%09false%3B%0A%09%09%09%09/%2A%20eslint-enable%20max-len%20%2A/%0A%0A%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22CHILD%22%3A%20function%28%20type%2C%20what%2C%20_argument%2C%20first%2C%20last%20%29%20%7B%0A%09%09%09var%20simple%20%3D%20type.slice%28%200%2C%203%20%29%20%21%3D%3D%20%22nth%22%2C%0A%09%09%09%09forward%20%3D%20type.slice%28%20-4%20%29%20%21%3D%3D%20%22last%22%2C%0A%09%09%09%09ofType%20%3D%20what%20%3D%3D%3D%20%22of-type%22%3B%0A%0A%09%09%09return%20first%20%3D%3D%3D%201%20%26%26%20last%20%3D%3D%3D%200%20%3F%0A%0A%09%09%09%09//%20Shortcut%20for%20%3Anth-%2A%28n%29%0A%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09return%20%21%21elem.parentNode%3B%0A%09%09%09%09%7D%20%3A%0A%0A%09%09%09%09function%28%20elem%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09var%20cache%2C%20uniqueCache%2C%20outerCache%2C%20node%2C%20nodeIndex%2C%20start%2C%0A%09%09%09%09%09%09dir%20%3D%20simple%20%21%3D%3D%20forward%20%3F%20%22nextSibling%22%20%3A%20%22previousSibling%22%2C%0A%09%09%09%09%09%09parent%20%3D%20elem.parentNode%2C%0A%09%09%09%09%09%09name%20%3D%20ofType%20%26%26%20elem.nodeName.toLowerCase%28%29%2C%0A%09%09%09%09%09%09useCache%20%3D%20%21xml%20%26%26%20%21ofType%2C%0A%09%09%09%09%09%09diff%20%3D%20false%3B%0A%0A%09%09%09%09%09if%20%28%20parent%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20%3A%28first%7Clast%7Conly%29-%28child%7Cof-type%29%0A%09%09%09%09%09%09if%20%28%20simple%20%29%20%7B%0A%09%09%09%09%09%09%09while%20%28%20dir%20%29%20%7B%0A%09%09%09%09%09%09%09%09node%20%3D%20elem%3B%0A%09%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20node%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09if%20%28%20ofType%20%3F%0A%09%09%09%09%09%09%09%09%09%09node.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name%20%3A%0A%09%09%09%09%09%09%09%09%09%09node.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09return%20false%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09//%20Reverse%20direction%20for%20%3Aonly-%2A%20%28if%20we%20haven%27t%20yet%20done%20so%29%0A%09%09%09%09%09%09%09%09start%20%3D%20dir%20%3D%20type%20%3D%3D%3D%20%22only%22%20%26%26%20%21start%20%26%26%20%22nextSibling%22%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09start%20%3D%20%5B%20forward%20%3F%20parent.firstChild%20%3A%20parent.lastChild%20%5D%3B%0A%0A%09%09%09%09%09%09//%20non-xml%20%3Anth-child%28...%29%20stores%20cache%20data%20on%20%60parent%60%0A%09%09%09%09%09%09if%20%28%20forward%20%26%26%20useCache%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Seek%20%60elem%60%20from%20a%20previously-cached%20index%0A%0A%09%09%09%09%09%09%09//%20...in%20a%20gzip-friendly%20way%0A%09%09%09%09%09%09%09node%20%3D%20parent%3B%0A%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%20%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09cache%20%3D%20uniqueCache%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09%09%09nodeIndex%20%3D%20cache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20cache%5B%201%20%5D%3B%0A%09%09%09%09%09%09%09diff%20%3D%20nodeIndex%20%26%26%20cache%5B%202%20%5D%3B%0A%09%09%09%09%09%09%09node%20%3D%20nodeIndex%20%26%26%20parent.childNodes%5B%20nodeIndex%20%5D%3B%0A%0A%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20%2B%2BnodeIndex%20%26%26%20node%20%26%26%20node%5B%20dir%20%5D%20%7C%7C%0A%0A%09%09%09%09%09%09%09%09//%20Fallback%20to%20seeking%20%60elem%60%20from%20the%20start%0A%09%09%09%09%09%09%09%09%28%20diff%20%3D%20nodeIndex%20%3D%200%20%29%20%7C%7C%20start.pop%28%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20When%20found%2C%20cache%20indexes%20on%20%60parent%60%20and%20break%0A%09%09%09%09%09%09%09%09if%20%28%20node.nodeType%20%3D%3D%3D%201%20%26%26%20%2B%2Bdiff%20%26%26%20node%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09uniqueCache%5B%20type%20%5D%20%3D%20%5B%20dirruns%2C%20nodeIndex%2C%20diff%20%5D%3B%0A%09%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Use%20previously-cached%20element%20index%20if%20available%0A%09%09%09%09%09%09%09if%20%28%20useCache%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20...in%20a%20gzip-friendly%20way%0A%09%09%09%09%09%09%09%09node%20%3D%20elem%3B%0A%09%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%20%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09cache%20%3D%20uniqueCache%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09%09%09%09nodeIndex%20%3D%20cache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20cache%5B%201%20%5D%3B%0A%09%09%09%09%09%09%09%09diff%20%3D%20nodeIndex%3B%0A%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09//%20xml%20%3Anth-child%28...%29%0A%09%09%09%09%09%09%09//%20or%20%3Anth-last-child%28...%29%20or%20%3Anth%28-last%29%3F-of-type%28...%29%0A%09%09%09%09%09%09%09if%20%28%20diff%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Use%20the%20same%20loop%20as%20above%20to%20seek%20%60elem%60%20from%20the%20start%0A%09%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20%2B%2BnodeIndex%20%26%26%20node%20%26%26%20node%5B%20dir%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%28%20diff%20%3D%20nodeIndex%20%3D%200%20%29%20%7C%7C%20start.pop%28%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09if%20%28%20%28%20ofType%20%3F%0A%09%09%09%09%09%09%09%09%09%09node.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name%20%3A%0A%09%09%09%09%09%09%09%09%09%09node.nodeType%20%3D%3D%3D%201%20%29%20%26%26%0A%09%09%09%09%09%09%09%09%09%09%2B%2Bdiff%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Cache%20the%20index%20of%20each%20encountered%20element%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20useCache%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09%09%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09uniqueCache%5B%20type%20%5D%20%3D%20%5B%20dirruns%2C%20diff%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20node%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09//%20Incorporate%20the%20offset%2C%20then%20check%20against%20cycle%20size%0A%09%09%09%09%09%09diff%20-%3D%20last%3B%0A%09%09%09%09%09%09return%20diff%20%3D%3D%3D%20first%20%7C%7C%20%28%20diff%20%25%20first%20%3D%3D%3D%200%20%26%26%20diff%20/%20first%20%3E%3D%200%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22PSEUDO%22%3A%20function%28%20pseudo%2C%20argument%20%29%20%7B%0A%0A%09%09%09//%20pseudo-class%20names%20are%20case-insensitive%0A%09%09%09//%20http%3A//www.w3.org/TR/selectors/%23pseudo-classes%0A%09%09%09//%20Prioritize%20by%20case%20sensitivity%20in%20case%20custom%20pseudos%20are%20added%20with%20uppercase%20letters%0A%09%09%09//%20Remember%20that%20setFilters%20inherits%20from%20pseudos%0A%09%09%09var%20args%2C%0A%09%09%09%09fn%20%3D%20Expr.pseudos%5B%20pseudo%20%5D%20%7C%7C%20Expr.setFilters%5B%20pseudo.toLowerCase%28%29%20%5D%20%7C%7C%0A%09%09%09%09%09Sizzle.error%28%20%22unsupported%20pseudo%3A%20%22%20%2B%20pseudo%20%29%3B%0A%0A%09%09%09//%20The%20user%20may%20use%20createPseudo%20to%20indicate%20that%0A%09%09%09//%20arguments%20are%20needed%20to%20create%20the%20filter%20function%0A%09%09%09//%20just%20as%20Sizzle%20does%0A%09%09%09if%20%28%20fn%5B%20expando%20%5D%20%29%20%7B%0A%09%09%09%09return%20fn%28%20argument%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20But%20maintain%20support%20for%20old%20signatures%0A%09%09%09if%20%28%20fn.length%20%3E%201%20%29%20%7B%0A%09%09%09%09args%20%3D%20%5B%20pseudo%2C%20pseudo%2C%20%22%22%2C%20argument%20%5D%3B%0A%09%09%09%09return%20Expr.setFilters.hasOwnProperty%28%20pseudo.toLowerCase%28%29%20%29%20%3F%0A%09%09%09%09%09markFunction%28%20function%28%20seed%2C%20matches%20%29%20%7B%0A%09%09%09%09%09%09var%20idx%2C%0A%09%09%09%09%09%09%09matched%20%3D%20fn%28%20seed%2C%20argument%20%29%2C%0A%09%09%09%09%09%09%09i%20%3D%20matched.length%3B%0A%09%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09%09idx%20%3D%20indexOf%28%20seed%2C%20matched%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%09%09seed%5B%20idx%20%5D%20%3D%20%21%28%20matches%5B%20idx%20%5D%20%3D%20matched%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09%09return%20fn%28%20elem%2C%200%2C%20args%20%29%3B%0A%09%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20fn%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09pseudos%3A%20%7B%0A%0A%09%09//%20Potentially%20complex%20pseudos%0A%09%09%22not%22%3A%20markFunction%28%20function%28%20selector%20%29%20%7B%0A%0A%09%09%09//%20Trim%20the%20selector%20passed%20to%20compile%0A%09%09%09//%20to%20avoid%20treating%20leading%20and%20trailing%0A%09%09%09//%20spaces%20as%20combinators%0A%09%09%09var%20input%20%3D%20%5B%5D%2C%0A%09%09%09%09results%20%3D%20%5B%5D%2C%0A%09%09%09%09matcher%20%3D%20compile%28%20selector.replace%28%20rtrim%2C%20%22%241%22%20%29%20%29%3B%0A%0A%09%09%09return%20matcher%5B%20expando%20%5D%20%3F%0A%09%09%09%09markFunction%28%20function%28%20seed%2C%20matches%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09var%20elem%2C%0A%09%09%09%09%09%09unmatched%20%3D%20matcher%28%20seed%2C%20null%2C%20xml%2C%20%5B%5D%20%29%2C%0A%09%09%09%09%09%09i%20%3D%20seed.length%3B%0A%0A%09%09%09%09%09//%20Match%20elements%20unmatched%20by%20%60matcher%60%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20unmatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09seed%5B%20i%20%5D%20%3D%20%21%28%20matches%5B%20i%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09function%28%20elem%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09input%5B%200%20%5D%20%3D%20elem%3B%0A%09%09%09%09%09matcher%28%20input%2C%20null%2C%20xml%2C%20results%20%29%3B%0A%0A%09%09%09%09%09//%20Don%27t%20keep%20the%20element%20%28issue%20%23299%29%0A%09%09%09%09%09input%5B%200%20%5D%20%3D%20null%3B%0A%09%09%09%09%09return%20%21results.pop%28%29%3B%0A%09%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22has%22%3A%20markFunction%28%20function%28%20selector%20%29%20%7B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20Sizzle%28%20selector%2C%20elem%20%29.length%20%3E%200%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22contains%22%3A%20markFunction%28%20function%28%20text%20%29%20%7B%0A%09%09%09text%20%3D%20text.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20%28%20elem.textContent%20%7C%7C%20getText%28%20elem%20%29%20%29.indexOf%28%20text%20%29%20%3E%20-1%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09//%20%22Whether%20an%20element%20is%20represented%20by%20a%20%3Alang%28%29%20selector%0A%09%09//%20is%20based%20solely%20on%20the%20element%27s%20language%20value%0A%09%09//%20being%20equal%20to%20the%20identifier%20C%2C%0A%09%09//%20or%20beginning%20with%20the%20identifier%20C%20immediately%20followed%20by%20%22-%22.%0A%09%09//%20The%20matching%20of%20C%20against%20the%20element%27s%20language%20value%20is%20performed%20case-insensitively.%0A%09%09//%20The%20identifier%20C%20does%20not%20have%20to%20be%20a%20valid%20language%20name.%22%0A%09%09//%20http%3A//www.w3.org/TR/selectors/%23lang-pseudo%0A%09%09%22lang%22%3A%20markFunction%28%20function%28%20lang%20%29%20%7B%0A%0A%09%09%09//%20lang%20value%20must%20be%20a%20valid%20identifier%0A%09%09%09if%20%28%20%21ridentifier.test%28%20lang%20%7C%7C%20%22%22%20%29%20%29%20%7B%0A%09%09%09%09Sizzle.error%28%20%22unsupported%20lang%3A%20%22%20%2B%20lang%20%29%3B%0A%09%09%09%7D%0A%09%09%09lang%20%3D%20lang.replace%28%20runescape%2C%20funescape%20%29.toLowerCase%28%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20elemLang%3B%0A%09%09%09%09do%20%7B%0A%09%09%09%09%09if%20%28%20%28%20elemLang%20%3D%20documentIsHTML%20%3F%0A%09%09%09%09%09%09elem.lang%20%3A%0A%09%09%09%09%09%09elem.getAttribute%28%20%22xml%3Alang%22%20%29%20%7C%7C%20elem.getAttribute%28%20%22lang%22%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09elemLang%20%3D%20elemLang.toLowerCase%28%29%3B%0A%09%09%09%09%09%09return%20elemLang%20%3D%3D%3D%20lang%20%7C%7C%20elemLang.indexOf%28%20lang%20%2B%20%22-%22%20%29%20%3D%3D%3D%200%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20while%20%28%20%28%20elem%20%3D%20elem.parentNode%20%29%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%3B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09//%20Miscellaneous%0A%09%09%22target%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20hash%20%3D%20window.location%20%26%26%20window.location.hash%3B%0A%09%09%09return%20hash%20%26%26%20hash.slice%28%201%20%29%20%3D%3D%3D%20elem.id%3B%0A%09%09%7D%2C%0A%0A%09%09%22root%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20docElem%3B%0A%09%09%7D%2C%0A%0A%09%09%22focus%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20document.activeElement%20%26%26%0A%09%09%09%09%28%20%21document.hasFocus%20%7C%7C%20document.hasFocus%28%29%20%29%20%26%26%0A%09%09%09%09%21%21%28%20elem.type%20%7C%7C%20elem.href%20%7C%7C%20~elem.tabIndex%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Boolean%20properties%0A%09%09%22enabled%22%3A%20createDisabledPseudo%28%20false%20%29%2C%0A%09%09%22disabled%22%3A%20createDisabledPseudo%28%20true%20%29%2C%0A%0A%09%09%22checked%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20In%20CSS3%2C%20%3Achecked%20should%20return%20both%20checked%20and%20selected%20elements%0A%09%09%09//%20http%3A//www.w3.org/TR/2011/REC-css3-selectors-20110929/%23checked%0A%09%09%09var%20nodeName%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09%09return%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%26%26%20%21%21elem.checked%20%29%20%7C%7C%0A%09%09%09%09%28%20nodeName%20%3D%3D%3D%20%22option%22%20%26%26%20%21%21elem.selected%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22selected%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20Accessing%20this%20property%20makes%20selected-by-default%0A%09%09%09//%20options%20in%20Safari%20work%20properly%0A%09%09%09if%20%28%20elem.parentNode%20%29%20%7B%0A%09%09%09%09//%20eslint-disable-next-line%20no-unused-expressions%0A%09%09%09%09elem.parentNode.selectedIndex%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20elem.selected%20%3D%3D%3D%20true%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Contents%0A%09%09%22empty%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20http%3A//www.w3.org/TR/selectors/%23empty-pseudo%0A%09%09%09//%20%3Aempty%20is%20negated%20by%20element%20%281%29%20or%20content%20nodes%20%28text%3A%203%3B%20cdata%3A%204%3B%20entity%20ref%3A%205%29%2C%0A%09%09%09//%20%20%20but%20not%20by%20others%20%28comment%3A%208%3B%20processing%20instruction%3A%207%3B%20etc.%29%0A%09%09%09//%20nodeType%20%3C%206%20works%20because%20attributes%20%282%29%20do%20not%20appear%20as%20children%0A%09%09%09for%20%28%20elem%20%3D%20elem.firstChild%3B%20elem%3B%20elem%20%3D%20elem.nextSibling%20%29%20%7B%0A%09%09%09%09if%20%28%20elem.nodeType%20%3C%206%20%29%20%7B%0A%09%09%09%09%09return%20false%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20true%3B%0A%09%09%7D%2C%0A%0A%09%09%22parent%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%21Expr.pseudos%5B%20%22empty%22%20%5D%28%20elem%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Element/input%20types%0A%09%09%22header%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20rheader.test%28%20elem.nodeName%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22input%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20rinputs.test%28%20elem.nodeName%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22button%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09%09return%20name%20%3D%3D%3D%20%22input%22%20%26%26%20elem.type%20%3D%3D%3D%20%22button%22%20%7C%7C%20name%20%3D%3D%3D%20%22button%22%3B%0A%09%09%7D%2C%0A%0A%09%09%22text%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20attr%3B%0A%09%09%09return%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22input%22%20%26%26%0A%09%09%09%09elem.type%20%3D%3D%3D%20%22text%22%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20IE%3C8%0A%09%09%09%09//%20New%20HTML5%20attribute%20values%20%28e.g.%2C%20%22search%22%29%20appear%20with%20elem.type%20%3D%3D%3D%20%22text%22%0A%09%09%09%09%28%20%28%20attr%20%3D%20elem.getAttribute%28%20%22type%22%20%29%20%29%20%3D%3D%20null%20%7C%7C%0A%09%09%09%09%09attr.toLowerCase%28%29%20%3D%3D%3D%20%22text%22%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Position-in-collection%0A%09%09%22first%22%3A%20createPositionalPseudo%28%20function%28%29%20%7B%0A%09%09%09return%20%5B%200%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22last%22%3A%20createPositionalPseudo%28%20function%28%20_matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09return%20%5B%20length%20-%201%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22eq%22%3A%20createPositionalPseudo%28%20function%28%20_matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09return%20%5B%20argument%20%3C%200%20%3F%20argument%20%2B%20length%20%3A%20argument%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22even%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%20%2B%3D%202%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22odd%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09var%20i%20%3D%201%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%20%2B%3D%202%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22lt%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09var%20i%20%3D%20argument%20%3C%200%20%3F%0A%09%09%09%09argument%20%2B%20length%20%3A%0A%09%09%09%09argument%20%3E%20length%20%3F%0A%09%09%09%09%09length%20%3A%0A%09%09%09%09%09argument%3B%0A%09%09%09for%20%28%20%3B%20--i%20%3E%3D%200%3B%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22gt%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09var%20i%20%3D%20argument%20%3C%200%20%3F%20argument%20%2B%20length%20%3A%20argument%3B%0A%09%09%09for%20%28%20%3B%20%2B%2Bi%20%3C%20length%3B%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%0A%09%7D%0A%7D%3B%0A%0AExpr.pseudos%5B%20%22nth%22%20%5D%20%3D%20Expr.pseudos%5B%20%22eq%22%20%5D%3B%0A%0A//%20Add%20button/input%20type%20pseudos%0Afor%20%28%20i%20in%20%7B%20radio%3A%20true%2C%20checkbox%3A%20true%2C%20file%3A%20true%2C%20password%3A%20true%2C%20image%3A%20true%20%7D%20%29%20%7B%0A%09Expr.pseudos%5B%20i%20%5D%20%3D%20createInputPseudo%28%20i%20%29%3B%0A%7D%0Afor%20%28%20i%20in%20%7B%20submit%3A%20true%2C%20reset%3A%20true%20%7D%20%29%20%7B%0A%09Expr.pseudos%5B%20i%20%5D%20%3D%20createButtonPseudo%28%20i%20%29%3B%0A%7D%0A%0A//%20Easy%20API%20for%20creating%20new%20setFilters%0Afunction%20setFilters%28%29%20%7B%7D%0AsetFilters.prototype%20%3D%20Expr.filters%20%3D%20Expr.pseudos%3B%0AExpr.setFilters%20%3D%20new%20setFilters%28%29%3B%0A%0Atokenize%20%3D%20Sizzle.tokenize%20%3D%20function%28%20selector%2C%20parseOnly%20%29%20%7B%0A%09var%20matched%2C%20match%2C%20tokens%2C%20type%2C%0A%09%09soFar%2C%20groups%2C%20preFilters%2C%0A%09%09cached%20%3D%20tokenCache%5B%20selector%20%2B%20%22%20%22%20%5D%3B%0A%0A%09if%20%28%20cached%20%29%20%7B%0A%09%09return%20parseOnly%20%3F%200%20%3A%20cached.slice%28%200%20%29%3B%0A%09%7D%0A%0A%09soFar%20%3D%20selector%3B%0A%09groups%20%3D%20%5B%5D%3B%0A%09preFilters%20%3D%20Expr.preFilter%3B%0A%0A%09while%20%28%20soFar%20%29%20%7B%0A%0A%09%09//%20Comma%20and%20first%20run%0A%09%09if%20%28%20%21matched%20%7C%7C%20%28%20match%20%3D%20rcomma.exec%28%20soFar%20%29%20%29%20%29%20%7B%0A%09%09%09if%20%28%20match%20%29%20%7B%0A%0A%09%09%09%09//%20Don%27t%20consume%20trailing%20commas%20as%20valid%0A%09%09%09%09soFar%20%3D%20soFar.slice%28%20match%5B%200%20%5D.length%20%29%20%7C%7C%20soFar%3B%0A%09%09%09%7D%0A%09%09%09groups.push%28%20%28%20tokens%20%3D%20%5B%5D%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09matched%20%3D%20false%3B%0A%0A%09%09//%20Combinators%0A%09%09if%20%28%20%28%20match%20%3D%20rcombinators.exec%28%20soFar%20%29%20%29%20%29%20%7B%0A%09%09%09matched%20%3D%20match.shift%28%29%3B%0A%09%09%09tokens.push%28%20%7B%0A%09%09%09%09value%3A%20matched%2C%0A%0A%09%09%09%09//%20Cast%20descendant%20combinators%20to%20space%0A%09%09%09%09type%3A%20match%5B%200%20%5D.replace%28%20rtrim%2C%20%22%20%22%20%29%0A%09%09%09%7D%20%29%3B%0A%09%09%09soFar%20%3D%20soFar.slice%28%20matched.length%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Filters%0A%09%09for%20%28%20type%20in%20Expr.filter%20%29%20%7B%0A%09%09%09if%20%28%20%28%20match%20%3D%20matchExpr%5B%20type%20%5D.exec%28%20soFar%20%29%20%29%20%26%26%20%28%20%21preFilters%5B%20type%20%5D%20%7C%7C%0A%09%09%09%09%28%20match%20%3D%20preFilters%5B%20type%20%5D%28%20match%20%29%20%29%20%29%20%29%20%7B%0A%09%09%09%09matched%20%3D%20match.shift%28%29%3B%0A%09%09%09%09tokens.push%28%20%7B%0A%09%09%09%09%09value%3A%20matched%2C%0A%09%09%09%09%09type%3A%20type%2C%0A%09%09%09%09%09matches%3A%20match%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%09soFar%20%3D%20soFar.slice%28%20matched.length%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20%21matched%20%29%20%7B%0A%09%09%09break%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20length%20of%20the%20invalid%20excess%0A%09//%20if%20we%27re%20just%20parsing%0A%09//%20Otherwise%2C%20throw%20an%20error%20or%20return%20tokens%0A%09return%20parseOnly%20%3F%0A%09%09soFar.length%20%3A%0A%09%09soFar%20%3F%0A%09%09%09Sizzle.error%28%20selector%20%29%20%3A%0A%0A%09%09%09//%20Cache%20the%20tokens%0A%09%09%09tokenCache%28%20selector%2C%20groups%20%29.slice%28%200%20%29%3B%0A%7D%3B%0A%0Afunction%20toSelector%28%20tokens%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20tokens.length%2C%0A%09%09selector%20%3D%20%22%22%3B%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09selector%20%2B%3D%20tokens%5B%20i%20%5D.value%3B%0A%09%7D%0A%09return%20selector%3B%0A%7D%0A%0Afunction%20addCombinator%28%20matcher%2C%20combinator%2C%20base%20%29%20%7B%0A%09var%20dir%20%3D%20combinator.dir%2C%0A%09%09skip%20%3D%20combinator.next%2C%0A%09%09key%20%3D%20skip%20%7C%7C%20dir%2C%0A%09%09checkNonElements%20%3D%20base%20%26%26%20key%20%3D%3D%3D%20%22parentNode%22%2C%0A%09%09doneName%20%3D%20done%2B%2B%3B%0A%0A%09return%20combinator.first%20%3F%0A%0A%09%09//%20Check%20against%20closest%20ancestor/preceding%20element%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09return%20matcher%28%20elem%2C%20context%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%20%3A%0A%0A%09%09//%20Check%20against%20all%20ancestor/preceding%20elements%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20oldCache%2C%20uniqueCache%2C%20outerCache%2C%0A%09%09%09%09newCache%20%3D%20%5B%20dirruns%2C%20doneName%20%5D%3B%0A%0A%09%09%09//%20We%20can%27t%20set%20arbitrary%20data%20on%20XML%20nodes%2C%20so%20they%20don%27t%20benefit%20from%20combinator%20caching%0A%09%09%09if%20%28%20xml%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20matcher%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09%09outerCache%20%3D%20elem%5B%20expando%20%5D%20%7C%7C%20%28%20elem%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20elem.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%28%20outerCache%5B%20elem.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09if%20%28%20skip%20%26%26%20skip%20%3D%3D%3D%20elem.nodeName.toLowerCase%28%29%20%29%20%7B%0A%09%09%09%09%09%09%09elem%20%3D%20elem%5B%20dir%20%5D%20%7C%7C%20elem%3B%0A%09%09%09%09%09%09%7D%20else%20if%20%28%20%28%20oldCache%20%3D%20uniqueCache%5B%20key%20%5D%20%29%20%26%26%0A%09%09%09%09%09%09%09oldCache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20oldCache%5B%201%20%5D%20%3D%3D%3D%20doneName%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Assign%20to%20newCache%20so%20results%20back-propagate%20to%20previous%20elements%0A%09%09%09%09%09%09%09return%20%28%20newCache%5B%202%20%5D%20%3D%20oldCache%5B%202%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Reuse%20newcache%20so%20results%20back-propagate%20to%20previous%20elements%0A%09%09%09%09%09%09%09uniqueCache%5B%20key%20%5D%20%3D%20newCache%3B%0A%0A%09%09%09%09%09%09%09//%20A%20match%20means%20we%27re%20done%3B%20a%20fail%20means%20we%20have%20to%20keep%20checking%0A%09%09%09%09%09%09%09if%20%28%20%28%20newCache%5B%202%20%5D%20%3D%20matcher%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%3B%0A%7D%0A%0Afunction%20elementMatcher%28%20matchers%20%29%20%7B%0A%09return%20matchers.length%20%3E%201%20%3F%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20i%20%3D%20matchers.length%3B%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20%21matchers%5B%20i%20%5D%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09return%20false%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20true%3B%0A%09%09%7D%20%3A%0A%09%09matchers%5B%200%20%5D%3B%0A%7D%0A%0Afunction%20multipleContexts%28%20selector%2C%20contexts%2C%20results%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20contexts.length%3B%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09Sizzle%28%20selector%2C%20contexts%5B%20i%20%5D%2C%20results%20%29%3B%0A%09%7D%0A%09return%20results%3B%0A%7D%0A%0Afunction%20condense%28%20unmatched%2C%20map%2C%20filter%2C%20context%2C%20xml%20%29%20%7B%0A%09var%20elem%2C%0A%09%09newUnmatched%20%3D%20%5B%5D%2C%0A%09%09i%20%3D%200%2C%0A%09%09len%20%3D%20unmatched.length%2C%0A%09%09mapped%20%3D%20map%20%21%3D%20null%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20elem%20%3D%20unmatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20%21filter%20%7C%7C%20filter%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09newUnmatched.push%28%20elem%20%29%3B%0A%09%09%09%09if%20%28%20mapped%20%29%20%7B%0A%09%09%09%09%09map.push%28%20i%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20newUnmatched%3B%0A%7D%0A%0Afunction%20setMatcher%28%20preFilter%2C%20selector%2C%20matcher%2C%20postFilter%2C%20postFinder%2C%20postSelector%20%29%20%7B%0A%09if%20%28%20postFilter%20%26%26%20%21postFilter%5B%20expando%20%5D%20%29%20%7B%0A%09%09postFilter%20%3D%20setMatcher%28%20postFilter%20%29%3B%0A%09%7D%0A%09if%20%28%20postFinder%20%26%26%20%21postFinder%5B%20expando%20%5D%20%29%20%7B%0A%09%09postFinder%20%3D%20setMatcher%28%20postFinder%2C%20postSelector%20%29%3B%0A%09%7D%0A%09return%20markFunction%28%20function%28%20seed%2C%20results%2C%20context%2C%20xml%20%29%20%7B%0A%09%09var%20temp%2C%20i%2C%20elem%2C%0A%09%09%09preMap%20%3D%20%5B%5D%2C%0A%09%09%09postMap%20%3D%20%5B%5D%2C%0A%09%09%09preexisting%20%3D%20results.length%2C%0A%0A%09%09%09//%20Get%20initial%20elements%20from%20seed%20or%20context%0A%09%09%09elems%20%3D%20seed%20%7C%7C%20multipleContexts%28%0A%09%09%09%09selector%20%7C%7C%20%22%2A%22%2C%0A%09%09%09%09context.nodeType%20%3F%20%5B%20context%20%5D%20%3A%20context%2C%0A%09%09%09%09%5B%5D%0A%09%09%09%29%2C%0A%0A%09%09%09//%20Prefilter%20to%20get%20matcher%20input%2C%20preserving%20a%20map%20for%20seed-results%20synchronization%0A%09%09%09matcherIn%20%3D%20preFilter%20%26%26%20%28%20seed%20%7C%7C%20%21selector%20%29%20%3F%0A%09%09%09%09condense%28%20elems%2C%20preMap%2C%20preFilter%2C%20context%2C%20xml%20%29%20%3A%0A%09%09%09%09elems%2C%0A%0A%09%09%09matcherOut%20%3D%20matcher%20%3F%0A%0A%09%09%09%09//%20If%20we%20have%20a%20postFinder%2C%20or%20filtered%20seed%2C%20or%20non-seed%20postFilter%20or%20preexisting%20results%2C%0A%09%09%09%09postFinder%20%7C%7C%20%28%20seed%20%3F%20preFilter%20%3A%20preexisting%20%7C%7C%20postFilter%20%29%20%3F%0A%0A%09%09%09%09%09//%20...intermediate%20processing%20is%20necessary%0A%09%09%09%09%09%5B%5D%20%3A%0A%0A%09%09%09%09%09//%20...otherwise%20use%20results%20directly%0A%09%09%09%09%09results%20%3A%0A%09%09%09%09matcherIn%3B%0A%0A%09%09//%20Find%20primary%20matches%0A%09%09if%20%28%20matcher%20%29%20%7B%0A%09%09%09matcher%28%20matcherIn%2C%20matcherOut%2C%20context%2C%20xml%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20postFilter%0A%09%09if%20%28%20postFilter%20%29%20%7B%0A%09%09%09temp%20%3D%20condense%28%20matcherOut%2C%20postMap%20%29%3B%0A%09%09%09postFilter%28%20temp%2C%20%5B%5D%2C%20context%2C%20xml%20%29%3B%0A%0A%09%09%09//%20Un-match%20failing%20elements%20by%20moving%20them%20back%20to%20matcherIn%0A%09%09%09i%20%3D%20temp.length%3B%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20%28%20elem%20%3D%20temp%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09matcherOut%5B%20postMap%5B%20i%20%5D%20%5D%20%3D%20%21%28%20matcherIn%5B%20postMap%5B%20i%20%5D%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20seed%20%29%20%7B%0A%09%09%09if%20%28%20postFinder%20%7C%7C%20preFilter%20%29%20%7B%0A%09%09%09%09if%20%28%20postFinder%20%29%20%7B%0A%0A%09%09%09%09%09//%20Get%20the%20final%20matcherOut%20by%20condensing%20this%20intermediate%20into%20postFinder%20contexts%0A%09%09%09%09%09temp%20%3D%20%5B%5D%3B%0A%09%09%09%09%09i%20%3D%20matcherOut.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20matcherOut%5B%20i%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Restore%20matcherIn%20since%20elem%20is%20not%20yet%20a%20final%20match%0A%09%09%09%09%09%09%09temp.push%28%20%28%20matcherIn%5B%20i%20%5D%20%3D%20elem%20%29%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09postFinder%28%20null%2C%20%28%20matcherOut%20%3D%20%5B%5D%20%29%2C%20temp%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Move%20matched%20elements%20from%20seed%20to%20results%20to%20keep%20them%20synchronized%0A%09%09%09%09i%20%3D%20matcherOut.length%3B%0A%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20matcherOut%5B%20i%20%5D%20%29%20%26%26%0A%09%09%09%09%09%09%28%20temp%20%3D%20postFinder%20%3F%20indexOf%28%20seed%2C%20elem%20%29%20%3A%20preMap%5B%20i%20%5D%20%29%20%3E%20-1%20%29%20%7B%0A%0A%09%09%09%09%09%09seed%5B%20temp%20%5D%20%3D%20%21%28%20results%5B%20temp%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Add%20elements%20to%20results%2C%20through%20postFinder%20if%20defined%0A%09%09%7D%20else%20%7B%0A%09%09%09matcherOut%20%3D%20condense%28%0A%09%09%09%09matcherOut%20%3D%3D%3D%20results%20%3F%0A%09%09%09%09%09matcherOut.splice%28%20preexisting%2C%20matcherOut.length%20%29%20%3A%0A%09%09%09%09%09matcherOut%0A%09%09%09%29%3B%0A%09%09%09if%20%28%20postFinder%20%29%20%7B%0A%09%09%09%09postFinder%28%20null%2C%20results%2C%20matcherOut%2C%20xml%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09push.apply%28%20results%2C%20matcherOut%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0Afunction%20matcherFromTokens%28%20tokens%20%29%20%7B%0A%09var%20checkContext%2C%20matcher%2C%20j%2C%0A%09%09len%20%3D%20tokens.length%2C%0A%09%09leadingRelative%20%3D%20Expr.relative%5B%20tokens%5B%200%20%5D.type%20%5D%2C%0A%09%09implicitRelative%20%3D%20leadingRelative%20%7C%7C%20Expr.relative%5B%20%22%20%22%20%5D%2C%0A%09%09i%20%3D%20leadingRelative%20%3F%201%20%3A%200%2C%0A%0A%09%09//%20The%20foundational%20matcher%20ensures%20that%20elements%20are%20reachable%20from%20top-level%20context%28s%29%0A%09%09matchContext%20%3D%20addCombinator%28%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20checkContext%3B%0A%09%09%7D%2C%20implicitRelative%2C%20true%20%29%2C%0A%09%09matchAnyContext%20%3D%20addCombinator%28%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20indexOf%28%20checkContext%2C%20elem%20%29%20%3E%20-1%3B%0A%09%09%7D%2C%20implicitRelative%2C%20true%20%29%2C%0A%09%09matchers%20%3D%20%5B%20function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20ret%20%3D%20%28%20%21leadingRelative%20%26%26%20%28%20xml%20%7C%7C%20context%20%21%3D%3D%20outermostContext%20%29%20%29%20%7C%7C%20%28%0A%09%09%09%09%28%20checkContext%20%3D%20context%20%29.nodeType%20%3F%0A%09%09%09%09%09matchContext%28%20elem%2C%20context%2C%20xml%20%29%20%3A%0A%09%09%09%09%09matchAnyContext%28%20elem%2C%20context%2C%20xml%20%29%20%29%3B%0A%0A%09%09%09//%20Avoid%20hanging%20onto%20element%20%28issue%20%23299%29%0A%09%09%09checkContext%20%3D%20null%3B%0A%09%09%09return%20ret%3B%0A%09%09%7D%20%5D%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20matcher%20%3D%20Expr.relative%5B%20tokens%5B%20i%20%5D.type%20%5D%20%29%20%29%20%7B%0A%09%09%09matchers%20%3D%20%5B%20addCombinator%28%20elementMatcher%28%20matchers%20%29%2C%20matcher%20%29%20%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09matcher%20%3D%20Expr.filter%5B%20tokens%5B%20i%20%5D.type%20%5D.apply%28%20null%2C%20tokens%5B%20i%20%5D.matches%20%29%3B%0A%0A%09%09%09//%20Return%20special%20upon%20seeing%20a%20positional%20matcher%0A%09%09%09if%20%28%20matcher%5B%20expando%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Find%20the%20next%20relative%20operator%20%28if%20any%29%20for%20proper%20handling%0A%09%09%09%09j%20%3D%20%2B%2Bi%3B%0A%09%09%09%09for%20%28%20%3B%20j%20%3C%20len%3B%20j%2B%2B%20%29%20%7B%0A%09%09%09%09%09if%20%28%20Expr.relative%5B%20tokens%5B%20j%20%5D.type%20%5D%20%29%20%7B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20setMatcher%28%0A%09%09%09%09%09i%20%3E%201%20%26%26%20elementMatcher%28%20matchers%20%29%2C%0A%09%09%09%09%09i%20%3E%201%20%26%26%20toSelector%28%0A%0A%09%09%09%09%09//%20If%20the%20preceding%20token%20was%20a%20descendant%20combinator%2C%20insert%20an%20implicit%20any-element%20%60%2A%60%0A%09%09%09%09%09tokens%0A%09%09%09%09%09%09.slice%28%200%2C%20i%20-%201%20%29%0A%09%09%09%09%09%09.concat%28%20%7B%20value%3A%20tokens%5B%20i%20-%202%20%5D.type%20%3D%3D%3D%20%22%20%22%20%3F%20%22%2A%22%20%3A%20%22%22%20%7D%20%29%0A%09%09%09%09%09%29.replace%28%20rtrim%2C%20%22%241%22%20%29%2C%0A%09%09%09%09%09matcher%2C%0A%09%09%09%09%09i%20%3C%20j%20%26%26%20matcherFromTokens%28%20tokens.slice%28%20i%2C%20j%20%29%20%29%2C%0A%09%09%09%09%09j%20%3C%20len%20%26%26%20matcherFromTokens%28%20%28%20tokens%20%3D%20tokens.slice%28%20j%20%29%20%29%20%29%2C%0A%09%09%09%09%09j%20%3C%20len%20%26%26%20toSelector%28%20tokens%20%29%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%09matchers.push%28%20matcher%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elementMatcher%28%20matchers%20%29%3B%0A%7D%0A%0Afunction%20matcherFromGroupMatchers%28%20elementMatchers%2C%20setMatchers%20%29%20%7B%0A%09var%20bySet%20%3D%20setMatchers.length%20%3E%200%2C%0A%09%09byElement%20%3D%20elementMatchers.length%20%3E%200%2C%0A%09%09superMatcher%20%3D%20function%28%20seed%2C%20context%2C%20xml%2C%20results%2C%20outermost%20%29%20%7B%0A%09%09%09var%20elem%2C%20j%2C%20matcher%2C%0A%09%09%09%09matchedCount%20%3D%200%2C%0A%09%09%09%09i%20%3D%20%220%22%2C%0A%09%09%09%09unmatched%20%3D%20seed%20%26%26%20%5B%5D%2C%0A%09%09%09%09setMatched%20%3D%20%5B%5D%2C%0A%09%09%09%09contextBackup%20%3D%20outermostContext%2C%0A%0A%09%09%09%09//%20We%20must%20always%20have%20either%20seed%20elements%20or%20outermost%20context%0A%09%09%09%09elems%20%3D%20seed%20%7C%7C%20byElement%20%26%26%20Expr.find%5B%20%22TAG%22%20%5D%28%20%22%2A%22%2C%20outermost%20%29%2C%0A%0A%09%09%09%09//%20Use%20integer%20dirruns%20iff%20this%20is%20the%20outermost%20matcher%0A%09%09%09%09dirrunsUnique%20%3D%20%28%20dirruns%20%2B%3D%20contextBackup%20%3D%3D%20null%20%3F%201%20%3A%20Math.random%28%29%20%7C%7C%200.1%20%29%2C%0A%09%09%09%09len%20%3D%20elems.length%3B%0A%0A%09%09%09if%20%28%20outermost%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09%09outermostContext%20%3D%20context%20%3D%3D%20document%20%7C%7C%20context%20%7C%7C%20outermost%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20elements%20passing%20elementMatchers%20directly%20to%20results%0A%09%09%09//%20Support%3A%20IE%3C9%2C%20Safari%0A%09%09%09//%20Tolerate%20NodeList%20properties%20%28IE%3A%20%22length%22%3B%20Safari%3A%20%3Cnumber%3E%29%20matching%20elements%20by%20id%0A%09%09%09for%20%28%20%3B%20i%20%21%3D%3D%20len%20%26%26%20%28%20elem%20%3D%20elems%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20byElement%20%26%26%20elem%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%0A%09%09%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09%09%09if%20%28%20%21context%20%26%26%20elem.ownerDocument%20%21%3D%20document%20%29%20%7B%0A%09%09%09%09%09%09setDocument%28%20elem%20%29%3B%0A%09%09%09%09%09%09xml%20%3D%20%21documentIsHTML%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09while%20%28%20%28%20matcher%20%3D%20elementMatchers%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20matcher%28%20elem%2C%20context%20%7C%7C%20document%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20outermost%20%29%20%7B%0A%09%09%09%09%09%09dirruns%20%3D%20dirrunsUnique%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Track%20unmatched%20elements%20for%20set%20filters%0A%09%09%09%09if%20%28%20bySet%20%29%20%7B%0A%0A%09%09%09%09%09//%20They%20will%20have%20gone%20through%20all%20possible%20matchers%0A%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20%21matcher%20%26%26%20elem%20%29%20%29%20%7B%0A%09%09%09%09%09%09matchedCount--%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Lengthen%20the%20array%20for%20every%20element%2C%20matched%20or%20not%0A%09%09%09%09%09if%20%28%20seed%20%29%20%7B%0A%09%09%09%09%09%09unmatched.push%28%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20%60i%60%20is%20now%20the%20count%20of%20elements%20visited%20above%2C%20and%20adding%20it%20to%20%60matchedCount%60%0A%09%09%09//%20makes%20the%20latter%20nonnegative.%0A%09%09%09matchedCount%20%2B%3D%20i%3B%0A%0A%09%09%09//%20Apply%20set%20filters%20to%20unmatched%20elements%0A%09%09%09//%20NOTE%3A%20This%20can%20be%20skipped%20if%20there%20are%20no%20unmatched%20elements%20%28i.e.%2C%20%60matchedCount%60%0A%09%09%09//%20equals%20%60i%60%29%2C%20unless%20we%20didn%27t%20visit%20_any_%20elements%20in%20the%20above%20loop%20because%20we%20have%0A%09%09%09//%20no%20element%20matchers%20and%20no%20seed.%0A%09%09%09//%20Incrementing%20an%20initially-string%20%220%22%20%60i%60%20allows%20%60i%60%20to%20remain%20a%20string%20only%20in%20that%0A%09%09%09//%20case%2C%20which%20will%20result%20in%20a%20%2200%22%20%60matchedCount%60%20that%20differs%20from%20%60i%60%20but%20is%20also%0A%09%09%09//%20numerically%20zero.%0A%09%09%09if%20%28%20bySet%20%26%26%20i%20%21%3D%3D%20matchedCount%20%29%20%7B%0A%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09while%20%28%20%28%20matcher%20%3D%20setMatchers%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09matcher%28%20unmatched%2C%20setMatched%2C%20context%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09if%20%28%20seed%20%29%20%7B%0A%0A%09%09%09%09%09//%20Reintegrate%20element%20matches%20to%20eliminate%20the%20need%20for%20sorting%0A%09%09%09%09%09if%20%28%20matchedCount%20%3E%200%20%29%20%7B%0A%09%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20%21%28%20unmatched%5B%20i%20%5D%20%7C%7C%20setMatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09setMatched%5B%20i%20%5D%20%3D%20pop.call%28%20results%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Discard%20index%20placeholder%20values%20to%20get%20only%20actual%20matches%0A%09%09%09%09%09setMatched%20%3D%20condense%28%20setMatched%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Add%20matches%20to%20results%0A%09%09%09%09push.apply%28%20results%2C%20setMatched%20%29%3B%0A%0A%09%09%09%09//%20Seedless%20set%20matches%20succeeding%20multiple%20successful%20matchers%20stipulate%20sorting%0A%09%09%09%09if%20%28%20outermost%20%26%26%20%21seed%20%26%26%20setMatched.length%20%3E%200%20%26%26%0A%09%09%09%09%09%28%20matchedCount%20%2B%20setMatchers.length%20%29%20%3E%201%20%29%20%7B%0A%0A%09%09%09%09%09Sizzle.uniqueSort%28%20results%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Override%20manipulation%20of%20globals%20by%20nested%20matchers%0A%09%09%09if%20%28%20outermost%20%29%20%7B%0A%09%09%09%09dirruns%20%3D%20dirrunsUnique%3B%0A%09%09%09%09outermostContext%20%3D%20contextBackup%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20unmatched%3B%0A%09%09%7D%3B%0A%0A%09return%20bySet%20%3F%0A%09%09markFunction%28%20superMatcher%20%29%20%3A%0A%09%09superMatcher%3B%0A%7D%0A%0Acompile%20%3D%20Sizzle.compile%20%3D%20function%28%20selector%2C%20match%20/%2A%20Internal%20Use%20Only%20%2A/%20%29%20%7B%0A%09var%20i%2C%0A%09%09setMatchers%20%3D%20%5B%5D%2C%0A%09%09elementMatchers%20%3D%20%5B%5D%2C%0A%09%09cached%20%3D%20compilerCache%5B%20selector%20%2B%20%22%20%22%20%5D%3B%0A%0A%09if%20%28%20%21cached%20%29%20%7B%0A%0A%09%09//%20Generate%20a%20function%20of%20recursive%20functions%20that%20can%20be%20used%20to%20check%20each%20element%0A%09%09if%20%28%20%21match%20%29%20%7B%0A%09%09%09match%20%3D%20tokenize%28%20selector%20%29%3B%0A%09%09%7D%0A%09%09i%20%3D%20match.length%3B%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09cached%20%3D%20matcherFromTokens%28%20match%5B%20i%20%5D%20%29%3B%0A%09%09%09if%20%28%20cached%5B%20expando%20%5D%20%29%20%7B%0A%09%09%09%09setMatchers.push%28%20cached%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09elementMatchers.push%28%20cached%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Cache%20the%20compiled%20function%0A%09%09cached%20%3D%20compilerCache%28%0A%09%09%09selector%2C%0A%09%09%09matcherFromGroupMatchers%28%20elementMatchers%2C%20setMatchers%20%29%0A%09%09%29%3B%0A%0A%09%09//%20Save%20selector%20and%20tokenization%0A%09%09cached.selector%20%3D%20selector%3B%0A%09%7D%0A%09return%20cached%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20A%20low-level%20selection%20function%20that%20works%20with%20Sizzle%27s%20compiled%0A%20%2A%20%20selector%20functions%0A%20%2A%20%40param%20%7BString%7CFunction%7D%20selector%20A%20selector%20or%20a%20pre-compiled%0A%20%2A%20%20selector%20function%20built%20with%20Sizzle.compile%0A%20%2A%20%40param%20%7BElement%7D%20context%0A%20%2A%20%40param%20%7BArray%7D%20%5Bresults%5D%0A%20%2A%20%40param%20%7BArray%7D%20%5Bseed%5D%20A%20set%20of%20elements%20to%20match%20against%0A%20%2A/%0Aselect%20%3D%20Sizzle.select%20%3D%20function%28%20selector%2C%20context%2C%20results%2C%20seed%20%29%20%7B%0A%09var%20i%2C%20tokens%2C%20token%2C%20type%2C%20find%2C%0A%09%09compiled%20%3D%20typeof%20selector%20%3D%3D%3D%20%22function%22%20%26%26%20selector%2C%0A%09%09match%20%3D%20%21seed%20%26%26%20tokenize%28%20%28%20selector%20%3D%20compiled.selector%20%7C%7C%20selector%20%29%20%29%3B%0A%0A%09results%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09//%20Try%20to%20minimize%20operations%20if%20there%20is%20only%20one%20selector%20in%20the%20list%20and%20no%20seed%0A%09//%20%28the%20latter%20of%20which%20guarantees%20us%20context%29%0A%09if%20%28%20match.length%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09//%20Reduce%20context%20if%20the%20leading%20compound%20selector%20is%20an%20ID%0A%09%09tokens%20%3D%20match%5B%200%20%5D%20%3D%20match%5B%200%20%5D.slice%28%200%20%29%3B%0A%09%09if%20%28%20tokens.length%20%3E%202%20%26%26%20%28%20token%20%3D%20tokens%5B%200%20%5D%20%29.type%20%3D%3D%3D%20%22ID%22%20%26%26%0A%09%09%09context.nodeType%20%3D%3D%3D%209%20%26%26%20documentIsHTML%20%26%26%20Expr.relative%5B%20tokens%5B%201%20%5D.type%20%5D%20%29%20%7B%0A%0A%09%09%09context%20%3D%20%28%20Expr.find%5B%20%22ID%22%20%5D%28%20token.matches%5B%200%20%5D%0A%09%09%09%09.replace%28%20runescape%2C%20funescape%20%29%2C%20context%20%29%20%7C%7C%20%5B%5D%20%29%5B%200%20%5D%3B%0A%09%09%09if%20%28%20%21context%20%29%20%7B%0A%09%09%09%09return%20results%3B%0A%0A%09%09%09//%20Precompiled%20matchers%20will%20still%20verify%20ancestry%2C%20so%20step%20up%20a%20level%0A%09%09%09%7D%20else%20if%20%28%20compiled%20%29%20%7B%0A%09%09%09%09context%20%3D%20context.parentNode%3B%0A%09%09%09%7D%0A%0A%09%09%09selector%20%3D%20selector.slice%28%20tokens.shift%28%29.value.length%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Fetch%20a%20seed%20set%20for%20right-to-left%20matching%0A%09%09i%20%3D%20matchExpr%5B%20%22needsContext%22%20%5D.test%28%20selector%20%29%20%3F%200%20%3A%20tokens.length%3B%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09token%20%3D%20tokens%5B%20i%20%5D%3B%0A%0A%09%09%09//%20Abort%20if%20we%20hit%20a%20combinator%0A%09%09%09if%20%28%20Expr.relative%5B%20%28%20type%20%3D%20token.type%20%29%20%5D%20%29%20%7B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20%28%20find%20%3D%20Expr.find%5B%20type%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Search%2C%20expanding%20context%20for%20leading%20sibling%20combinators%0A%09%09%09%09if%20%28%20%28%20seed%20%3D%20find%28%0A%09%09%09%09%09token.matches%5B%200%20%5D.replace%28%20runescape%2C%20funescape%20%29%2C%0A%09%09%09%09%09rsibling.test%28%20tokens%5B%200%20%5D.type%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%0A%09%09%09%09%09%09context%0A%09%09%09%09%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20If%20seed%20is%20empty%20or%20no%20tokens%20remain%2C%20we%20can%20return%20early%0A%09%09%09%09%09tokens.splice%28%20i%2C%201%20%29%3B%0A%09%09%09%09%09selector%20%3D%20seed.length%20%26%26%20toSelector%28%20tokens%20%29%3B%0A%09%09%09%09%09if%20%28%20%21selector%20%29%20%7B%0A%09%09%09%09%09%09push.apply%28%20results%2C%20seed%20%29%3B%0A%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Compile%20and%20execute%20a%20filtering%20function%20if%20one%20is%20not%20provided%0A%09//%20Provide%20%60match%60%20to%20avoid%20retokenization%20if%20we%20modified%20the%20selector%20above%0A%09%28%20compiled%20%7C%7C%20compile%28%20selector%2C%20match%20%29%20%29%28%0A%09%09seed%2C%0A%09%09context%2C%0A%09%09%21documentIsHTML%2C%0A%09%09results%2C%0A%09%09%21context%20%7C%7C%20rsibling.test%28%20selector%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%20context%0A%09%29%3B%0A%09return%20results%3B%0A%7D%3B%0A%0A//%20One-time%20assignments%0A%0A//%20Sort%20stability%0Asupport.sortStable%20%3D%20expando.split%28%20%22%22%20%29.sort%28%20sortOrder%20%29.join%28%20%22%22%20%29%20%3D%3D%3D%20expando%3B%0A%0A//%20Support%3A%20Chrome%2014-35%2B%0A//%20Always%20assume%20duplicates%20if%20they%20aren%27t%20passed%20to%20the%20comparison%20function%0Asupport.detectDuplicates%20%3D%20%21%21hasDuplicate%3B%0A%0A//%20Initialize%20against%20the%20default%20document%0AsetDocument%28%29%3B%0A%0A//%20Support%3A%20Webkit%3C537.32%20-%20Safari%206.0.3/Chrome%2025%20%28fixed%20in%20Chrome%2027%29%0A//%20Detached%20nodes%20confoundingly%20follow%20%2Aeach%20other%2A%0Asupport.sortDetached%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%0A%09//%20Should%20return%201%2C%20but%20returns%204%20%28following%29%0A%09return%20el.compareDocumentPosition%28%20document.createElement%28%20%22fieldset%22%20%29%20%29%20%26%201%3B%0A%7D%20%29%3B%0A%0A//%20Support%3A%20IE%3C8%0A//%20Prevent%20attribute/property%20%22interpolation%22%0A//%20https%3A//msdn.microsoft.com/en-us/library/ms536429%2528VS.85%2529.aspx%0Aif%20%28%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09el.innerHTML%20%3D%20%22%3Ca%20href%3D%27%23%27%3E%3C/a%3E%22%3B%0A%09return%20el.firstChild.getAttribute%28%20%22href%22%20%29%20%3D%3D%3D%20%22%23%22%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20%22type%7Chref%7Cheight%7Cwidth%22%2C%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%09%09%09return%20elem.getAttribute%28%20name%2C%20name.toLowerCase%28%29%20%3D%3D%3D%20%22type%22%20%3F%201%20%3A%202%20%29%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%3C9%0A//%20Use%20defaultValue%20in%20place%20of%20getAttribute%28%22value%22%29%0Aif%20%28%20%21support.attributes%20%7C%7C%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09el.innerHTML%20%3D%20%22%3Cinput/%3E%22%3B%0A%09el.firstChild.setAttribute%28%20%22value%22%2C%20%22%22%20%29%3B%0A%09return%20el.firstChild.getAttribute%28%20%22value%22%20%29%20%3D%3D%3D%20%22%22%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20%22value%22%2C%20function%28%20elem%2C%20_name%2C%20isXML%20%29%20%7B%0A%09%09if%20%28%20%21isXML%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22input%22%20%29%20%7B%0A%09%09%09return%20elem.defaultValue%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%3C9%0A//%20Use%20getAttributeNode%20to%20fetch%20booleans%20when%20getAttribute%20lies%0Aif%20%28%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09return%20el.getAttribute%28%20%22disabled%22%20%29%20%3D%3D%20null%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20booleans%2C%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09var%20val%3B%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%09%09%09return%20elem%5B%20name%20%5D%20%3D%3D%3D%20true%20%3F%20name.toLowerCase%28%29%20%3A%0A%09%09%09%09%28%20val%20%3D%20elem.getAttributeNode%28%20name%20%29%20%29%20%26%26%20val.specified%20%3F%0A%09%09%09%09%09val.value%20%3A%0A%09%09%09%09%09null%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0Areturn%20Sizzle%3B%0A%0A%7D%20%29%28%20window%20%29%3B%0A%0A%0A%0AjQuery.find%20%3D%20Sizzle%3B%0AjQuery.expr%20%3D%20Sizzle.selectors%3B%0A%0A//%20Deprecated%0AjQuery.expr%5B%20%22%3A%22%20%5D%20%3D%20jQuery.expr.pseudos%3B%0AjQuery.uniqueSort%20%3D%20jQuery.unique%20%3D%20Sizzle.uniqueSort%3B%0AjQuery.text%20%3D%20Sizzle.getText%3B%0AjQuery.isXMLDoc%20%3D%20Sizzle.isXML%3B%0AjQuery.contains%20%3D%20Sizzle.contains%3B%0AjQuery.escapeSelector%20%3D%20Sizzle.escape%3B%0A%0A%0A%0A%0Avar%20dir%20%3D%20function%28%20elem%2C%20dir%2C%20until%20%29%20%7B%0A%09var%20matched%20%3D%20%5B%5D%2C%0A%09%09truncate%20%3D%20until%20%21%3D%3D%20undefined%3B%0A%0A%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%26%26%20elem.nodeType%20%21%3D%3D%209%20%29%20%7B%0A%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09if%20%28%20truncate%20%26%26%20jQuery%28%20elem%20%29.is%28%20until%20%29%20%29%20%7B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09matched.push%28%20elem%20%29%3B%0A%09%09%7D%0A%09%7D%0A%09return%20matched%3B%0A%7D%3B%0A%0A%0Avar%20siblings%20%3D%20function%28%20n%2C%20elem%20%29%20%7B%0A%09var%20matched%20%3D%20%5B%5D%3B%0A%0A%09for%20%28%20%3B%20n%3B%20n%20%3D%20n.nextSibling%20%29%20%7B%0A%09%09if%20%28%20n.nodeType%20%3D%3D%3D%201%20%26%26%20n%20%21%3D%3D%20elem%20%29%20%7B%0A%09%09%09matched.push%28%20n%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20matched%3B%0A%7D%3B%0A%0A%0Avar%20rneedsContext%20%3D%20jQuery.expr.match.needsContext%3B%0A%0A%0A%0Afunction%20nodeName%28%20elem%2C%20name%20%29%20%7B%0A%0A%20%20return%20elem.nodeName%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name.toLowerCase%28%29%3B%0A%0A%7D%3B%0Avar%20rsingleTag%20%3D%20%28%20/%5E%3C%28%5Ba-z%5D%5B%5E%5C/%5C0%3E%3A%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%29%5B%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%5C/%3F%3E%28%3F%3A%3C%5C/%5C1%3E%7C%29%24/i%20%29%3B%0A%0A%0A%0A//%20Implement%20the%20identical%20functionality%20for%20filter%20and%20not%0Afunction%20winnow%28%20elements%2C%20qualifier%2C%20not%20%29%20%7B%0A%09if%20%28%20isFunction%28%20qualifier%20%29%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%2C%20i%20%29%20%7B%0A%09%09%09return%20%21%21qualifier.call%28%20elem%2C%20i%2C%20elem%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Single%20element%0A%09if%20%28%20qualifier.nodeType%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%28%20elem%20%3D%3D%3D%20qualifier%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Arraylike%20of%20elements%20%28jQuery%2C%20arguments%2C%20Array%29%0A%09if%20%28%20typeof%20qualifier%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%28%20indexOf.call%28%20qualifier%2C%20elem%20%29%20%3E%20-1%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Filtered%20directly%20for%20both%20simple%20and%20complex%20selectors%0A%09return%20jQuery.filter%28%20qualifier%2C%20elements%2C%20not%20%29%3B%0A%7D%0A%0AjQuery.filter%20%3D%20function%28%20expr%2C%20elems%2C%20not%20%29%20%7B%0A%09var%20elem%20%3D%20elems%5B%200%20%5D%3B%0A%0A%09if%20%28%20not%20%29%20%7B%0A%09%09expr%20%3D%20%22%3Anot%28%22%20%2B%20expr%20%2B%20%22%29%22%3B%0A%09%7D%0A%0A%09if%20%28%20elems.length%20%3D%3D%3D%201%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09return%20jQuery.find.matchesSelector%28%20elem%2C%20expr%20%29%20%3F%20%5B%20elem%20%5D%20%3A%20%5B%5D%3B%0A%09%7D%0A%0A%09return%20jQuery.find.matches%28%20expr%2C%20jQuery.grep%28%20elems%2C%20function%28%20elem%20%29%20%7B%0A%09%09return%20elem.nodeType%20%3D%3D%3D%201%3B%0A%09%7D%20%29%20%29%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09find%3A%20function%28%20selector%20%29%20%7B%0A%09%09var%20i%2C%20ret%2C%0A%09%09%09len%20%3D%20this.length%2C%0A%09%09%09self%20%3D%20this%3B%0A%0A%09%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20this.pushStack%28%20jQuery%28%20selector%20%29.filter%28%20function%28%29%20%7B%0A%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09if%20%28%20jQuery.contains%28%20self%5B%20i%20%5D%2C%20this%20%29%20%29%20%7B%0A%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09ret%20%3D%20this.pushStack%28%20%5B%5D%20%29%3B%0A%0A%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09jQuery.find%28%20selector%2C%20self%5B%20i%20%5D%2C%20ret%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20len%20%3E%201%20%3F%20jQuery.uniqueSort%28%20ret%20%29%20%3A%20ret%3B%0A%09%7D%2C%0A%09filter%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.pushStack%28%20winnow%28%20this%2C%20selector%20%7C%7C%20%5B%5D%2C%20false%20%29%20%29%3B%0A%09%7D%2C%0A%09not%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.pushStack%28%20winnow%28%20this%2C%20selector%20%7C%7C%20%5B%5D%2C%20true%20%29%20%29%3B%0A%09%7D%2C%0A%09is%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20%21%21winnow%28%0A%09%09%09this%2C%0A%0A%09%09%09//%20If%20this%20is%20a%20positional/relative%20selector%2C%20check%20membership%20in%20the%20returned%20set%0A%09%09%09//%20so%20%24%28%22p%3Afirst%22%29.is%28%22p%3Alast%22%29%20won%27t%20return%20true%20for%20a%20doc%20with%20two%20%22p%22.%0A%09%09%09typeof%20selector%20%3D%3D%3D%20%22string%22%20%26%26%20rneedsContext.test%28%20selector%20%29%20%3F%0A%09%09%09%09jQuery%28%20selector%20%29%20%3A%0A%09%09%09%09selector%20%7C%7C%20%5B%5D%2C%0A%09%09%09false%0A%09%09%29.length%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20Initialize%20a%20jQuery%20object%0A%0A%0A//%20A%20central%20reference%20to%20the%20root%20jQuery%28document%29%0Avar%20rootjQuery%2C%0A%0A%09//%20A%20simple%20way%20to%20check%20for%20HTML%20strings%0A%09//%20Prioritize%20%23id%20over%20%3Ctag%3E%20to%20avoid%20XSS%20via%20location.hash%20%28%239521%29%0A%09//%20Strict%20HTML%20recognition%20%28%2311290%3A%20must%20start%20with%20%3C%29%0A%09//%20Shortcut%20simple%20%23id%20case%20for%20speed%0A%09rquickExpr%20%3D%20/%5E%28%3F%3A%5Cs%2A%28%3C%5B%5Cw%5CW%5D%2B%3E%29%5B%5E%3E%5D%2A%7C%23%28%5B%5Cw-%5D%2B%29%29%24/%2C%0A%0A%09init%20%3D%20jQuery.fn.init%20%3D%20function%28%20selector%2C%20context%2C%20root%20%29%20%7B%0A%09%09var%20match%2C%20elem%3B%0A%0A%09%09//%20HANDLE%3A%20%24%28%22%22%29%2C%20%24%28null%29%2C%20%24%28undefined%29%2C%20%24%28false%29%0A%09%09if%20%28%20%21selector%20%29%20%7B%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%0A%09%09//%20Method%20init%28%29%20accepts%20an%20alternate%20rootjQuery%0A%09%09//%20so%20migrate%20can%20support%20jQuery.sub%20%28gh-2101%29%0A%09%09root%20%3D%20root%20%7C%7C%20rootjQuery%3B%0A%0A%09%09//%20Handle%20HTML%20strings%0A%09%09if%20%28%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09if%20%28%20selector%5B%200%20%5D%20%3D%3D%3D%20%22%3C%22%20%26%26%0A%09%09%09%09selector%5B%20selector.length%20-%201%20%5D%20%3D%3D%3D%20%22%3E%22%20%26%26%0A%09%09%09%09selector.length%20%3E%3D%203%20%29%20%7B%0A%0A%09%09%09%09//%20Assume%20that%20strings%20that%20start%20and%20end%20with%20%3C%3E%20are%20HTML%20and%20skip%20the%20regex%20check%0A%09%09%09%09match%20%3D%20%5B%20null%2C%20selector%2C%20null%20%5D%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09match%20%3D%20rquickExpr.exec%28%20selector%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Match%20html%20or%20make%20sure%20no%20context%20is%20specified%20for%20%23id%0A%09%09%09if%20%28%20match%20%26%26%20%28%20match%5B%201%20%5D%20%7C%7C%20%21context%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20HANDLE%3A%20%24%28html%29%20-%3E%20%24%28array%29%0A%09%09%09%09if%20%28%20match%5B%201%20%5D%20%29%20%7B%0A%09%09%09%09%09context%20%3D%20context%20instanceof%20jQuery%20%3F%20context%5B%200%20%5D%20%3A%20context%3B%0A%0A%09%09%09%09%09//%20Option%20to%20run%20scripts%20is%20true%20for%20back-compat%0A%09%09%09%09%09//%20Intentionally%20let%20the%20error%20be%20thrown%20if%20parseHTML%20is%20not%20present%0A%09%09%09%09%09jQuery.merge%28%20this%2C%20jQuery.parseHTML%28%0A%09%09%09%09%09%09match%5B%201%20%5D%2C%0A%09%09%09%09%09%09context%20%26%26%20context.nodeType%20%3F%20context.ownerDocument%20%7C%7C%20context%20%3A%20document%2C%0A%09%09%09%09%09%09true%0A%09%09%09%09%09%29%20%29%3B%0A%0A%09%09%09%09%09//%20HANDLE%3A%20%24%28html%2C%20props%29%0A%09%09%09%09%09if%20%28%20rsingleTag.test%28%20match%5B%201%20%5D%20%29%20%26%26%20jQuery.isPlainObject%28%20context%20%29%20%29%20%7B%0A%09%09%09%09%09%09for%20%28%20match%20in%20context%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Properties%20of%20context%20are%20called%20as%20methods%20if%20possible%0A%09%09%09%09%09%09%09if%20%28%20isFunction%28%20this%5B%20match%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09this%5B%20match%20%5D%28%20context%5B%20match%20%5D%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20...and%20otherwise%20set%20as%20attributes%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09this.attr%28%20match%2C%20context%5B%20match%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09return%20this%3B%0A%0A%09%09%09%09//%20HANDLE%3A%20%24%28%23id%29%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09elem%20%3D%20document.getElementById%28%20match%5B%202%20%5D%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20elem%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Inject%20the%20element%20directly%20into%20the%20jQuery%20object%0A%09%09%09%09%09%09this%5B%200%20%5D%20%3D%20elem%3B%0A%09%09%09%09%09%09this.length%20%3D%201%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%0A%09%09%09//%20HANDLE%3A%20%24%28expr%2C%20%24%28...%29%29%0A%09%09%09%7D%20else%20if%20%28%20%21context%20%7C%7C%20context.jquery%20%29%20%7B%0A%09%09%09%09return%20%28%20context%20%7C%7C%20root%20%29.find%28%20selector%20%29%3B%0A%0A%09%09%09//%20HANDLE%3A%20%24%28expr%2C%20context%29%0A%09%09%09//%20%28which%20is%20just%20equivalent%20to%3A%20%24%28context%29.find%28expr%29%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09return%20this.constructor%28%20context%20%29.find%28%20selector%20%29%3B%0A%09%09%09%7D%0A%0A%09%09//%20HANDLE%3A%20%24%28DOMElement%29%0A%09%09%7D%20else%20if%20%28%20selector.nodeType%20%29%20%7B%0A%09%09%09this%5B%200%20%5D%20%3D%20selector%3B%0A%09%09%09this.length%20%3D%201%3B%0A%09%09%09return%20this%3B%0A%0A%09%09//%20HANDLE%3A%20%24%28function%29%0A%09%09//%20Shortcut%20for%20document%20ready%0A%09%09%7D%20else%20if%20%28%20isFunction%28%20selector%20%29%20%29%20%7B%0A%09%09%09return%20root.ready%20%21%3D%3D%20undefined%20%3F%0A%09%09%09%09root.ready%28%20selector%20%29%20%3A%0A%0A%09%09%09%09//%20Execute%20immediately%20if%20ready%20is%20not%20present%0A%09%09%09%09selector%28%20jQuery%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20jQuery.makeArray%28%20selector%2C%20this%20%29%3B%0A%09%7D%3B%0A%0A//%20Give%20the%20init%20function%20the%20jQuery%20prototype%20for%20later%20instantiation%0Ainit.prototype%20%3D%20jQuery.fn%3B%0A%0A//%20Initialize%20central%20reference%0ArootjQuery%20%3D%20jQuery%28%20document%20%29%3B%0A%0A%0Avar%20rparentsprev%20%3D%20/%5E%28%3F%3Aparents%7Cprev%28%3F%3AUntil%7CAll%29%29/%2C%0A%0A%09//%20Methods%20guaranteed%20to%20produce%20a%20unique%20set%20when%20starting%20from%20a%20unique%20set%0A%09guaranteedUnique%20%3D%20%7B%0A%09%09children%3A%20true%2C%0A%09%09contents%3A%20true%2C%0A%09%09next%3A%20true%2C%0A%09%09prev%3A%20true%0A%09%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09has%3A%20function%28%20target%20%29%20%7B%0A%09%09var%20targets%20%3D%20jQuery%28%20target%2C%20this%20%29%2C%0A%09%09%09l%20%3D%20targets.length%3B%0A%0A%09%09return%20this.filter%28%20function%28%29%20%7B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20jQuery.contains%28%20this%2C%20targets%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09closest%3A%20function%28%20selectors%2C%20context%20%29%20%7B%0A%09%09var%20cur%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09l%20%3D%20this.length%2C%0A%09%09%09matched%20%3D%20%5B%5D%2C%0A%09%09%09targets%20%3D%20typeof%20selectors%20%21%3D%3D%20%22string%22%20%26%26%20jQuery%28%20selectors%20%29%3B%0A%0A%09%09//%20Positional%20selectors%20never%20match%2C%20since%20there%27s%20no%20_selection_%20context%0A%09%09if%20%28%20%21rneedsContext.test%28%20selectors%20%29%20%29%20%7B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09for%20%28%20cur%20%3D%20this%5B%20i%20%5D%3B%20cur%20%26%26%20cur%20%21%3D%3D%20context%3B%20cur%20%3D%20cur.parentNode%20%29%20%7B%0A%0A%09%09%09%09%09//%20Always%20skip%20document%20fragments%0A%09%09%09%09%09if%20%28%20cur.nodeType%20%3C%2011%20%26%26%20%28%20targets%20%3F%0A%09%09%09%09%09%09targets.index%28%20cur%20%29%20%3E%20-1%20%3A%0A%0A%09%09%09%09%09%09//%20Don%27t%20pass%20non-elements%20to%20Sizzle%0A%09%09%09%09%09%09cur.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%09%09%09jQuery.find.matchesSelector%28%20cur%2C%20selectors%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09matched.push%28%20cur%20%29%3B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20matched.length%20%3E%201%20%3F%20jQuery.uniqueSort%28%20matched%20%29%20%3A%20matched%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Determine%20the%20position%20of%20an%20element%20within%20the%20set%0A%09index%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20No%20argument%2C%20return%20index%20in%20parent%0A%09%09if%20%28%20%21elem%20%29%20%7B%0A%09%09%09return%20%28%20this%5B%200%20%5D%20%26%26%20this%5B%200%20%5D.parentNode%20%29%20%3F%20this.first%28%29.prevAll%28%29.length%20%3A%20-1%3B%0A%09%09%7D%0A%0A%09%09//%20Index%20in%20selector%0A%09%09if%20%28%20typeof%20elem%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20indexOf.call%28%20jQuery%28%20elem%20%29%2C%20this%5B%200%20%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Locate%20the%20position%20of%20the%20desired%20element%0A%09%09return%20indexOf.call%28%20this%2C%0A%0A%09%09%09//%20If%20it%20receives%20a%20jQuery%20object%2C%20the%20first%20element%20is%20used%0A%09%09%09elem.jquery%20%3F%20elem%5B%200%20%5D%20%3A%20elem%0A%09%09%29%3B%0A%09%7D%2C%0A%0A%09add%3A%20function%28%20selector%2C%20context%20%29%20%7B%0A%09%09return%20this.pushStack%28%0A%09%09%09jQuery.uniqueSort%28%0A%09%09%09%09jQuery.merge%28%20this.get%28%29%2C%20jQuery%28%20selector%2C%20context%20%29%20%29%0A%09%09%09%29%0A%09%09%29%3B%0A%09%7D%2C%0A%0A%09addBack%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.add%28%20selector%20%3D%3D%20null%20%3F%0A%09%09%09this.prevObject%20%3A%20this.prevObject.filter%28%20selector%20%29%0A%09%09%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0Afunction%20sibling%28%20cur%2C%20dir%20%29%20%7B%0A%09while%20%28%20%28%20cur%20%3D%20cur%5B%20dir%20%5D%20%29%20%26%26%20cur.nodeType%20%21%3D%3D%201%20%29%20%7B%7D%0A%09return%20cur%3B%0A%7D%0A%0AjQuery.each%28%20%7B%0A%09parent%3A%20function%28%20elem%20%29%20%7B%0A%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09return%20parent%20%26%26%20parent.nodeType%20%21%3D%3D%2011%20%3F%20parent%20%3A%20null%3B%0A%09%7D%2C%0A%09parents%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22parentNode%22%20%29%3B%0A%09%7D%2C%0A%09parentsUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22parentNode%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09next%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20sibling%28%20elem%2C%20%22nextSibling%22%20%29%3B%0A%09%7D%2C%0A%09prev%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20sibling%28%20elem%2C%20%22previousSibling%22%20%29%3B%0A%09%7D%2C%0A%09nextAll%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22nextSibling%22%20%29%3B%0A%09%7D%2C%0A%09prevAll%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22previousSibling%22%20%29%3B%0A%09%7D%2C%0A%09nextUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22nextSibling%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09prevUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22previousSibling%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09siblings%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20siblings%28%20%28%20elem.parentNode%20%7C%7C%20%7B%7D%20%29.firstChild%2C%20elem%20%29%3B%0A%09%7D%2C%0A%09children%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20siblings%28%20elem.firstChild%20%29%3B%0A%09%7D%2C%0A%09contents%3A%20function%28%20elem%20%29%20%7B%0A%09%09if%20%28%20elem.contentDocument%20%21%3D%20null%20%26%26%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%0A%09%09%09//%20%3Cobject%3E%20elements%20with%20no%20%60data%60%20attribute%20has%20an%20object%0A%09%09%09//%20%60contentDocument%60%20with%20a%20%60null%60%20prototype.%0A%09%09%09getProto%28%20elem.contentDocument%20%29%20%29%20%7B%0A%0A%09%09%09return%20elem.contentDocument%3B%0A%09%09%7D%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%20only%2C%20iOS%207%20only%2C%20Android%20Browser%20%3C%3D4.3%20only%0A%09%09//%20Treat%20the%20template%20element%20as%20a%20regular%20one%20in%20browsers%20that%0A%09%09//%20don%27t%20support%20it.%0A%09%09if%20%28%20nodeName%28%20elem%2C%20%22template%22%20%29%20%29%20%7B%0A%09%09%09elem%20%3D%20elem.content%20%7C%7C%20elem%3B%0A%09%09%7D%0A%0A%09%09return%20jQuery.merge%28%20%5B%5D%2C%20elem.childNodes%20%29%3B%0A%09%7D%0A%7D%2C%20function%28%20name%2C%20fn%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20until%2C%20selector%20%29%20%7B%0A%09%09var%20matched%20%3D%20jQuery.map%28%20this%2C%20fn%2C%20until%20%29%3B%0A%0A%09%09if%20%28%20name.slice%28%20-5%20%29%20%21%3D%3D%20%22Until%22%20%29%20%7B%0A%09%09%09selector%20%3D%20until%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20selector%20%26%26%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09matched%20%3D%20jQuery.filter%28%20selector%2C%20matched%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20this.length%20%3E%201%20%29%20%7B%0A%0A%09%09%09//%20Remove%20duplicates%0A%09%09%09if%20%28%20%21guaranteedUnique%5B%20name%20%5D%20%29%20%7B%0A%09%09%09%09jQuery.uniqueSort%28%20matched%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Reverse%20order%20for%20parents%2A%20and%20prev-derivatives%0A%09%09%09if%20%28%20rparentsprev.test%28%20name%20%29%20%29%20%7B%0A%09%09%09%09matched.reverse%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20matched%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0Avar%20rnothtmlwhite%20%3D%20%28%20/%5B%5E%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2B/g%20%29%3B%0A%0A%0A%0A//%20Convert%20String-formatted%20options%20into%20Object-formatted%20ones%0Afunction%20createOptions%28%20options%20%29%20%7B%0A%09var%20object%20%3D%20%7B%7D%3B%0A%09jQuery.each%28%20options.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%2C%20function%28%20_%2C%20flag%20%29%20%7B%0A%09%09object%5B%20flag%20%5D%20%3D%20true%3B%0A%09%7D%20%29%3B%0A%09return%20object%3B%0A%7D%0A%0A/%2A%0A%20%2A%20Create%20a%20callback%20list%20using%20the%20following%20parameters%3A%0A%20%2A%0A%20%2A%09options%3A%20an%20optional%20list%20of%20space-separated%20options%20that%20will%20change%20how%0A%20%2A%09%09%09the%20callback%20list%20behaves%20or%20a%20more%20traditional%20option%20object%0A%20%2A%0A%20%2A%20By%20default%20a%20callback%20list%20will%20act%20like%20an%20event%20callback%20list%20and%20can%20be%0A%20%2A%20%22fired%22%20multiple%20times.%0A%20%2A%0A%20%2A%20Possible%20options%3A%0A%20%2A%0A%20%2A%09once%3A%09%09%09will%20ensure%20the%20callback%20list%20can%20only%20be%20fired%20once%20%28like%20a%20Deferred%29%0A%20%2A%0A%20%2A%09memory%3A%09%09%09will%20keep%20track%20of%20previous%20values%20and%20will%20call%20any%20callback%20added%0A%20%2A%09%09%09%09%09after%20the%20list%20has%20been%20fired%20right%20away%20with%20the%20latest%20%22memorized%22%0A%20%2A%09%09%09%09%09values%20%28like%20a%20Deferred%29%0A%20%2A%0A%20%2A%09unique%3A%09%09%09will%20ensure%20a%20callback%20can%20only%20be%20added%20once%20%28no%20duplicate%20in%20the%20list%29%0A%20%2A%0A%20%2A%09stopOnFalse%3A%09interrupt%20callings%20when%20a%20callback%20returns%20false%0A%20%2A%0A%20%2A/%0AjQuery.Callbacks%20%3D%20function%28%20options%20%29%20%7B%0A%0A%09//%20Convert%20options%20from%20String-formatted%20to%20Object-formatted%20if%20needed%0A%09//%20%28we%20check%20in%20cache%20first%29%0A%09options%20%3D%20typeof%20options%20%3D%3D%3D%20%22string%22%20%3F%0A%09%09createOptions%28%20options%20%29%20%3A%0A%09%09jQuery.extend%28%20%7B%7D%2C%20options%20%29%3B%0A%0A%09var%20//%20Flag%20to%20know%20if%20list%20is%20currently%20firing%0A%09%09firing%2C%0A%0A%09%09//%20Last%20fire%20value%20for%20non-forgettable%20lists%0A%09%09memory%2C%0A%0A%09%09//%20Flag%20to%20know%20if%20list%20was%20already%20fired%0A%09%09fired%2C%0A%0A%09%09//%20Flag%20to%20prevent%20firing%0A%09%09locked%2C%0A%0A%09%09//%20Actual%20callback%20list%0A%09%09list%20%3D%20%5B%5D%2C%0A%0A%09%09//%20Queue%20of%20execution%20data%20for%20repeatable%20lists%0A%09%09queue%20%3D%20%5B%5D%2C%0A%0A%09%09//%20Index%20of%20currently%20firing%20callback%20%28modified%20by%20add/remove%20as%20needed%29%0A%09%09firingIndex%20%3D%20-1%2C%0A%0A%09%09//%20Fire%20callbacks%0A%09%09fire%20%3D%20function%28%29%20%7B%0A%0A%09%09%09//%20Enforce%20single-firing%0A%09%09%09locked%20%3D%20locked%20%7C%7C%20options.once%3B%0A%0A%09%09%09//%20Execute%20callbacks%20for%20all%20pending%20executions%2C%0A%09%09%09//%20respecting%20firingIndex%20overrides%20and%20runtime%20changes%0A%09%09%09fired%20%3D%20firing%20%3D%20true%3B%0A%09%09%09for%20%28%20%3B%20queue.length%3B%20firingIndex%20%3D%20-1%20%29%20%7B%0A%09%09%09%09memory%20%3D%20queue.shift%28%29%3B%0A%09%09%09%09while%20%28%20%2B%2BfiringIndex%20%3C%20list.length%20%29%20%7B%0A%0A%09%09%09%09%09//%20Run%20callback%20and%20check%20for%20early%20termination%0A%09%09%09%09%09if%20%28%20list%5B%20firingIndex%20%5D.apply%28%20memory%5B%200%20%5D%2C%20memory%5B%201%20%5D%20%29%20%3D%3D%3D%20false%20%26%26%0A%09%09%09%09%09%09options.stopOnFalse%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Jump%20to%20end%20and%20forget%20the%20data%20so%20.add%20doesn%27t%20re-fire%0A%09%09%09%09%09%09firingIndex%20%3D%20list.length%3B%0A%09%09%09%09%09%09memory%20%3D%20false%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Forget%20the%20data%20if%20we%27re%20done%20with%20it%0A%09%09%09if%20%28%20%21options.memory%20%29%20%7B%0A%09%09%09%09memory%20%3D%20false%3B%0A%09%09%09%7D%0A%0A%09%09%09firing%20%3D%20false%3B%0A%0A%09%09%09//%20Clean%20up%20if%20we%27re%20done%20firing%20for%20good%0A%09%09%09if%20%28%20locked%20%29%20%7B%0A%0A%09%09%09%09//%20Keep%20an%20empty%20list%20if%20we%20have%20data%20for%20future%20add%20calls%0A%09%09%09%09if%20%28%20memory%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20%5B%5D%3B%0A%0A%09%09%09%09//%20Otherwise%2C%20this%20object%20is%20spent%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09list%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09//%20Actual%20Callbacks%20object%0A%09%09self%20%3D%20%7B%0A%0A%09%09%09//%20Add%20a%20callback%20or%20a%20collection%20of%20callbacks%20to%20the%20list%0A%09%09%09add%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20list%20%29%20%7B%0A%0A%09%09%09%09%09//%20If%20we%20have%20memory%20from%20a%20past%20run%2C%20we%20should%20fire%20after%20adding%0A%09%09%09%09%09if%20%28%20memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09firingIndex%20%3D%20list.length%20-%201%3B%0A%09%09%09%09%09%09queue.push%28%20memory%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%28%20function%20add%28%20args%20%29%20%7B%0A%09%09%09%09%09%09jQuery.each%28%20args%2C%20function%28%20_%2C%20arg%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20isFunction%28%20arg%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09if%20%28%20%21options.unique%20%7C%7C%20%21self.has%28%20arg%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09list.push%28%20arg%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20else%20if%20%28%20arg%20%26%26%20arg.length%20%26%26%20toType%28%20arg%20%29%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Inspect%20recursively%0A%09%09%09%09%09%09%09%09add%28%20arg%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%7D%20%29%28%20arguments%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09fire%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Remove%20a%20callback%20from%20the%20list%0A%09%09%09remove%3A%20function%28%29%20%7B%0A%09%09%09%09jQuery.each%28%20arguments%2C%20function%28%20_%2C%20arg%20%29%20%7B%0A%09%09%09%09%09var%20index%3B%0A%09%09%09%09%09while%20%28%20%28%20index%20%3D%20jQuery.inArray%28%20arg%2C%20list%2C%20index%20%29%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09%09list.splice%28%20index%2C%201%20%29%3B%0A%0A%09%09%09%09%09%09//%20Handle%20firing%20indexes%0A%09%09%09%09%09%09if%20%28%20index%20%3C%3D%20firingIndex%20%29%20%7B%0A%09%09%09%09%09%09%09firingIndex--%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Check%20if%20a%20given%20callback%20is%20in%20the%20list.%0A%09%09%09//%20If%20no%20argument%20is%20given%2C%20return%20whether%20or%20not%20list%20has%20callbacks%20attached.%0A%09%09%09has%3A%20function%28%20fn%20%29%20%7B%0A%09%09%09%09return%20fn%20%3F%0A%09%09%09%09%09jQuery.inArray%28%20fn%2C%20list%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09list.length%20%3E%200%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Remove%20all%20callbacks%20from%20the%20list%0A%09%09%09empty%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20list%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20%5B%5D%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Disable%20.fire%20and%20.add%0A%09%09%09//%20Abort%20any%20current/pending%20executions%0A%09%09%09//%20Clear%20all%20callbacks%20and%20values%0A%09%09%09disable%3A%20function%28%29%20%7B%0A%09%09%09%09locked%20%3D%20queue%20%3D%20%5B%5D%3B%0A%09%09%09%09list%20%3D%20memory%20%3D%20%22%22%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%09%09%09disabled%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21list%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Disable%20.fire%0A%09%09%09//%20Also%20disable%20.add%20unless%20we%20have%20memory%20%28since%20it%20would%20have%20no%20effect%29%0A%09%09%09//%20Abort%20any%20pending%20executions%0A%09%09%09lock%3A%20function%28%29%20%7B%0A%09%09%09%09locked%20%3D%20queue%20%3D%20%5B%5D%3B%0A%09%09%09%09if%20%28%20%21memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20memory%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%09%09%09locked%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21%21locked%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Call%20all%20callbacks%20with%20the%20given%20context%20and%20arguments%0A%09%09%09fireWith%3A%20function%28%20context%2C%20args%20%29%20%7B%0A%09%09%09%09if%20%28%20%21locked%20%29%20%7B%0A%09%09%09%09%09args%20%3D%20args%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09args%20%3D%20%5B%20context%2C%20args.slice%20%3F%20args.slice%28%29%20%3A%20args%20%5D%3B%0A%09%09%09%09%09queue.push%28%20args%20%29%3B%0A%09%09%09%09%09if%20%28%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09fire%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Call%20all%20the%20callbacks%20with%20the%20given%20arguments%0A%09%09%09fire%3A%20function%28%29%20%7B%0A%09%09%09%09self.fireWith%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20To%20know%20if%20the%20callbacks%20have%20already%20been%20called%20at%20least%20once%0A%09%09%09fired%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21%21fired%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%0A%09return%20self%3B%0A%7D%3B%0A%0A%0Afunction%20Identity%28%20v%20%29%20%7B%0A%09return%20v%3B%0A%7D%0Afunction%20Thrower%28%20ex%20%29%20%7B%0A%09throw%20ex%3B%0A%7D%0A%0Afunction%20adoptValue%28%20value%2C%20resolve%2C%20reject%2C%20noValue%20%29%20%7B%0A%09var%20method%3B%0A%0A%09try%20%7B%0A%0A%09%09//%20Check%20for%20promise%20aspect%20first%20to%20privilege%20synchronous%20behavior%0A%09%09if%20%28%20value%20%26%26%20isFunction%28%20%28%20method%20%3D%20value.promise%20%29%20%29%20%29%20%7B%0A%09%09%09method.call%28%20value%20%29.done%28%20resolve%20%29.fail%28%20reject%20%29%3B%0A%0A%09%09//%20Other%20thenables%0A%09%09%7D%20else%20if%20%28%20value%20%26%26%20isFunction%28%20%28%20method%20%3D%20value.then%20%29%20%29%20%29%20%7B%0A%09%09%09method.call%28%20value%2C%20resolve%2C%20reject%20%29%3B%0A%0A%09%09//%20Other%20non-thenables%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Control%20%60resolve%60%20arguments%20by%20letting%20Array%23slice%20cast%20boolean%20%60noValue%60%20to%20integer%3A%0A%09%09%09//%20%2A%20false%3A%20%5B%20value%20%5D.slice%28%200%20%29%20%3D%3E%20resolve%28%20value%20%29%0A%09%09%09//%20%2A%20true%3A%20%5B%20value%20%5D.slice%28%201%20%29%20%3D%3E%20resolve%28%29%0A%09%09%09resolve.apply%28%20undefined%2C%20%5B%20value%20%5D.slice%28%20noValue%20%29%20%29%3B%0A%09%09%7D%0A%0A%09//%20For%20Promises/A%2B%2C%20convert%20exceptions%20into%20rejections%0A%09//%20Since%20jQuery.when%20doesn%27t%20unwrap%20thenables%2C%20we%20can%20skip%20the%20extra%20checks%20appearing%20in%0A%09//%20Deferred%23then%20to%20conditionally%20suppress%20rejection.%0A%09%7D%20catch%20%28%20value%20%29%20%7B%0A%0A%09%09//%20Support%3A%20Android%204.0%20only%0A%09%09//%20Strict%20mode%20functions%20invoked%20without%20.call/.apply%20get%20global-object%20context%0A%09%09reject.apply%28%20undefined%2C%20%5B%20value%20%5D%20%29%3B%0A%09%7D%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09Deferred%3A%20function%28%20func%20%29%20%7B%0A%09%09var%20tuples%20%3D%20%5B%0A%0A%09%09%09%09//%20action%2C%20add%20listener%2C%20callbacks%2C%0A%09%09%09%09//%20...%20.then%20handlers%2C%20argument%20index%2C%20%5Bfinal%20state%5D%0A%09%09%09%09%5B%20%22notify%22%2C%20%22progress%22%2C%20jQuery.Callbacks%28%20%22memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22memory%22%20%29%2C%202%20%5D%2C%0A%09%09%09%09%5B%20%22resolve%22%2C%20%22done%22%2C%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%200%2C%20%22resolved%22%20%5D%2C%0A%09%09%09%09%5B%20%22reject%22%2C%20%22fail%22%2C%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%201%2C%20%22rejected%22%20%5D%0A%09%09%09%5D%2C%0A%09%09%09state%20%3D%20%22pending%22%2C%0A%09%09%09promise%20%3D%20%7B%0A%09%09%09%09state%3A%20function%28%29%20%7B%0A%09%09%09%09%09return%20state%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09always%3A%20function%28%29%20%7B%0A%09%09%09%09%09deferred.done%28%20arguments%20%29.fail%28%20arguments%20%29%3B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09%22catch%22%3A%20function%28%20fn%20%29%20%7B%0A%09%09%09%09%09return%20promise.then%28%20null%2C%20fn%20%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Keep%20pipe%20for%20back-compat%0A%09%09%09%09pipe%3A%20function%28%20/%2A%20fnDone%2C%20fnFail%2C%20fnProgress%20%2A/%20%29%20%7B%0A%09%09%09%09%09var%20fns%20%3D%20arguments%3B%0A%0A%09%09%09%09%09return%20jQuery.Deferred%28%20function%28%20newDefer%20%29%20%7B%0A%09%09%09%09%09%09jQuery.each%28%20tuples%2C%20function%28%20_i%2C%20tuple%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Map%20tuples%20%28progress%2C%20done%2C%20fail%29%20to%20arguments%20%28done%2C%20fail%2C%20progress%29%0A%09%09%09%09%09%09%09var%20fn%20%3D%20isFunction%28%20fns%5B%20tuple%5B%204%20%5D%20%5D%20%29%20%26%26%20fns%5B%20tuple%5B%204%20%5D%20%5D%3B%0A%0A%09%09%09%09%09%09%09//%20deferred.progress%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.notify%20%7D%29%0A%09%09%09%09%09%09%09//%20deferred.done%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.resolve%20%7D%29%0A%09%09%09%09%09%09%09//%20deferred.fail%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.reject%20%7D%29%0A%09%09%09%09%09%09%09deferred%5B%20tuple%5B%201%20%5D%20%5D%28%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09var%20returned%20%3D%20fn%20%26%26%20fn.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09%09%09%09%09if%20%28%20returned%20%26%26%20isFunction%28%20returned.promise%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09returned.promise%28%29%0A%09%09%09%09%09%09%09%09%09%09.progress%28%20newDefer.notify%20%29%0A%09%09%09%09%09%09%09%09%09%09.done%28%20newDefer.resolve%20%29%0A%09%09%09%09%09%09%09%09%09%09.fail%28%20newDefer.reject%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09%09newDefer%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%28%0A%09%09%09%09%09%09%09%09%09%09this%2C%0A%09%09%09%09%09%09%09%09%09%09fn%20%3F%20%5B%20returned%20%5D%20%3A%20arguments%0A%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09fns%20%3D%20null%3B%0A%09%09%09%09%09%7D%20%29.promise%28%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09then%3A%20function%28%20onFulfilled%2C%20onRejected%2C%20onProgress%20%29%20%7B%0A%09%09%09%09%09var%20maxDepth%20%3D%200%3B%0A%09%09%09%09%09function%20resolve%28%20depth%2C%20deferred%2C%20handler%2C%20special%20%29%20%7B%0A%09%09%09%09%09%09return%20function%28%29%20%7B%0A%09%09%09%09%09%09%09var%20that%20%3D%20this%2C%0A%09%09%09%09%09%09%09%09args%20%3D%20arguments%2C%0A%09%09%09%09%09%09%09%09mightThrow%20%3D%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09%09var%20returned%2C%20then%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.3%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-59%0A%09%09%09%09%09%09%09%09%09//%20Ignore%20double-resolution%20attempts%0A%09%09%09%09%09%09%09%09%09if%20%28%20depth%20%3C%20maxDepth%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09returned%20%3D%20handler.apply%28%20that%2C%20args%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.1%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-48%0A%09%09%09%09%09%09%09%09%09if%20%28%20returned%20%3D%3D%3D%20deferred.promise%28%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09throw%20new%20TypeError%28%20%22Thenable%20self-resolution%22%20%29%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20sections%202.3.3.1%2C%203.5%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-54%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-75%0A%09%09%09%09%09%09%09%09%09//%20Retrieve%20%60then%60%20only%20once%0A%09%09%09%09%09%09%09%09%09then%20%3D%20returned%20%26%26%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.4%0A%09%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-64%0A%09%09%09%09%09%09%09%09%09%09//%20Only%20check%20objects%20and%20functions%20for%20thenability%0A%09%09%09%09%09%09%09%09%09%09%28%20typeof%20returned%20%3D%3D%3D%20%22object%22%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09typeof%20returned%20%3D%3D%3D%20%22function%22%20%29%20%26%26%0A%09%09%09%09%09%09%09%09%09%09returned.then%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Handle%20a%20returned%20thenable%0A%09%09%09%09%09%09%09%09%09if%20%28%20isFunction%28%20then%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Special%20processors%20%28notify%29%20just%20wait%20for%20resolution%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20special%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09then.call%28%0A%09%09%09%09%09%09%09%09%09%09%09%09returned%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Thrower%2C%20special%20%29%0A%09%09%09%09%09%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Normal%20processors%20%28resolve%29%20also%20hook%20into%20progress%0A%09%09%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20...and%20disregard%20older%20resolution%20values%0A%09%09%09%09%09%09%09%09%09%09%09maxDepth%2B%2B%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09then.call%28%0A%09%09%09%09%09%09%09%09%09%09%09%09returned%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Thrower%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09%09deferred.notifyWith%20%29%0A%09%09%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09//%20Handle%20all%20other%20returned%20values%0A%09%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Only%20substitute%20handlers%20pass%20on%20context%0A%09%09%09%09%09%09%09%09%09%09//%20and%20multiple%20values%20%28non-spec%20behavior%29%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20handler%20%21%3D%3D%20Identity%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09that%20%3D%20undefined%3B%0A%09%09%09%09%09%09%09%09%09%09%09args%20%3D%20%5B%20returned%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Process%20the%20value%28s%29%0A%09%09%09%09%09%09%09%09%09%09//%20Default%20process%20is%20resolve%0A%09%09%09%09%09%09%09%09%09%09%28%20special%20%7C%7C%20deferred.resolveWith%20%29%28%20that%2C%20args%20%29%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09%09%09%09//%20Only%20normal%20processors%20%28resolve%29%20catch%20and%20reject%20exceptions%0A%09%09%09%09%09%09%09%09process%20%3D%20special%20%3F%0A%09%09%09%09%09%09%09%09%09mightThrow%20%3A%0A%09%09%09%09%09%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09mightThrow%28%29%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09if%20%28%20jQuery.Deferred.exceptionHook%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09%09jQuery.Deferred.exceptionHook%28%20e%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09%09process.stackTrace%20%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.4.1%0A%09%09%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-61%0A%09%09%09%09%09%09%09%09%09%09%09//%20Ignore%20post-resolution%20exceptions%0A%09%09%09%09%09%09%09%09%09%09%09if%20%28%20depth%20%2B%201%20%3E%3D%20maxDepth%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09%09//%20Only%20substitute%20handlers%20pass%20on%20context%0A%09%09%09%09%09%09%09%09%09%09%09%09//%20and%20multiple%20values%20%28non-spec%20behavior%29%0A%09%09%09%09%09%09%09%09%09%09%09%09if%20%28%20handler%20%21%3D%3D%20Thrower%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09%09%09that%20%3D%20undefined%3B%0A%09%09%09%09%09%09%09%09%09%09%09%09%09args%20%3D%20%5B%20e%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09%09%09deferred.rejectWith%28%20that%2C%20args%20%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%7D%3B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.1%0A%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-57%0A%09%09%09%09%09%09%09//%20Re-resolve%20promises%20immediately%20to%20dodge%20false%20rejection%20from%0A%09%09%09%09%09%09%09//%20subsequent%20errors%0A%09%09%09%09%09%09%09if%20%28%20depth%20%29%20%7B%0A%09%09%09%09%09%09%09%09process%28%29%3B%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Call%20an%20optional%20hook%20to%20record%20the%20stack%2C%20in%20case%20of%20exception%0A%09%09%09%09%09%09%09%09//%20since%20it%27s%20otherwise%20lost%20when%20execution%20goes%20async%0A%09%09%09%09%09%09%09%09if%20%28%20jQuery.Deferred.getStackHook%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09process.stackTrace%20%3D%20jQuery.Deferred.getStackHook%28%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09window.setTimeout%28%20process%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09return%20jQuery.Deferred%28%20function%28%20newDefer%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20progress_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%200%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onProgress%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onProgress%20%3A%0A%09%09%09%09%09%09%09%09%09Identity%2C%0A%09%09%09%09%09%09%09%09newDefer.notifyWith%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09//%20fulfilled_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%201%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onFulfilled%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onFulfilled%20%3A%0A%09%09%09%09%09%09%09%09%09Identity%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09//%20rejected_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%202%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onRejected%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onRejected%20%3A%0A%09%09%09%09%09%09%09%09%09Thrower%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%7D%20%29.promise%28%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Get%20a%20promise%20for%20this%20deferred%0A%09%09%09%09//%20If%20obj%20is%20provided%2C%20the%20promise%20aspect%20is%20added%20to%20the%20object%0A%09%09%09%09promise%3A%20function%28%20obj%20%29%20%7B%0A%09%09%09%09%09return%20obj%20%21%3D%20null%20%3F%20jQuery.extend%28%20obj%2C%20promise%20%29%20%3A%20promise%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%09%09%09deferred%20%3D%20%7B%7D%3B%0A%0A%09%09//%20Add%20list-specific%20methods%0A%09%09jQuery.each%28%20tuples%2C%20function%28%20i%2C%20tuple%20%29%20%7B%0A%09%09%09var%20list%20%3D%20tuple%5B%202%20%5D%2C%0A%09%09%09%09stateString%20%3D%20tuple%5B%205%20%5D%3B%0A%0A%09%09%09//%20promise.progress%20%3D%20list.add%0A%09%09%09//%20promise.done%20%3D%20list.add%0A%09%09%09//%20promise.fail%20%3D%20list.add%0A%09%09%09promise%5B%20tuple%5B%201%20%5D%20%5D%20%3D%20list.add%3B%0A%0A%09%09%09//%20Handle%20state%0A%09%09%09if%20%28%20stateString%20%29%20%7B%0A%09%09%09%09list.add%28%0A%09%09%09%09%09function%28%29%20%7B%0A%0A%09%09%09%09%09%09//%20state%20%3D%20%22resolved%22%20%28i.e.%2C%20fulfilled%29%0A%09%09%09%09%09%09//%20state%20%3D%20%22rejected%22%0A%09%09%09%09%09%09state%20%3D%20stateString%3B%0A%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09//%20rejected_callbacks.disable%0A%09%09%09%09%09//%20fulfilled_callbacks.disable%0A%09%09%09%09%09tuples%5B%203%20-%20i%20%5D%5B%202%20%5D.disable%2C%0A%0A%09%09%09%09%09//%20rejected_handlers.disable%0A%09%09%09%09%09//%20fulfilled_handlers.disable%0A%09%09%09%09%09tuples%5B%203%20-%20i%20%5D%5B%203%20%5D.disable%2C%0A%0A%09%09%09%09%09//%20progress_callbacks.lock%0A%09%09%09%09%09tuples%5B%200%20%5D%5B%202%20%5D.lock%2C%0A%0A%09%09%09%09%09//%20progress_handlers.lock%0A%09%09%09%09%09tuples%5B%200%20%5D%5B%203%20%5D.lock%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20progress_handlers.fire%0A%09%09%09//%20fulfilled_handlers.fire%0A%09%09%09//%20rejected_handlers.fire%0A%09%09%09list.add%28%20tuple%5B%203%20%5D.fire%20%29%3B%0A%0A%09%09%09//%20deferred.notify%20%3D%20function%28%29%20%7B%20deferred.notifyWith%28...%29%20%7D%0A%09%09%09//%20deferred.resolve%20%3D%20function%28%29%20%7B%20deferred.resolveWith%28...%29%20%7D%0A%09%09%09//%20deferred.reject%20%3D%20function%28%29%20%7B%20deferred.rejectWith%28...%29%20%7D%0A%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%28%20this%20%3D%3D%3D%20deferred%20%3F%20undefined%20%3A%20this%2C%20arguments%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%3B%0A%0A%09%09%09//%20deferred.notifyWith%20%3D%20list.fireWith%0A%09%09%09//%20deferred.resolveWith%20%3D%20list.fireWith%0A%09%09%09//%20deferred.rejectWith%20%3D%20list.fireWith%0A%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%20%3D%20list.fireWith%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09//%20Make%20the%20deferred%20a%20promise%0A%09%09promise.promise%28%20deferred%20%29%3B%0A%0A%09%09//%20Call%20given%20func%20if%20any%0A%09%09if%20%28%20func%20%29%20%7B%0A%09%09%09func.call%28%20deferred%2C%20deferred%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20All%20done%21%0A%09%09return%20deferred%3B%0A%09%7D%2C%0A%0A%09//%20Deferred%20helper%0A%09when%3A%20function%28%20singleValue%20%29%20%7B%0A%09%09var%0A%0A%09%09%09//%20count%20of%20uncompleted%20subordinates%0A%09%09%09remaining%20%3D%20arguments.length%2C%0A%0A%09%09%09//%20count%20of%20unprocessed%20arguments%0A%09%09%09i%20%3D%20remaining%2C%0A%0A%09%09%09//%20subordinate%20fulfillment%20data%0A%09%09%09resolveContexts%20%3D%20Array%28%20i%20%29%2C%0A%09%09%09resolveValues%20%3D%20slice.call%28%20arguments%20%29%2C%0A%0A%09%09%09//%20the%20master%20Deferred%0A%09%09%09master%20%3D%20jQuery.Deferred%28%29%2C%0A%0A%09%09%09//%20subordinate%20callback%20factory%0A%09%09%09updateFunc%20%3D%20function%28%20i%20%29%20%7B%0A%09%09%09%09return%20function%28%20value%20%29%20%7B%0A%09%09%09%09%09resolveContexts%5B%20i%20%5D%20%3D%20this%3B%0A%09%09%09%09%09resolveValues%5B%20i%20%5D%20%3D%20arguments.length%20%3E%201%20%3F%20slice.call%28%20arguments%20%29%20%3A%20value%3B%0A%09%09%09%09%09if%20%28%20%21%28%20--remaining%20%29%20%29%20%7B%0A%09%09%09%09%09%09master.resolveWith%28%20resolveContexts%2C%20resolveValues%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%0A%09%09//%20Single-%20and%20empty%20arguments%20are%20adopted%20like%20Promise.resolve%0A%09%09if%20%28%20remaining%20%3C%3D%201%20%29%20%7B%0A%09%09%09adoptValue%28%20singleValue%2C%20master.done%28%20updateFunc%28%20i%20%29%20%29.resolve%2C%20master.reject%2C%0A%09%09%09%09%21remaining%20%29%3B%0A%0A%09%09%09//%20Use%20.then%28%29%20to%20unwrap%20secondary%20thenables%20%28cf.%20gh-3000%29%0A%09%09%09if%20%28%20master.state%28%29%20%3D%3D%3D%20%22pending%22%20%7C%7C%0A%09%09%09%09isFunction%28%20resolveValues%5B%20i%20%5D%20%26%26%20resolveValues%5B%20i%20%5D.then%20%29%20%29%20%7B%0A%0A%09%09%09%09return%20master.then%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Multiple%20arguments%20are%20aggregated%20like%20Promise.all%20array%20elements%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09adoptValue%28%20resolveValues%5B%20i%20%5D%2C%20updateFunc%28%20i%20%29%2C%20master.reject%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20master.promise%28%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20These%20usually%20indicate%20a%20programmer%20mistake%20during%20development%2C%0A//%20warn%20about%20them%20ASAP%20rather%20than%20swallowing%20them%20by%20default.%0Avar%20rerrorNames%20%3D%20/%5E%28Eval%7CInternal%7CRange%7CReference%7CSyntax%7CType%7CURI%29Error%24/%3B%0A%0AjQuery.Deferred.exceptionHook%20%3D%20function%28%20error%2C%20stack%20%29%20%7B%0A%0A%09//%20Support%3A%20IE%208%20-%209%20only%0A%09//%20Console%20exists%20when%20dev%20tools%20are%20open%2C%20which%20can%20happen%20at%20any%20time%0A%09if%20%28%20window.console%20%26%26%20window.console.warn%20%26%26%20error%20%26%26%20rerrorNames.test%28%20error.name%20%29%20%29%20%7B%0A%09%09window.console.warn%28%20%22jQuery.Deferred%20exception%3A%20%22%20%2B%20error.message%2C%20error.stack%2C%20stack%20%29%3B%0A%09%7D%0A%7D%3B%0A%0A%0A%0A%0AjQuery.readyException%20%3D%20function%28%20error%20%29%20%7B%0A%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09throw%20error%3B%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0A//%20The%20deferred%20used%20on%20DOM%20ready%0Avar%20readyList%20%3D%20jQuery.Deferred%28%29%3B%0A%0AjQuery.fn.ready%20%3D%20function%28%20fn%20%29%20%7B%0A%0A%09readyList%0A%09%09.then%28%20fn%20%29%0A%0A%09%09//%20Wrap%20jQuery.readyException%20in%20a%20function%20so%20that%20the%20lookup%0A%09%09//%20happens%20at%20the%20time%20of%20error%20handling%20instead%20of%20callback%0A%09%09//%20registration.%0A%09%09.catch%28%20function%28%20error%20%29%20%7B%0A%09%09%09jQuery.readyException%28%20error%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09return%20this%3B%0A%7D%3B%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Is%20the%20DOM%20ready%20to%20be%20used%3F%20Set%20to%20true%20once%20it%20occurs.%0A%09isReady%3A%20false%2C%0A%0A%09//%20A%20counter%20to%20track%20how%20many%20items%20to%20wait%20for%20before%0A%09//%20the%20ready%20event%20fires.%20See%20%236781%0A%09readyWait%3A%201%2C%0A%0A%09//%20Handle%20when%20the%20DOM%20is%20ready%0A%09ready%3A%20function%28%20wait%20%29%20%7B%0A%0A%09%09//%20Abort%20if%20there%20are%20pending%20holds%20or%20we%27re%20already%20ready%0A%09%09if%20%28%20wait%20%3D%3D%3D%20true%20%3F%20--jQuery.readyWait%20%3A%20jQuery.isReady%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Remember%20that%20the%20DOM%20is%20ready%0A%09%09jQuery.isReady%20%3D%20true%3B%0A%0A%09%09//%20If%20a%20normal%20DOM%20Ready%20event%20fired%2C%20decrement%2C%20and%20wait%20if%20need%20be%0A%09%09if%20%28%20wait%20%21%3D%3D%20true%20%26%26%20--jQuery.readyWait%20%3E%200%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20If%20there%20are%20functions%20bound%2C%20to%20execute%0A%09%09readyList.resolveWith%28%20document%2C%20%5B%20jQuery%20%5D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.ready.then%20%3D%20readyList.then%3B%0A%0A//%20The%20ready%20event%20handler%20and%20self%20cleanup%20method%0Afunction%20completed%28%29%20%7B%0A%09document.removeEventListener%28%20%22DOMContentLoaded%22%2C%20completed%20%29%3B%0A%09window.removeEventListener%28%20%22load%22%2C%20completed%20%29%3B%0A%09jQuery.ready%28%29%3B%0A%7D%0A%0A//%20Catch%20cases%20where%20%24%28document%29.ready%28%29%20is%20called%0A//%20after%20the%20browser%20event%20has%20already%20occurred.%0A//%20Support%3A%20IE%20%3C%3D9%20-%2010%20only%0A//%20Older%20IE%20sometimes%20signals%20%22interactive%22%20too%20soon%0Aif%20%28%20document.readyState%20%3D%3D%3D%20%22complete%22%20%7C%7C%0A%09%28%20document.readyState%20%21%3D%3D%20%22loading%22%20%26%26%20%21document.documentElement.doScroll%20%29%20%29%20%7B%0A%0A%09//%20Handle%20it%20asynchronously%20to%20allow%20scripts%20the%20opportunity%20to%20delay%20ready%0A%09window.setTimeout%28%20jQuery.ready%20%29%3B%0A%0A%7D%20else%20%7B%0A%0A%09//%20Use%20the%20handy%20event%20callback%0A%09document.addEventListener%28%20%22DOMContentLoaded%22%2C%20completed%20%29%3B%0A%0A%09//%20A%20fallback%20to%20window.onload%2C%20that%20will%20always%20work%0A%09window.addEventListener%28%20%22load%22%2C%20completed%20%29%3B%0A%7D%0A%0A%0A%0A%0A//%20Multifunctional%20method%20to%20get%20and%20set%20values%20of%20a%20collection%0A//%20The%20value/s%20can%20optionally%20be%20executed%20if%20it%27s%20a%20function%0Avar%20access%20%3D%20function%28%20elems%2C%20fn%2C%20key%2C%20value%2C%20chainable%2C%20emptyGet%2C%20raw%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20elems.length%2C%0A%09%09bulk%20%3D%20key%20%3D%3D%20null%3B%0A%0A%09//%20Sets%20many%20values%0A%09if%20%28%20toType%28%20key%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09chainable%20%3D%20true%3B%0A%09%09for%20%28%20i%20in%20key%20%29%20%7B%0A%09%09%09access%28%20elems%2C%20fn%2C%20i%2C%20key%5B%20i%20%5D%2C%20true%2C%20emptyGet%2C%20raw%20%29%3B%0A%09%09%7D%0A%0A%09//%20Sets%20one%20value%0A%09%7D%20else%20if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09chainable%20%3D%20true%3B%0A%0A%09%09if%20%28%20%21isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09raw%20%3D%20true%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20bulk%20%29%20%7B%0A%0A%09%09%09//%20Bulk%20operations%20run%20against%20the%20entire%20set%0A%09%09%09if%20%28%20raw%20%29%20%7B%0A%09%09%09%09fn.call%28%20elems%2C%20value%20%29%3B%0A%09%09%09%09fn%20%3D%20null%3B%0A%0A%09%09%09//%20...except%20when%20executing%20function%20values%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09bulk%20%3D%20fn%3B%0A%09%09%09%09fn%20%3D%20function%28%20elem%2C%20_key%2C%20value%20%29%20%7B%0A%09%09%09%09%09return%20bulk.call%28%20jQuery%28%20elem%20%29%2C%20value%20%29%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20fn%20%29%20%7B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09fn%28%0A%09%09%09%09%09elems%5B%20i%20%5D%2C%20key%2C%20raw%20%3F%0A%09%09%09%09%09value%20%3A%0A%09%09%09%09%09value.call%28%20elems%5B%20i%20%5D%2C%20i%2C%20fn%28%20elems%5B%20i%20%5D%2C%20key%20%29%20%29%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20chainable%20%29%20%7B%0A%09%09return%20elems%3B%0A%09%7D%0A%0A%09//%20Gets%0A%09if%20%28%20bulk%20%29%20%7B%0A%09%09return%20fn.call%28%20elems%20%29%3B%0A%09%7D%0A%0A%09return%20len%20%3F%20fn%28%20elems%5B%200%20%5D%2C%20key%20%29%20%3A%20emptyGet%3B%0A%7D%3B%0A%0A%0A//%20Matches%20dashed%20string%20for%20camelizing%0Avar%20rmsPrefix%20%3D%20/%5E-ms-/%2C%0A%09rdashAlpha%20%3D%20/-%28%5Ba-z%5D%29/g%3B%0A%0A//%20Used%20by%20camelCase%20as%20callback%20to%20replace%28%29%0Afunction%20fcamelCase%28%20_all%2C%20letter%20%29%20%7B%0A%09return%20letter.toUpperCase%28%29%3B%0A%7D%0A%0A//%20Convert%20dashed%20to%20camelCase%3B%20used%20by%20the%20css%20and%20data%20modules%0A//%20Support%3A%20IE%20%3C%3D9%20-%2011%2C%20Edge%2012%20-%2015%0A//%20Microsoft%20forgot%20to%20hump%20their%20vendor%20prefix%20%28%239572%29%0Afunction%20camelCase%28%20string%20%29%20%7B%0A%09return%20string.replace%28%20rmsPrefix%2C%20%22ms-%22%20%29.replace%28%20rdashAlpha%2C%20fcamelCase%20%29%3B%0A%7D%0Avar%20acceptData%20%3D%20function%28%20owner%20%29%20%7B%0A%0A%09//%20Accepts%20only%3A%0A%09//%20%20-%20Node%0A%09//%20%20%20%20-%20Node.ELEMENT_NODE%0A%09//%20%20%20%20-%20Node.DOCUMENT_NODE%0A%09//%20%20-%20Object%0A%09//%20%20%20%20-%20Any%0A%09return%20owner.nodeType%20%3D%3D%3D%201%20%7C%7C%20owner.nodeType%20%3D%3D%3D%209%20%7C%7C%20%21%28%20%2Bowner.nodeType%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0Afunction%20Data%28%29%20%7B%0A%09this.expando%20%3D%20jQuery.expando%20%2B%20Data.uid%2B%2B%3B%0A%7D%0A%0AData.uid%20%3D%201%3B%0A%0AData.prototype%20%3D%20%7B%0A%0A%09cache%3A%20function%28%20owner%20%29%20%7B%0A%0A%09%09//%20Check%20if%20the%20owner%20object%20already%20has%20a%20cache%0A%09%09var%20value%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%0A%09%09//%20If%20not%2C%20create%20one%0A%09%09if%20%28%20%21value%20%29%20%7B%0A%09%09%09value%20%3D%20%7B%7D%3B%0A%0A%09%09%09//%20We%20can%20accept%20data%20for%20non-element%20nodes%20in%20modern%20browsers%2C%0A%09%09%09//%20but%20we%20should%20not%2C%20see%20%238335.%0A%09%09%09//%20Always%20return%20an%20empty%20object.%0A%09%09%09if%20%28%20acceptData%28%20owner%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20it%20is%20a%20node%20unlikely%20to%20be%20stringify-ed%20or%20looped%20over%0A%09%09%09%09//%20use%20plain%20assignment%0A%09%09%09%09if%20%28%20owner.nodeType%20%29%20%7B%0A%09%09%09%09%09owner%5B%20this.expando%20%5D%20%3D%20value%3B%0A%0A%09%09%09%09//%20Otherwise%20secure%20it%20in%20a%20non-enumerable%20property%0A%09%09%09%09//%20configurable%20must%20be%20true%20to%20allow%20the%20property%20to%20be%0A%09%09%09%09//%20deleted%20when%20data%20is%20removed%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09Object.defineProperty%28%20owner%2C%20this.expando%2C%20%7B%0A%09%09%09%09%09%09value%3A%20value%2C%0A%09%09%09%09%09%09configurable%3A%20true%0A%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20value%3B%0A%09%7D%2C%0A%09set%3A%20function%28%20owner%2C%20data%2C%20value%20%29%20%7B%0A%09%09var%20prop%2C%0A%09%09%09cache%20%3D%20this.cache%28%20owner%20%29%3B%0A%0A%09%09//%20Handle%3A%20%5B%20owner%2C%20key%2C%20value%20%5D%20args%0A%09%09//%20Always%20use%20camelCase%20key%20%28gh-2257%29%0A%09%09if%20%28%20typeof%20data%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09cache%5B%20camelCase%28%20data%20%29%20%5D%20%3D%20value%3B%0A%0A%09%09//%20Handle%3A%20%5B%20owner%2C%20%7B%20properties%20%7D%20%5D%20args%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Copy%20the%20properties%20one-by-one%20to%20the%20cache%20object%0A%09%09%09for%20%28%20prop%20in%20data%20%29%20%7B%0A%09%09%09%09cache%5B%20camelCase%28%20prop%20%29%20%5D%20%3D%20data%5B%20prop%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20cache%3B%0A%09%7D%2C%0A%09get%3A%20function%28%20owner%2C%20key%20%29%20%7B%0A%09%09return%20key%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09this.cache%28%20owner%20%29%20%3A%0A%0A%09%09%09//%20Always%20use%20camelCase%20key%20%28gh-2257%29%0A%09%09%09owner%5B%20this.expando%20%5D%20%26%26%20owner%5B%20this.expando%20%5D%5B%20camelCase%28%20key%20%29%20%5D%3B%0A%09%7D%2C%0A%09access%3A%20function%28%20owner%2C%20key%2C%20value%20%29%20%7B%0A%0A%09%09//%20In%20cases%20where%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20No%20key%20was%20specified%0A%09%09//%20%20%202.%20A%20string%20key%20was%20specified%2C%20but%20no%20value%20provided%0A%09%09//%0A%09%09//%20Take%20the%20%22read%22%20path%20and%20allow%20the%20get%20method%20to%20determine%0A%09%09//%20which%20value%20to%20return%2C%20respectively%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20The%20entire%20cache%20object%0A%09%09//%20%20%202.%20The%20data%20stored%20at%20the%20key%0A%09%09//%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%7C%7C%0A%09%09%09%09%28%20%28%20key%20%26%26%20typeof%20key%20%3D%3D%3D%20%22string%22%20%29%20%26%26%20value%20%3D%3D%3D%20undefined%20%29%20%29%20%7B%0A%0A%09%09%09return%20this.get%28%20owner%2C%20key%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20When%20the%20key%20is%20not%20a%20string%2C%20or%20both%20a%20key%20and%20value%0A%09%09//%20are%20specified%2C%20set%20or%20extend%20%28existing%20objects%29%20with%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20An%20object%20of%20properties%0A%09%09//%20%20%202.%20A%20key%20and%20value%0A%09%09//%0A%09%09this.set%28%20owner%2C%20key%2C%20value%20%29%3B%0A%0A%09%09//%20Since%20the%20%22set%22%20path%20can%20have%20two%20possible%20entry%20points%0A%09%09//%20return%20the%20expected%20data%20based%20on%20which%20path%20was%20taken%5B%2A%5D%0A%09%09return%20value%20%21%3D%3D%20undefined%20%3F%20value%20%3A%20key%3B%0A%09%7D%2C%0A%09remove%3A%20function%28%20owner%2C%20key%20%29%20%7B%0A%09%09var%20i%2C%0A%09%09%09cache%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%0A%09%09if%20%28%20cache%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20key%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09//%20Support%20array%20or%20space%20separated%20string%20of%20keys%0A%09%09%09if%20%28%20Array.isArray%28%20key%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20key%20is%20an%20array%20of%20keys...%0A%09%09%09%09//%20We%20always%20set%20camelCase%20keys%2C%20so%20remove%20that.%0A%09%09%09%09key%20%3D%20key.map%28%20camelCase%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09key%20%3D%20camelCase%28%20key%20%29%3B%0A%0A%09%09%09%09//%20If%20a%20key%20with%20the%20spaces%20exists%2C%20use%20it.%0A%09%09%09%09//%20Otherwise%2C%20create%20an%20array%20by%20matching%20non-whitespace%0A%09%09%09%09key%20%3D%20key%20in%20cache%20%3F%0A%09%09%09%09%09%5B%20key%20%5D%20%3A%0A%09%09%09%09%09%28%20key.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09i%20%3D%20key.length%3B%0A%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09delete%20cache%5B%20key%5B%20i%20%5D%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Remove%20the%20expando%20if%20there%27s%20no%20more%20data%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%7C%7C%20jQuery.isEmptyObject%28%20cache%20%29%20%29%20%7B%0A%0A%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%0A%09%09%09//%20Webkit%20%26%20Blink%20performance%20suffers%20when%20deleting%20properties%0A%09%09%09//%20from%20DOM%20nodes%2C%20so%20set%20to%20undefined%20instead%0A%09%09%09//%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D378607%20%28bug%20restricted%29%0A%09%09%09if%20%28%20owner.nodeType%20%29%20%7B%0A%09%09%09%09owner%5B%20this.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09delete%20owner%5B%20this.expando%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%09hasData%3A%20function%28%20owner%20%29%20%7B%0A%09%09var%20cache%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%09%09return%20cache%20%21%3D%3D%20undefined%20%26%26%20%21jQuery.isEmptyObject%28%20cache%20%29%3B%0A%09%7D%0A%7D%3B%0Avar%20dataPriv%20%3D%20new%20Data%28%29%3B%0A%0Avar%20dataUser%20%3D%20new%20Data%28%29%3B%0A%0A%0A%0A//%09Implementation%20Summary%0A//%0A//%091.%20Enforce%20API%20surface%20and%20semantic%20compatibility%20with%201.9.x%20branch%0A//%092.%20Improve%20the%20module%27s%20maintainability%20by%20reducing%20the%20storage%0A//%09%09paths%20to%20a%20single%20mechanism.%0A//%093.%20Use%20the%20same%20single%20mechanism%20to%20support%20%22private%22%20and%20%22user%22%20data.%0A//%094.%20_Never_%20expose%20%22private%22%20data%20to%20user%20code%20%28TODO%3A%20Drop%20_data%2C%20_removeData%29%0A//%095.%20Avoid%20exposing%20implementation%20details%20on%20user%20objects%20%28eg.%20expando%20properties%29%0A//%096.%20Provide%20a%20clear%20path%20for%20implementation%20upgrade%20to%20WeakMap%20in%202014%0A%0Avar%20rbrace%20%3D%20/%5E%28%3F%3A%5C%7B%5B%5Cw%5CW%5D%2A%5C%7D%7C%5C%5B%5B%5Cw%5CW%5D%2A%5C%5D%29%24/%2C%0A%09rmultiDash%20%3D%20/%5BA-Z%5D/g%3B%0A%0Afunction%20getData%28%20data%20%29%20%7B%0A%09if%20%28%20data%20%3D%3D%3D%20%22true%22%20%29%20%7B%0A%09%09return%20true%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%3D%20%22false%22%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%3D%20%22null%22%20%29%20%7B%0A%09%09return%20null%3B%0A%09%7D%0A%0A%09//%20Only%20convert%20to%20a%20number%20if%20it%20doesn%27t%20change%20the%20string%0A%09if%20%28%20data%20%3D%3D%3D%20%2Bdata%20%2B%20%22%22%20%29%20%7B%0A%09%09return%20%2Bdata%3B%0A%09%7D%0A%0A%09if%20%28%20rbrace.test%28%20data%20%29%20%29%20%7B%0A%09%09return%20JSON.parse%28%20data%20%29%3B%0A%09%7D%0A%0A%09return%20data%3B%0A%7D%0A%0Afunction%20dataAttr%28%20elem%2C%20key%2C%20data%20%29%20%7B%0A%09var%20name%3B%0A%0A%09//%20If%20nothing%20was%20found%20internally%2C%20try%20to%20fetch%20any%0A%09//%20data%20from%20the%20HTML5%20data-%2A%20attribute%0A%09if%20%28%20data%20%3D%3D%3D%20undefined%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09name%20%3D%20%22data-%22%20%2B%20key.replace%28%20rmultiDash%2C%20%22-%24%26%22%20%29.toLowerCase%28%29%3B%0A%09%09data%20%3D%20elem.getAttribute%28%20name%20%29%3B%0A%0A%09%09if%20%28%20typeof%20data%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09data%20%3D%20getData%28%20data%20%29%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%0A%09%09%09//%20Make%20sure%20we%20set%20the%20data%20so%20it%20isn%27t%20changed%20later%0A%09%09%09dataUser.set%28%20elem%2C%20key%2C%20data%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%0A%09%7D%0A%09return%20data%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%09hasData%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dataUser.hasData%28%20elem%20%29%20%7C%7C%20dataPriv.hasData%28%20elem%20%29%3B%0A%09%7D%2C%0A%0A%09data%3A%20function%28%20elem%2C%20name%2C%20data%20%29%20%7B%0A%09%09return%20dataUser.access%28%20elem%2C%20name%2C%20data%20%29%3B%0A%09%7D%2C%0A%0A%09removeData%3A%20function%28%20elem%2C%20name%20%29%20%7B%0A%09%09dataUser.remove%28%20elem%2C%20name%20%29%3B%0A%09%7D%2C%0A%0A%09//%20TODO%3A%20Now%20that%20all%20calls%20to%20_data%20and%20_removeData%20have%20been%20replaced%0A%09//%20with%20direct%20calls%20to%20dataPriv%20methods%2C%20these%20can%20be%20deprecated.%0A%09_data%3A%20function%28%20elem%2C%20name%2C%20data%20%29%20%7B%0A%09%09return%20dataPriv.access%28%20elem%2C%20name%2C%20data%20%29%3B%0A%09%7D%2C%0A%0A%09_removeData%3A%20function%28%20elem%2C%20name%20%29%20%7B%0A%09%09dataPriv.remove%28%20elem%2C%20name%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09data%3A%20function%28%20key%2C%20value%20%29%20%7B%0A%09%09var%20i%2C%20name%2C%20data%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%2C%0A%09%09%09attrs%20%3D%20elem%20%26%26%20elem.attributes%3B%0A%0A%09%09//%20Gets%20all%20values%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20this.length%20%29%20%7B%0A%09%09%09%09data%20%3D%20dataUser.get%28%20elem%20%29%3B%0A%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%21dataPriv.get%28%20elem%2C%20%22hasDataAttrs%22%20%29%20%29%20%7B%0A%09%09%09%09%09i%20%3D%20attrs.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%2011%20only%0A%09%09%09%09%09%09//%20The%20attrs%20elements%20can%20be%20null%20%28%2314894%29%0A%09%09%09%09%09%09if%20%28%20attrs%5B%20i%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09name%20%3D%20attrs%5B%20i%20%5D.name%3B%0A%09%09%09%09%09%09%09if%20%28%20name.indexOf%28%20%22data-%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09%09%09%09%09%09name%20%3D%20camelCase%28%20name.slice%28%205%20%29%20%29%3B%0A%09%09%09%09%09%09%09%09dataAttr%28%20elem%2C%20name%2C%20data%5B%20name%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09dataPriv.set%28%20elem%2C%20%22hasDataAttrs%22%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09return%20data%3B%0A%09%09%7D%0A%0A%09%09//%20Sets%20multiple%20values%0A%09%09if%20%28%20typeof%20key%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09%09dataUser.set%28%20this%2C%20key%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09var%20data%3B%0A%0A%09%09%09//%20The%20calling%20jQuery%20object%20%28element%20matches%29%20is%20not%20empty%0A%09%09%09//%20%28and%20therefore%20has%20an%20element%20appears%20at%20this%5B%200%20%5D%29%20and%20the%0A%09%09%09//%20%60value%60%20parameter%20was%20not%20undefined.%20An%20empty%20jQuery%20object%0A%09%09%09//%20will%20result%20in%20%60undefined%60%20for%20elem%20%3D%20this%5B%200%20%5D%20which%20will%0A%09%09%09//%20throw%20an%20exception%20if%20an%20attempt%20to%20read%20a%20data%20cache%20is%20made.%0A%09%09%09if%20%28%20elem%20%26%26%20value%20%3D%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09//%20Attempt%20to%20get%20data%20from%20the%20cache%0A%09%09%09%09//%20The%20key%20will%20always%20be%20camelCased%20in%20Data%0A%09%09%09%09data%20%3D%20dataUser.get%28%20elem%2C%20key%20%29%3B%0A%09%09%09%09if%20%28%20data%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09return%20data%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Attempt%20to%20%22discover%22%20the%20data%20in%0A%09%09%09%09//%20HTML5%20custom%20data-%2A%20attrs%0A%09%09%09%09data%20%3D%20dataAttr%28%20elem%2C%20key%20%29%3B%0A%09%09%09%09if%20%28%20data%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09return%20data%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20We%20tried%20really%20hard%2C%20but%20the%20data%20doesn%27t%20exist.%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Set%20the%20data...%0A%09%09%09this.each%28%20function%28%29%20%7B%0A%0A%09%09%09%09//%20We%20always%20store%20the%20camelCased%20key%0A%09%09%09%09dataUser.set%28%20this%2C%20key%2C%20value%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%3E%201%2C%20null%2C%20true%20%29%3B%0A%09%7D%2C%0A%0A%09removeData%3A%20function%28%20key%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09dataUser.remove%28%20this%2C%20key%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery.extend%28%20%7B%0A%09queue%3A%20function%28%20elem%2C%20type%2C%20data%20%29%20%7B%0A%09%09var%20queue%3B%0A%0A%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09type%20%3D%20%28%20type%20%7C%7C%20%22fx%22%20%29%20%2B%20%22queue%22%3B%0A%09%09%09queue%20%3D%20dataPriv.get%28%20elem%2C%20type%20%29%3B%0A%0A%09%09%09//%20Speed%20up%20dequeue%20by%20getting%20out%20quickly%20if%20this%20is%20just%20a%20lookup%0A%09%09%09if%20%28%20data%20%29%20%7B%0A%09%09%09%09if%20%28%20%21queue%20%7C%7C%20Array.isArray%28%20data%20%29%20%29%20%7B%0A%09%09%09%09%09queue%20%3D%20dataPriv.access%28%20elem%2C%20type%2C%20jQuery.makeArray%28%20data%20%29%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09queue.push%28%20data%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20queue%20%7C%7C%20%5B%5D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09dequeue%3A%20function%28%20elem%2C%20type%20%29%20%7B%0A%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09%09var%20queue%20%3D%20jQuery.queue%28%20elem%2C%20type%20%29%2C%0A%09%09%09startLength%20%3D%20queue.length%2C%0A%09%09%09fn%20%3D%20queue.shift%28%29%2C%0A%09%09%09hooks%20%3D%20jQuery._queueHooks%28%20elem%2C%20type%20%29%2C%0A%09%09%09next%20%3D%20function%28%29%20%7B%0A%09%09%09%09jQuery.dequeue%28%20elem%2C%20type%20%29%3B%0A%09%09%09%7D%3B%0A%0A%09%09//%20If%20the%20fx%20queue%20is%20dequeued%2C%20always%20remove%20the%20progress%20sentinel%0A%09%09if%20%28%20fn%20%3D%3D%3D%20%22inprogress%22%20%29%20%7B%0A%09%09%09fn%20%3D%20queue.shift%28%29%3B%0A%09%09%09startLength--%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20fn%20%29%20%7B%0A%0A%09%09%09//%20Add%20a%20progress%20sentinel%20to%20prevent%20the%20fx%20queue%20from%20being%0A%09%09%09//%20automatically%20dequeued%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22fx%22%20%29%20%7B%0A%09%09%09%09queue.unshift%28%20%22inprogress%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Clear%20up%20the%20last%20queue%20stop%20function%0A%09%09%09delete%20hooks.stop%3B%0A%09%09%09fn.call%28%20elem%2C%20next%2C%20hooks%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%21startLength%20%26%26%20hooks%20%29%20%7B%0A%09%09%09hooks.empty.fire%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Not%20public%20-%20generate%20a%20queueHooks%20object%2C%20or%20return%20the%20current%20one%0A%09_queueHooks%3A%20function%28%20elem%2C%20type%20%29%20%7B%0A%09%09var%20key%20%3D%20type%20%2B%20%22queueHooks%22%3B%0A%09%09return%20dataPriv.get%28%20elem%2C%20key%20%29%20%7C%7C%20dataPriv.access%28%20elem%2C%20key%2C%20%7B%0A%09%09%09empty%3A%20jQuery.Callbacks%28%20%22once%20memory%22%20%29.add%28%20function%28%29%20%7B%0A%09%09%09%09dataPriv.remove%28%20elem%2C%20%5B%20type%20%2B%20%22queue%22%2C%20key%20%5D%20%29%3B%0A%09%09%09%7D%20%29%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09queue%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09var%20setter%20%3D%202%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09data%20%3D%20type%3B%0A%09%09%09type%20%3D%20%22fx%22%3B%0A%09%09%09setter--%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20arguments.length%20%3C%20setter%20%29%20%7B%0A%09%09%09return%20jQuery.queue%28%20this%5B%200%20%5D%2C%20type%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20data%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09this%20%3A%0A%09%09%09this.each%28%20function%28%29%20%7B%0A%09%09%09%09var%20queue%20%3D%20jQuery.queue%28%20this%2C%20type%2C%20data%20%29%3B%0A%0A%09%09%09%09//%20Ensure%20a%20hooks%20for%20this%20queue%0A%09%09%09%09jQuery._queueHooks%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09%09if%20%28%20type%20%3D%3D%3D%20%22fx%22%20%26%26%20queue%5B%200%20%5D%20%21%3D%3D%20%22inprogress%22%20%29%20%7B%0A%09%09%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09dequeue%3A%20function%28%20type%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09clearQueue%3A%20function%28%20type%20%29%20%7B%0A%09%09return%20this.queue%28%20type%20%7C%7C%20%22fx%22%2C%20%5B%5D%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Get%20a%20promise%20resolved%20when%20queues%20of%20a%20certain%20type%0A%09//%20are%20emptied%20%28fx%20is%20the%20type%20by%20default%29%0A%09promise%3A%20function%28%20type%2C%20obj%20%29%20%7B%0A%09%09var%20tmp%2C%0A%09%09%09count%20%3D%201%2C%0A%09%09%09defer%20%3D%20jQuery.Deferred%28%29%2C%0A%09%09%09elements%20%3D%20this%2C%0A%09%09%09i%20%3D%20this.length%2C%0A%09%09%09resolve%20%3D%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20%21%28%20--count%20%29%20%29%20%7B%0A%09%09%09%09%09defer.resolveWith%28%20elements%2C%20%5B%20elements%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09obj%20%3D%20type%3B%0A%09%09%09type%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09tmp%20%3D%20dataPriv.get%28%20elements%5B%20i%20%5D%2C%20type%20%2B%20%22queueHooks%22%20%29%3B%0A%09%09%09if%20%28%20tmp%20%26%26%20tmp.empty%20%29%20%7B%0A%09%09%09%09count%2B%2B%3B%0A%09%09%09%09tmp.empty.add%28%20resolve%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09resolve%28%29%3B%0A%09%09return%20defer.promise%28%20obj%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0Avar%20pnum%20%3D%20%28%20/%5B%2B-%5D%3F%28%3F%3A%5Cd%2A%5C.%7C%29%5Cd%2B%28%3F%3A%5BeE%5D%5B%2B-%5D%3F%5Cd%2B%7C%29/%20%29.source%3B%0A%0Avar%20rcssNum%20%3D%20new%20RegExp%28%20%22%5E%28%3F%3A%28%5B%2B-%5D%29%3D%7C%29%28%22%20%2B%20pnum%20%2B%20%22%29%28%5Ba-z%25%5D%2A%29%24%22%2C%20%22i%22%20%29%3B%0A%0A%0Avar%20cssExpand%20%3D%20%5B%20%22Top%22%2C%20%22Right%22%2C%20%22Bottom%22%2C%20%22Left%22%20%5D%3B%0A%0Avar%20documentElement%20%3D%20document.documentElement%3B%0A%0A%0A%0A%09var%20isAttached%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.contains%28%20elem.ownerDocument%2C%20elem%20%29%3B%0A%09%09%7D%2C%0A%09%09composed%20%3D%20%7B%20composed%3A%20true%20%7D%3B%0A%0A%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%2C%20iOS%2010.0%20-%2010.2%20only%0A%09//%20Check%20attachment%20across%20shadow%20DOM%20boundaries%20when%20possible%20%28gh-3504%29%0A%09//%20Support%3A%20iOS%2010.0-10.2%20only%0A%09//%20Early%20iOS%2010%20versions%20support%20%60attachShadow%60%20but%20not%20%60getRootNode%60%2C%0A%09//%20leading%20to%20errors.%20We%20need%20to%20check%20for%20%60getRootNode%60.%0A%09if%20%28%20documentElement.getRootNode%20%29%20%7B%0A%09%09isAttached%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.contains%28%20elem.ownerDocument%2C%20elem%20%29%20%7C%7C%0A%09%09%09%09elem.getRootNode%28%20composed%20%29%20%3D%3D%3D%20elem.ownerDocument%3B%0A%09%09%7D%3B%0A%09%7D%0Avar%20isHiddenWithinTree%20%3D%20function%28%20elem%2C%20el%20%29%20%7B%0A%0A%09%09//%20isHiddenWithinTree%20might%20be%20called%20from%20jQuery%23filter%20function%3B%0A%09%09//%20in%20that%20case%2C%20element%20will%20be%20second%20argument%0A%09%09elem%20%3D%20el%20%7C%7C%20elem%3B%0A%0A%09%09//%20Inline%20style%20trumps%20all%0A%09%09return%20elem.style.display%20%3D%3D%3D%20%22none%22%20%7C%7C%0A%09%09%09elem.style.display%20%3D%3D%3D%20%22%22%20%26%26%0A%0A%09%09%09//%20Otherwise%2C%20check%20computed%20style%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D43%20-%2045%0A%09%09%09//%20Disconnected%20elements%20can%20have%20computed%20display%3A%20none%2C%20so%20first%20confirm%20that%20elem%20is%0A%09%09%09//%20in%20the%20document.%0A%09%09%09isAttached%28%20elem%20%29%20%26%26%0A%0A%09%09%09jQuery.css%28%20elem%2C%20%22display%22%20%29%20%3D%3D%3D%20%22none%22%3B%0A%09%7D%3B%0A%0A%0A%0Afunction%20adjustCSS%28%20elem%2C%20prop%2C%20valueParts%2C%20tween%20%29%20%7B%0A%09var%20adjusted%2C%20scale%2C%0A%09%09maxIterations%20%3D%2020%2C%0A%09%09currentValue%20%3D%20tween%20%3F%0A%09%09%09function%28%29%20%7B%0A%09%09%09%09return%20tween.cur%28%29%3B%0A%09%09%09%7D%20%3A%0A%09%09%09function%28%29%20%7B%0A%09%09%09%09return%20jQuery.css%28%20elem%2C%20prop%2C%20%22%22%20%29%3B%0A%09%09%09%7D%2C%0A%09%09initial%20%3D%20currentValue%28%29%2C%0A%09%09unit%20%3D%20valueParts%20%26%26%20valueParts%5B%203%20%5D%20%7C%7C%20%28%20jQuery.cssNumber%5B%20prop%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%2C%0A%0A%09%09//%20Starting%20value%20computation%20is%20required%20for%20potential%20unit%20mismatches%0A%09%09initialInUnit%20%3D%20elem.nodeType%20%26%26%0A%09%09%09%28%20jQuery.cssNumber%5B%20prop%20%5D%20%7C%7C%20unit%20%21%3D%3D%20%22px%22%20%26%26%20%2Binitial%20%29%20%26%26%0A%09%09%09rcssNum.exec%28%20jQuery.css%28%20elem%2C%20prop%20%29%20%29%3B%0A%0A%09if%20%28%20initialInUnit%20%26%26%20initialInUnit%5B%203%20%5D%20%21%3D%3D%20unit%20%29%20%7B%0A%0A%09%09//%20Support%3A%20Firefox%20%3C%3D54%0A%09%09//%20Halve%20the%20iteration%20target%20value%20to%20prevent%20interference%20from%20CSS%20upper%20bounds%20%28gh-2144%29%0A%09%09initial%20%3D%20initial%20/%202%3B%0A%0A%09%09//%20Trust%20units%20reported%20by%20jQuery.css%0A%09%09unit%20%3D%20unit%20%7C%7C%20initialInUnit%5B%203%20%5D%3B%0A%0A%09%09//%20Iteratively%20approximate%20from%20a%20nonzero%20starting%20point%0A%09%09initialInUnit%20%3D%20%2Binitial%20%7C%7C%201%3B%0A%0A%09%09while%20%28%20maxIterations--%20%29%20%7B%0A%0A%09%09%09//%20Evaluate%20and%20update%20our%20best%20guess%20%28doubling%20guesses%20that%20zero%20out%29.%0A%09%09%09//%20Finish%20if%20the%20scale%20equals%20or%20crosses%201%20%28making%20the%20old%2Anew%20product%20non-positive%29.%0A%09%09%09jQuery.style%28%20elem%2C%20prop%2C%20initialInUnit%20%2B%20unit%20%29%3B%0A%09%09%09if%20%28%20%28%201%20-%20scale%20%29%20%2A%20%28%201%20-%20%28%20scale%20%3D%20currentValue%28%29%20/%20initial%20%7C%7C%200.5%20%29%20%29%20%3C%3D%200%20%29%20%7B%0A%09%09%09%09maxIterations%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%09initialInUnit%20%3D%20initialInUnit%20/%20scale%3B%0A%0A%09%09%7D%0A%0A%09%09initialInUnit%20%3D%20initialInUnit%20%2A%202%3B%0A%09%09jQuery.style%28%20elem%2C%20prop%2C%20initialInUnit%20%2B%20unit%20%29%3B%0A%0A%09%09//%20Make%20sure%20we%20update%20the%20tween%20properties%20later%20on%0A%09%09valueParts%20%3D%20valueParts%20%7C%7C%20%5B%5D%3B%0A%09%7D%0A%0A%09if%20%28%20valueParts%20%29%20%7B%0A%09%09initialInUnit%20%3D%20%2BinitialInUnit%20%7C%7C%20%2Binitial%20%7C%7C%200%3B%0A%0A%09%09//%20Apply%20relative%20offset%20%28%2B%3D/-%3D%29%20if%20specified%0A%09%09adjusted%20%3D%20valueParts%5B%201%20%5D%20%3F%0A%09%09%09initialInUnit%20%2B%20%28%20valueParts%5B%201%20%5D%20%2B%201%20%29%20%2A%20valueParts%5B%202%20%5D%20%3A%0A%09%09%09%2BvalueParts%5B%202%20%5D%3B%0A%09%09if%20%28%20tween%20%29%20%7B%0A%09%09%09tween.unit%20%3D%20unit%3B%0A%09%09%09tween.start%20%3D%20initialInUnit%3B%0A%09%09%09tween.end%20%3D%20adjusted%3B%0A%09%09%7D%0A%09%7D%0A%09return%20adjusted%3B%0A%7D%0A%0A%0Avar%20defaultDisplayMap%20%3D%20%7B%7D%3B%0A%0Afunction%20getDefaultDisplay%28%20elem%20%29%20%7B%0A%09var%20temp%2C%0A%09%09doc%20%3D%20elem.ownerDocument%2C%0A%09%09nodeName%20%3D%20elem.nodeName%2C%0A%09%09display%20%3D%20defaultDisplayMap%5B%20nodeName%20%5D%3B%0A%0A%09if%20%28%20display%20%29%20%7B%0A%09%09return%20display%3B%0A%09%7D%0A%0A%09temp%20%3D%20doc.body.appendChild%28%20doc.createElement%28%20nodeName%20%29%20%29%3B%0A%09display%20%3D%20jQuery.css%28%20temp%2C%20%22display%22%20%29%3B%0A%0A%09temp.parentNode.removeChild%28%20temp%20%29%3B%0A%0A%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09display%20%3D%20%22block%22%3B%0A%09%7D%0A%09defaultDisplayMap%5B%20nodeName%20%5D%20%3D%20display%3B%0A%0A%09return%20display%3B%0A%7D%0A%0Afunction%20showHide%28%20elements%2C%20show%20%29%20%7B%0A%09var%20display%2C%20elem%2C%0A%09%09values%20%3D%20%5B%5D%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20elements.length%3B%0A%0A%09//%20Determine%20new%20display%20value%20for%20elements%20that%20need%20to%20change%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09elem%20%3D%20elements%5B%20index%20%5D%3B%0A%09%09if%20%28%20%21elem.style%20%29%20%7B%0A%09%09%09continue%3B%0A%09%09%7D%0A%0A%09%09display%20%3D%20elem.style.display%3B%0A%09%09if%20%28%20show%20%29%20%7B%0A%0A%09%09%09//%20Since%20we%20force%20visibility%20upon%20cascade-hidden%20elements%2C%20an%20immediate%20%28and%20slow%29%0A%09%09%09//%20check%20is%20required%20in%20this%20first%20loop%20unless%20we%20have%20a%20nonempty%20display%20value%20%28either%0A%09%09%09//%20inline%20or%20about-to-be-restored%29%0A%09%09%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20dataPriv.get%28%20elem%2C%20%22display%22%20%29%20%7C%7C%20null%3B%0A%09%09%09%09if%20%28%20%21values%5B%20index%20%5D%20%29%20%7B%0A%09%09%09%09%09elem.style.display%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09if%20%28%20elem.style.display%20%3D%3D%3D%20%22%22%20%26%26%20isHiddenWithinTree%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20getDefaultDisplay%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28%20display%20%21%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20%22none%22%3B%0A%0A%09%09%09%09//%20Remember%20what%20we%27re%20overwriting%0A%09%09%09%09dataPriv.set%28%20elem%2C%20%22display%22%2C%20display%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Set%20the%20display%20of%20the%20elements%20in%20a%20second%20loop%20to%20avoid%20constant%20reflow%0A%09for%20%28%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09if%20%28%20values%5B%20index%20%5D%20%21%3D%20null%20%29%20%7B%0A%09%09%09elements%5B%20index%20%5D.style.display%20%3D%20values%5B%20index%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elements%3B%0A%7D%0A%0AjQuery.fn.extend%28%20%7B%0A%09show%3A%20function%28%29%20%7B%0A%09%09return%20showHide%28%20this%2C%20true%20%29%3B%0A%09%7D%2C%0A%09hide%3A%20function%28%29%20%7B%0A%09%09return%20showHide%28%20this%20%29%3B%0A%09%7D%2C%0A%09toggle%3A%20function%28%20state%20%29%20%7B%0A%09%09if%20%28%20typeof%20state%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09%09return%20state%20%3F%20this.show%28%29%20%3A%20this.hide%28%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09if%20%28%20isHiddenWithinTree%28%20this%20%29%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.show%28%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.hide%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0Avar%20rcheckableType%20%3D%20%28%20/%5E%28%3F%3Acheckbox%7Cradio%29%24/i%20%29%3B%0A%0Avar%20rtagName%20%3D%20%28%20/%3C%28%5Ba-z%5D%5B%5E%5C/%5C0%3E%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%29/i%20%29%3B%0A%0Avar%20rscriptType%20%3D%20%28%20/%5E%24%7C%5Emodule%24%7C%5C/%28%3F%3Ajava%7Cecma%29script/i%20%29%3B%0A%0A%0A%0A%28%20function%28%29%20%7B%0A%09var%20fragment%20%3D%20document.createDocumentFragment%28%29%2C%0A%09%09div%20%3D%20fragment.appendChild%28%20document.createElement%28%20%22div%22%20%29%20%29%2C%0A%09%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%0A%09//%20Support%3A%20Android%204.0%20-%204.3%20only%0A%09//%20Check%20state%20lost%20if%20the%20name%20is%20set%20%28%2311217%29%0A%09//%20Support%3A%20Windows%20Web%20Apps%20%28WWA%29%0A%09//%20%60name%60%20and%20%60type%60%20must%20use%20.setAttribute%20for%20WWA%20%28%2314901%29%0A%09input.setAttribute%28%20%22type%22%2C%20%22radio%22%20%29%3B%0A%09input.setAttribute%28%20%22checked%22%2C%20%22checked%22%20%29%3B%0A%09input.setAttribute%28%20%22name%22%2C%20%22t%22%20%29%3B%0A%0A%09div.appendChild%28%20input%20%29%3B%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.1%20only%0A%09//%20Older%20WebKit%20doesn%27t%20clone%20checked%20state%20correctly%20in%20fragments%0A%09support.checkClone%20%3D%20div.cloneNode%28%20true%20%29.cloneNode%28%20true%20%29.lastChild.checked%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20Make%20sure%20textarea%20%28and%20checkbox%29%20defaultValue%20is%20properly%20cloned%0A%09div.innerHTML%20%3D%20%22%3Ctextarea%3Ex%3C/textarea%3E%22%3B%0A%09support.noCloneChecked%20%3D%20%21%21div.cloneNode%28%20true%20%29.lastChild.defaultValue%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09//%20IE%20%3C%3D9%20replaces%20%3Coption%3E%20tags%20with%20their%20contents%20when%20inserted%20outside%20of%0A%09//%20the%20select%20element.%0A%09div.innerHTML%20%3D%20%22%3Coption%3E%3C/option%3E%22%3B%0A%09support.option%20%3D%20%21%21div.lastChild%3B%0A%7D%20%29%28%29%3B%0A%0A%0A//%20We%20have%20to%20close%20these%20tags%20to%20support%20XHTML%20%28%2313200%29%0Avar%20wrapMap%20%3D%20%7B%0A%0A%09//%20XHTML%20parsers%20do%20not%20magically%20insert%20elements%20in%20the%0A%09//%20same%20way%20that%20tag%20soup%20parsers%20do.%20So%20we%20cannot%20shorten%0A%09//%20this%20by%20omitting%20%3Ctbody%3E%20or%20other%20required%20elements.%0A%09thead%3A%20%5B%201%2C%20%22%3Ctable%3E%22%2C%20%22%3C/table%3E%22%20%5D%2C%0A%09col%3A%20%5B%202%2C%20%22%3Ctable%3E%3Ccolgroup%3E%22%2C%20%22%3C/colgroup%3E%3C/table%3E%22%20%5D%2C%0A%09tr%3A%20%5B%202%2C%20%22%3Ctable%3E%3Ctbody%3E%22%2C%20%22%3C/tbody%3E%3C/table%3E%22%20%5D%2C%0A%09td%3A%20%5B%203%2C%20%22%3Ctable%3E%3Ctbody%3E%3Ctr%3E%22%2C%20%22%3C/tr%3E%3C/tbody%3E%3C/table%3E%22%20%5D%2C%0A%0A%09_default%3A%20%5B%200%2C%20%22%22%2C%20%22%22%20%5D%0A%7D%3B%0A%0AwrapMap.tbody%20%3D%20wrapMap.tfoot%20%3D%20wrapMap.colgroup%20%3D%20wrapMap.caption%20%3D%20wrapMap.thead%3B%0AwrapMap.th%20%3D%20wrapMap.td%3B%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0Aif%20%28%20%21support.option%20%29%20%7B%0A%09wrapMap.optgroup%20%3D%20wrapMap.option%20%3D%20%5B%201%2C%20%22%3Cselect%20multiple%3D%27multiple%27%3E%22%2C%20%22%3C/select%3E%22%20%5D%3B%0A%7D%0A%0A%0Afunction%20getAll%28%20context%2C%20tag%20%29%20%7B%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09//%20Use%20typeof%20to%20avoid%20zero-argument%20method%20invocation%20on%20host%20objects%20%28%2315151%29%0A%09var%20ret%3B%0A%0A%09if%20%28%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09ret%20%3D%20context.getElementsByTagName%28%20tag%20%7C%7C%20%22%2A%22%20%29%3B%0A%0A%09%7D%20else%20if%20%28%20typeof%20context.querySelectorAll%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09ret%20%3D%20context.querySelectorAll%28%20tag%20%7C%7C%20%22%2A%22%20%29%3B%0A%0A%09%7D%20else%20%7B%0A%09%09ret%20%3D%20%5B%5D%3B%0A%09%7D%0A%0A%09if%20%28%20tag%20%3D%3D%3D%20undefined%20%7C%7C%20tag%20%26%26%20nodeName%28%20context%2C%20tag%20%29%20%29%20%7B%0A%09%09return%20jQuery.merge%28%20%5B%20context%20%5D%2C%20ret%20%29%3B%0A%09%7D%0A%0A%09return%20ret%3B%0A%7D%0A%0A%0A//%20Mark%20scripts%20as%20having%20already%20been%20evaluated%0Afunction%20setGlobalEval%28%20elems%2C%20refElements%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09l%20%3D%20elems.length%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09dataPriv.set%28%0A%09%09%09elems%5B%20i%20%5D%2C%0A%09%09%09%22globalEval%22%2C%0A%09%09%09%21refElements%20%7C%7C%20dataPriv.get%28%20refElements%5B%20i%20%5D%2C%20%22globalEval%22%20%29%0A%09%09%29%3B%0A%09%7D%0A%7D%0A%0A%0Avar%20rhtml%20%3D%20/%3C%7C%26%23%3F%5Cw%2B%3B/%3B%0A%0Afunction%20buildFragment%28%20elems%2C%20context%2C%20scripts%2C%20selection%2C%20ignored%20%29%20%7B%0A%09var%20elem%2C%20tmp%2C%20tag%2C%20wrap%2C%20attached%2C%20j%2C%0A%09%09fragment%20%3D%20context.createDocumentFragment%28%29%2C%0A%09%09nodes%20%3D%20%5B%5D%2C%0A%09%09i%20%3D%200%2C%0A%09%09l%20%3D%20elems.length%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09elem%20%3D%20elems%5B%20i%20%5D%3B%0A%0A%09%09if%20%28%20elem%20%7C%7C%20elem%20%3D%3D%3D%200%20%29%20%7B%0A%0A%09%09%09//%20Add%20nodes%20directly%0A%09%09%09if%20%28%20toType%28%20elem%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09jQuery.merge%28%20nodes%2C%20elem.nodeType%20%3F%20%5B%20elem%20%5D%20%3A%20elem%20%29%3B%0A%0A%09%09%09//%20Convert%20non-html%20into%20a%20text%20node%0A%09%09%09%7D%20else%20if%20%28%20%21rhtml.test%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09nodes.push%28%20context.createTextNode%28%20elem%20%29%20%29%3B%0A%0A%09%09%09//%20Convert%20html%20into%20DOM%20nodes%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09tmp%20%3D%20tmp%20%7C%7C%20fragment.appendChild%28%20context.createElement%28%20%22div%22%20%29%20%29%3B%0A%0A%09%09%09%09//%20Deserialize%20a%20standard%20representation%0A%09%09%09%09tag%20%3D%20%28%20rtagName.exec%28%20elem%20%29%20%7C%7C%20%5B%20%22%22%2C%20%22%22%20%5D%20%29%5B%201%20%5D.toLowerCase%28%29%3B%0A%09%09%09%09wrap%20%3D%20wrapMap%5B%20tag%20%5D%20%7C%7C%20wrapMap._default%3B%0A%09%09%09%09tmp.innerHTML%20%3D%20wrap%5B%201%20%5D%20%2B%20jQuery.htmlPrefilter%28%20elem%20%29%20%2B%20wrap%5B%202%20%5D%3B%0A%0A%09%09%09%09//%20Descend%20through%20wrappers%20to%20the%20right%20content%0A%09%09%09%09j%20%3D%20wrap%5B%200%20%5D%3B%0A%09%09%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09%09%09tmp%20%3D%20tmp.lastChild%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09jQuery.merge%28%20nodes%2C%20tmp.childNodes%20%29%3B%0A%0A%09%09%09%09//%20Remember%20the%20top-level%20container%0A%09%09%09%09tmp%20%3D%20fragment.firstChild%3B%0A%0A%09%09%09%09//%20Ensure%20the%20created%20nodes%20are%20orphaned%20%28%2312392%29%0A%09%09%09%09tmp.textContent%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Remove%20wrapper%20from%20fragment%0A%09fragment.textContent%20%3D%20%22%22%3B%0A%0A%09i%20%3D%200%3B%0A%09while%20%28%20%28%20elem%20%3D%20nodes%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09//%20Skip%20elements%20already%20in%20the%20context%20collection%20%28trac-4087%29%0A%09%09if%20%28%20selection%20%26%26%20jQuery.inArray%28%20elem%2C%20selection%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09if%20%28%20ignored%20%29%20%7B%0A%09%09%09%09ignored.push%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%09continue%3B%0A%09%09%7D%0A%0A%09%09attached%20%3D%20isAttached%28%20elem%20%29%3B%0A%0A%09%09//%20Append%20to%20fragment%0A%09%09tmp%20%3D%20getAll%28%20fragment.appendChild%28%20elem%20%29%2C%20%22script%22%20%29%3B%0A%0A%09%09//%20Preserve%20script%20evaluation%20history%0A%09%09if%20%28%20attached%20%29%20%7B%0A%09%09%09setGlobalEval%28%20tmp%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Capture%20executables%0A%09%09if%20%28%20scripts%20%29%20%7B%0A%09%09%09j%20%3D%200%3B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20tmp%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20rscriptType.test%28%20elem.type%20%7C%7C%20%22%22%20%29%20%29%20%7B%0A%09%09%09%09%09scripts.push%28%20elem%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20fragment%3B%0A%7D%0A%0A%0Avar%0A%09rkeyEvent%20%3D%20/%5Ekey/%2C%0A%09rmouseEvent%20%3D%20/%5E%28%3F%3Amouse%7Cpointer%7Ccontextmenu%7Cdrag%7Cdrop%29%7Cclick/%2C%0A%09rtypenamespace%20%3D%20/%5E%28%5B%5E.%5D%2A%29%28%3F%3A%5C.%28.%2B%29%7C%29/%3B%0A%0Afunction%20returnTrue%28%29%20%7B%0A%09return%20true%3B%0A%7D%0A%0Afunction%20returnFalse%28%29%20%7B%0A%09return%20false%3B%0A%7D%0A%0A//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A//%20focus%28%29%20and%20blur%28%29%20are%20asynchronous%2C%20except%20when%20they%20are%20no-op.%0A//%20So%20expect%20focus%20to%20be%20synchronous%20when%20the%20element%20is%20already%20active%2C%0A//%20and%20blur%20to%20be%20synchronous%20when%20the%20element%20is%20not%20already%20active.%0A//%20%28focus%20and%20blur%20are%20always%20synchronous%20in%20other%20supported%20browsers%2C%0A//%20this%20just%20defines%20when%20we%20can%20count%20on%20it%29.%0Afunction%20expectSync%28%20elem%2C%20type%20%29%20%7B%0A%09return%20%28%20elem%20%3D%3D%3D%20safeActiveElement%28%29%20%29%20%3D%3D%3D%20%28%20type%20%3D%3D%3D%20%22focus%22%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0A//%20Accessing%20document.activeElement%20can%20throw%20unexpectedly%0A//%20https%3A//bugs.jquery.com/ticket/13393%0Afunction%20safeActiveElement%28%29%20%7B%0A%09try%20%7B%0A%09%09return%20document.activeElement%3B%0A%09%7D%20catch%20%28%20err%20%29%20%7B%20%7D%0A%7D%0A%0Afunction%20on%28%20elem%2C%20types%2C%20selector%2C%20data%2C%20fn%2C%20one%20%29%20%7B%0A%09var%20origFn%2C%20type%3B%0A%0A%09//%20Types%20can%20be%20a%20map%20of%20types/handlers%0A%09if%20%28%20typeof%20types%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20%28%20types-Object%2C%20selector%2C%20data%20%29%0A%09%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types-Object%2C%20data%20%29%0A%09%09%09data%20%3D%20data%20%7C%7C%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09for%20%28%20type%20in%20types%20%29%20%7B%0A%09%09%09on%28%20elem%2C%20type%2C%20selector%2C%20data%2C%20types%5B%20type%20%5D%2C%20one%20%29%3B%0A%09%09%7D%0A%09%09return%20elem%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%20null%20%26%26%20fn%20%3D%3D%20null%20%29%20%7B%0A%0A%09%09//%20%28%20types%2C%20fn%20%29%0A%09%09fn%20%3D%20selector%3B%0A%09%09data%20%3D%20selector%20%3D%20undefined%3B%0A%09%7D%20else%20if%20%28%20fn%20%3D%3D%20null%20%29%20%7B%0A%09%09if%20%28%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types%2C%20selector%2C%20fn%20%29%0A%09%09%09fn%20%3D%20data%3B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20%28%20types%2C%20data%2C%20fn%20%29%0A%09%09%09fn%20%3D%20data%3B%0A%09%09%09data%20%3D%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%7D%0A%09if%20%28%20fn%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09fn%20%3D%20returnFalse%3B%0A%09%7D%20else%20if%20%28%20%21fn%20%29%20%7B%0A%09%09return%20elem%3B%0A%09%7D%0A%0A%09if%20%28%20one%20%3D%3D%3D%201%20%29%20%7B%0A%09%09origFn%20%3D%20fn%3B%0A%09%09fn%20%3D%20function%28%20event%20%29%20%7B%0A%0A%09%09%09//%20Can%20use%20an%20empty%20set%2C%20since%20event%20contains%20the%20info%0A%09%09%09jQuery%28%29.off%28%20event%20%29%3B%0A%09%09%09return%20origFn.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Use%20same%20guid%20so%20caller%20can%20remove%20using%20origFn%0A%09%09fn.guid%20%3D%20origFn.guid%20%7C%7C%20%28%20origFn.guid%20%3D%20jQuery.guid%2B%2B%20%29%3B%0A%09%7D%0A%09return%20elem.each%28%20function%28%29%20%7B%0A%09%09jQuery.event.add%28%20this%2C%20types%2C%20fn%2C%20data%2C%20selector%20%29%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A/%2A%0A%20%2A%20Helper%20functions%20for%20managing%20events%20--%20not%20part%20of%20the%20public%20interface.%0A%20%2A%20Props%20to%20Dean%20Edwards%27%20addEvent%20library%20for%20many%20of%20the%20ideas.%0A%20%2A/%0AjQuery.event%20%3D%20%7B%0A%0A%09global%3A%20%7B%7D%2C%0A%0A%09add%3A%20function%28%20elem%2C%20types%2C%20handler%2C%20data%2C%20selector%20%29%20%7B%0A%0A%09%09var%20handleObjIn%2C%20eventHandle%2C%20tmp%2C%0A%09%09%09events%2C%20t%2C%20handleObj%2C%0A%09%09%09special%2C%20handlers%2C%20type%2C%20namespaces%2C%20origType%2C%0A%09%09%09elemData%20%3D%20dataPriv.get%28%20elem%20%29%3B%0A%0A%09%09//%20Only%20attach%20events%20to%20objects%20that%20accept%20data%0A%09%09if%20%28%20%21acceptData%28%20elem%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Caller%20can%20pass%20in%20an%20object%20of%20custom%20data%20in%20lieu%20of%20the%20handler%0A%09%09if%20%28%20handler.handler%20%29%20%7B%0A%09%09%09handleObjIn%20%3D%20handler%3B%0A%09%09%09handler%20%3D%20handleObjIn.handler%3B%0A%09%09%09selector%20%3D%20handleObjIn.selector%3B%0A%09%09%7D%0A%0A%09%09//%20Ensure%20that%20invalid%20selectors%20throw%20exceptions%20at%20attach%20time%0A%09%09//%20Evaluate%20against%20documentElement%20in%20case%20elem%20is%20a%20non-element%20node%20%28e.g.%2C%20document%29%0A%09%09if%20%28%20selector%20%29%20%7B%0A%09%09%09jQuery.find.matchesSelector%28%20documentElement%2C%20selector%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20sure%20that%20the%20handler%20has%20a%20unique%20ID%2C%20used%20to%20find/remove%20it%20later%0A%09%09if%20%28%20%21handler.guid%20%29%20%7B%0A%09%09%09handler.guid%20%3D%20jQuery.guid%2B%2B%3B%0A%09%09%7D%0A%0A%09%09//%20Init%20the%20element%27s%20event%20structure%20and%20main%20handler%2C%20if%20this%20is%20the%20first%0A%09%09if%20%28%20%21%28%20events%20%3D%20elemData.events%20%29%20%29%20%7B%0A%09%09%09events%20%3D%20elemData.events%20%3D%20Object.create%28%20null%20%29%3B%0A%09%09%7D%0A%09%09if%20%28%20%21%28%20eventHandle%20%3D%20elemData.handle%20%29%20%29%20%7B%0A%09%09%09eventHandle%20%3D%20elemData.handle%20%3D%20function%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20Discard%20the%20second%20event%20of%20a%20jQuery.event.trigger%28%29%20and%0A%09%09%09%09//%20when%20an%20event%20is%20called%20after%20a%20page%20has%20unloaded%0A%09%09%09%09return%20typeof%20jQuery%20%21%3D%3D%20%22undefined%22%20%26%26%20jQuery.event.triggered%20%21%3D%3D%20e.type%20%3F%0A%09%09%09%09%09jQuery.event.dispatch.apply%28%20elem%2C%20arguments%20%29%20%3A%20undefined%3B%0A%09%09%09%7D%3B%0A%09%09%7D%0A%0A%09%09//%20Handle%20multiple%20events%20separated%20by%20a%20space%0A%09%09types%20%3D%20%28%20types%20%7C%7C%20%22%22%20%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%09%09t%20%3D%20types.length%3B%0A%09%09while%20%28%20t--%20%29%20%7B%0A%09%09%09tmp%20%3D%20rtypenamespace.exec%28%20types%5B%20t%20%5D%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09%09type%20%3D%20origType%20%3D%20tmp%5B%201%20%5D%3B%0A%09%09%09namespaces%20%3D%20%28%20tmp%5B%202%20%5D%20%7C%7C%20%22%22%20%29.split%28%20%22.%22%20%29.sort%28%29%3B%0A%0A%09%09%09//%20There%20%2Amust%2A%20be%20a%20type%2C%20no%20attaching%20namespace-only%20handlers%0A%09%09%09if%20%28%20%21type%20%29%20%7B%0A%09%09%09%09continue%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20event%20changes%20its%20type%2C%20use%20the%20special%20event%20handlers%20for%20the%20changed%20type%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09//%20If%20selector%20defined%2C%20determine%20special%20event%20api%20type%2C%20otherwise%20given%20type%0A%09%09%09type%20%3D%20%28%20selector%20%3F%20special.delegateType%20%3A%20special.bindType%20%29%20%7C%7C%20type%3B%0A%0A%09%09%09//%20Update%20special%20based%20on%20newly%20reset%20type%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09//%20handleObj%20is%20passed%20to%20all%20event%20handlers%0A%09%09%09handleObj%20%3D%20jQuery.extend%28%20%7B%0A%09%09%09%09type%3A%20type%2C%0A%09%09%09%09origType%3A%20origType%2C%0A%09%09%09%09data%3A%20data%2C%0A%09%09%09%09handler%3A%20handler%2C%0A%09%09%09%09guid%3A%20handler.guid%2C%0A%09%09%09%09selector%3A%20selector%2C%0A%09%09%09%09needsContext%3A%20selector%20%26%26%20jQuery.expr.match.needsContext.test%28%20selector%20%29%2C%0A%09%09%09%09namespace%3A%20namespaces.join%28%20%22.%22%20%29%0A%09%09%09%7D%2C%20handleObjIn%20%29%3B%0A%0A%09%09%09//%20Init%20the%20event%20handler%20queue%20if%20we%27re%20the%20first%0A%09%09%09if%20%28%20%21%28%20handlers%20%3D%20events%5B%20type%20%5D%20%29%20%29%20%7B%0A%09%09%09%09handlers%20%3D%20events%5B%20type%20%5D%20%3D%20%5B%5D%3B%0A%09%09%09%09handlers.delegateCount%20%3D%200%3B%0A%0A%09%09%09%09//%20Only%20use%20addEventListener%20if%20the%20special%20events%20handler%20returns%20false%0A%09%09%09%09if%20%28%20%21special.setup%20%7C%7C%0A%09%09%09%09%09special.setup.call%28%20elem%2C%20data%2C%20namespaces%2C%20eventHandle%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09if%20%28%20elem.addEventListener%20%29%20%7B%0A%09%09%09%09%09%09elem.addEventListener%28%20type%2C%20eventHandle%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20special.add%20%29%20%7B%0A%09%09%09%09special.add.call%28%20elem%2C%20handleObj%20%29%3B%0A%0A%09%09%09%09if%20%28%20%21handleObj.handler.guid%20%29%20%7B%0A%09%09%09%09%09handleObj.handler.guid%20%3D%20handler.guid%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20to%20the%20element%27s%20handler%20list%2C%20delegates%20in%20front%0A%09%09%09if%20%28%20selector%20%29%20%7B%0A%09%09%09%09handlers.splice%28%20handlers.delegateCount%2B%2B%2C%200%2C%20handleObj%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09handlers.push%28%20handleObj%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Keep%20track%20of%20which%20events%20have%20ever%20been%20used%2C%20for%20event%20optimization%0A%09%09%09jQuery.event.global%5B%20type%20%5D%20%3D%20true%3B%0A%09%09%7D%0A%0A%09%7D%2C%0A%0A%09//%20Detach%20an%20event%20or%20set%20of%20events%20from%20an%20element%0A%09remove%3A%20function%28%20elem%2C%20types%2C%20handler%2C%20selector%2C%20mappedTypes%20%29%20%7B%0A%0A%09%09var%20j%2C%20origCount%2C%20tmp%2C%0A%09%09%09events%2C%20t%2C%20handleObj%2C%0A%09%09%09special%2C%20handlers%2C%20type%2C%20namespaces%2C%20origType%2C%0A%09%09%09elemData%20%3D%20dataPriv.hasData%28%20elem%20%29%20%26%26%20dataPriv.get%28%20elem%20%29%3B%0A%0A%09%09if%20%28%20%21elemData%20%7C%7C%20%21%28%20events%20%3D%20elemData.events%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Once%20for%20each%20type.namespace%20in%20types%3B%20type%20may%20be%20omitted%0A%09%09types%20%3D%20%28%20types%20%7C%7C%20%22%22%20%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%09%09t%20%3D%20types.length%3B%0A%09%09while%20%28%20t--%20%29%20%7B%0A%09%09%09tmp%20%3D%20rtypenamespace.exec%28%20types%5B%20t%20%5D%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09%09type%20%3D%20origType%20%3D%20tmp%5B%201%20%5D%3B%0A%09%09%09namespaces%20%3D%20%28%20tmp%5B%202%20%5D%20%7C%7C%20%22%22%20%29.split%28%20%22.%22%20%29.sort%28%29%3B%0A%0A%09%09%09//%20Unbind%20all%20events%20%28on%20this%20namespace%2C%20if%20provided%29%20for%20the%20element%0A%09%09%09if%20%28%20%21type%20%29%20%7B%0A%09%09%09%09for%20%28%20type%20in%20events%20%29%20%7B%0A%09%09%09%09%09jQuery.event.remove%28%20elem%2C%20type%20%2B%20types%5B%20t%20%5D%2C%20handler%2C%20selector%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09continue%3B%0A%09%09%09%7D%0A%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09%09type%20%3D%20%28%20selector%20%3F%20special.delegateType%20%3A%20special.bindType%20%29%20%7C%7C%20type%3B%0A%09%09%09handlers%20%3D%20events%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09tmp%20%3D%20tmp%5B%202%20%5D%20%26%26%0A%09%09%09%09new%20RegExp%28%20%22%28%5E%7C%5C%5C.%29%22%20%2B%20namespaces.join%28%20%22%5C%5C.%28%3F%3A.%2A%5C%5C.%7C%29%22%20%29%20%2B%20%22%28%5C%5C.%7C%24%29%22%20%29%3B%0A%0A%09%09%09//%20Remove%20matching%20events%0A%09%09%09origCount%20%3D%20j%20%3D%20handlers.length%3B%0A%09%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09%09handleObj%20%3D%20handlers%5B%20j%20%5D%3B%0A%0A%09%09%09%09if%20%28%20%28%20mappedTypes%20%7C%7C%20origType%20%3D%3D%3D%20handleObj.origType%20%29%20%26%26%0A%09%09%09%09%09%28%20%21handler%20%7C%7C%20handler.guid%20%3D%3D%3D%20handleObj.guid%20%29%20%26%26%0A%09%09%09%09%09%28%20%21tmp%20%7C%7C%20tmp.test%28%20handleObj.namespace%20%29%20%29%20%26%26%0A%09%09%09%09%09%28%20%21selector%20%7C%7C%20selector%20%3D%3D%3D%20handleObj.selector%20%7C%7C%0A%09%09%09%09%09%09selector%20%3D%3D%3D%20%22%2A%2A%22%20%26%26%20handleObj.selector%20%29%20%29%20%7B%0A%09%09%09%09%09handlers.splice%28%20j%2C%201%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20handleObj.selector%20%29%20%7B%0A%09%09%09%09%09%09handlers.delegateCount--%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20special.remove%20%29%20%7B%0A%09%09%09%09%09%09special.remove.call%28%20elem%2C%20handleObj%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Remove%20generic%20event%20handler%20if%20we%20removed%20something%20and%20no%20more%20handlers%20exist%0A%09%09%09//%20%28avoids%20potential%20for%20endless%20recursion%20during%20removal%20of%20special%20event%20handlers%29%0A%09%09%09if%20%28%20origCount%20%26%26%20%21handlers.length%20%29%20%7B%0A%09%09%09%09if%20%28%20%21special.teardown%20%7C%7C%0A%09%09%09%09%09special.teardown.call%28%20elem%2C%20namespaces%2C%20elemData.handle%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09jQuery.removeEvent%28%20elem%2C%20type%2C%20elemData.handle%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09delete%20events%5B%20type%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Remove%20data%20and%20the%20expando%20if%20it%27s%20no%20longer%20used%0A%09%09if%20%28%20jQuery.isEmptyObject%28%20events%20%29%20%29%20%7B%0A%09%09%09dataPriv.remove%28%20elem%2C%20%22handle%20events%22%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09dispatch%3A%20function%28%20nativeEvent%20%29%20%7B%0A%0A%09%09var%20i%2C%20j%2C%20ret%2C%20matched%2C%20handleObj%2C%20handlerQueue%2C%0A%09%09%09args%20%3D%20new%20Array%28%20arguments.length%20%29%2C%0A%0A%09%09%09//%20Make%20a%20writable%20jQuery.Event%20from%20the%20native%20event%20object%0A%09%09%09event%20%3D%20jQuery.event.fix%28%20nativeEvent%20%29%2C%0A%0A%09%09%09handlers%20%3D%20%28%0A%09%09%09%09%09dataPriv.get%28%20this%2C%20%22events%22%20%29%20%7C%7C%20Object.create%28%20null%20%29%0A%09%09%09%09%29%5B%20event.type%20%5D%20%7C%7C%20%5B%5D%2C%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20event.type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09//%20Use%20the%20fix-ed%20jQuery.Event%20rather%20than%20the%20%28read-only%29%20native%20event%0A%09%09args%5B%200%20%5D%20%3D%20event%3B%0A%0A%09%09for%20%28%20i%20%3D%201%3B%20i%20%3C%20arguments.length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09args%5B%20i%20%5D%20%3D%20arguments%5B%20i%20%5D%3B%0A%09%09%7D%0A%0A%09%09event.delegateTarget%20%3D%20this%3B%0A%0A%09%09//%20Call%20the%20preDispatch%20hook%20for%20the%20mapped%20type%2C%20and%20let%20it%20bail%20if%20desired%0A%09%09if%20%28%20special.preDispatch%20%26%26%20special.preDispatch.call%28%20this%2C%20event%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Determine%20handlers%0A%09%09handlerQueue%20%3D%20jQuery.event.handlers.call%28%20this%2C%20event%2C%20handlers%20%29%3B%0A%0A%09%09//%20Run%20delegates%20first%3B%20they%20may%20want%20to%20stop%20propagation%20beneath%20us%0A%09%09i%20%3D%200%3B%0A%09%09while%20%28%20%28%20matched%20%3D%20handlerQueue%5B%20i%2B%2B%20%5D%20%29%20%26%26%20%21event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09event.currentTarget%20%3D%20matched.elem%3B%0A%0A%09%09%09j%20%3D%200%3B%0A%09%09%09while%20%28%20%28%20handleObj%20%3D%20matched.handlers%5B%20j%2B%2B%20%5D%20%29%20%26%26%0A%09%09%09%09%21event.isImmediatePropagationStopped%28%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20the%20event%20is%20namespaced%2C%20then%20each%20handler%20is%20only%20invoked%20if%20it%20is%0A%09%09%09%09//%20specially%20universal%20or%20its%20namespaces%20are%20a%20superset%20of%20the%20event%27s.%0A%09%09%09%09if%20%28%20%21event.rnamespace%20%7C%7C%20handleObj.namespace%20%3D%3D%3D%20false%20%7C%7C%0A%09%09%09%09%09event.rnamespace.test%28%20handleObj.namespace%20%29%20%29%20%7B%0A%0A%09%09%09%09%09event.handleObj%20%3D%20handleObj%3B%0A%09%09%09%09%09event.data%20%3D%20handleObj.data%3B%0A%0A%09%09%09%09%09ret%20%3D%20%28%20%28%20jQuery.event.special%5B%20handleObj.origType%20%5D%20%7C%7C%20%7B%7D%20%29.handle%20%7C%7C%0A%09%09%09%09%09%09handleObj.handler%20%29.apply%28%20matched.elem%2C%20args%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20ret%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20event.result%20%3D%20ret%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Call%20the%20postDispatch%20hook%20for%20the%20mapped%20type%0A%09%09if%20%28%20special.postDispatch%20%29%20%7B%0A%09%09%09special.postDispatch.call%28%20this%2C%20event%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20event.result%3B%0A%09%7D%2C%0A%0A%09handlers%3A%20function%28%20event%2C%20handlers%20%29%20%7B%0A%09%09var%20i%2C%20handleObj%2C%20sel%2C%20matchedHandlers%2C%20matchedSelectors%2C%0A%09%09%09handlerQueue%20%3D%20%5B%5D%2C%0A%09%09%09delegateCount%20%3D%20handlers.delegateCount%2C%0A%09%09%09cur%20%3D%20event.target%3B%0A%0A%09%09//%20Find%20delegate%20handlers%0A%09%09if%20%28%20delegateCount%20%26%26%0A%0A%09%09%09//%20Support%3A%20IE%20%3C%3D9%0A%09%09%09//%20Black-hole%20SVG%20%3Cuse%3E%20instance%20trees%20%28trac-13180%29%0A%09%09%09cur.nodeType%20%26%26%0A%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D42%0A%09%09%09//%20Suppress%20spec-violating%20clicks%20indicating%20a%20non-primary%20pointer%20button%20%28trac-3861%29%0A%09%09%09//%20https%3A//www.w3.org/TR/DOM-Level-3-Events/%23event-type-click%0A%09%09%09//%20Support%3A%20IE%2011%20only%0A%09%09%09//%20...but%20not%20arrow%20key%20%22clicks%22%20of%20radio%20inputs%2C%20which%20can%20have%20%60button%60%20-1%20%28gh-2343%29%0A%09%09%09%21%28%20event.type%20%3D%3D%3D%20%22click%22%20%26%26%20event.button%20%3E%3D%201%20%29%20%29%20%7B%0A%0A%09%09%09for%20%28%20%3B%20cur%20%21%3D%3D%20this%3B%20cur%20%3D%20cur.parentNode%20%7C%7C%20this%20%29%20%7B%0A%0A%09%09%09%09//%20Don%27t%20check%20non-elements%20%28%2313208%29%0A%09%09%09%09//%20Don%27t%20process%20clicks%20on%20disabled%20elements%20%28%236911%2C%20%238165%2C%20%2311382%2C%20%2311764%29%0A%09%09%09%09if%20%28%20cur.nodeType%20%3D%3D%3D%201%20%26%26%20%21%28%20event.type%20%3D%3D%3D%20%22click%22%20%26%26%20cur.disabled%20%3D%3D%3D%20true%20%29%20%29%20%7B%0A%09%09%09%09%09matchedHandlers%20%3D%20%5B%5D%3B%0A%09%09%09%09%09matchedSelectors%20%3D%20%7B%7D%3B%0A%09%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20delegateCount%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09%09handleObj%20%3D%20handlers%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09%09//%20Don%27t%20conflict%20with%20Object.prototype%20properties%20%28%2313203%29%0A%09%09%09%09%09%09sel%20%3D%20handleObj.selector%20%2B%20%22%20%22%3B%0A%0A%09%09%09%09%09%09if%20%28%20matchedSelectors%5B%20sel%20%5D%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09%09%09matchedSelectors%5B%20sel%20%5D%20%3D%20handleObj.needsContext%20%3F%0A%09%09%09%09%09%09%09%09jQuery%28%20sel%2C%20this%20%29.index%28%20cur%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09%09%09%09jQuery.find%28%20sel%2C%20this%2C%20null%2C%20%5B%20cur%20%5D%20%29.length%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28%20matchedSelectors%5B%20sel%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09matchedHandlers.push%28%20handleObj%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20matchedHandlers.length%20%29%20%7B%0A%09%09%09%09%09%09handlerQueue.push%28%20%7B%20elem%3A%20cur%2C%20handlers%3A%20matchedHandlers%20%7D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Add%20the%20remaining%20%28directly-bound%29%20handlers%0A%09%09cur%20%3D%20this%3B%0A%09%09if%20%28%20delegateCount%20%3C%20handlers.length%20%29%20%7B%0A%09%09%09handlerQueue.push%28%20%7B%20elem%3A%20cur%2C%20handlers%3A%20handlers.slice%28%20delegateCount%20%29%20%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20handlerQueue%3B%0A%09%7D%2C%0A%0A%09addProp%3A%20function%28%20name%2C%20hook%20%29%20%7B%0A%09%09Object.defineProperty%28%20jQuery.Event.prototype%2C%20name%2C%20%7B%0A%09%09%09enumerable%3A%20true%2C%0A%09%09%09configurable%3A%20true%2C%0A%0A%09%09%09get%3A%20isFunction%28%20hook%20%29%20%3F%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.originalEvent%20%29%20%7B%0A%09%09%09%09%09%09%09return%20hook%28%20this.originalEvent%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%3A%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.originalEvent%20%29%20%7B%0A%09%09%09%09%09%09%09return%20this.originalEvent%5B%20name%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%2C%0A%0A%09%09%09set%3A%20function%28%20value%20%29%20%7B%0A%09%09%09%09Object.defineProperty%28%20this%2C%20name%2C%20%7B%0A%09%09%09%09%09enumerable%3A%20true%2C%0A%09%09%09%09%09configurable%3A%20true%2C%0A%09%09%09%09%09writable%3A%20true%2C%0A%09%09%09%09%09value%3A%20value%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09fix%3A%20function%28%20originalEvent%20%29%20%7B%0A%09%09return%20originalEvent%5B%20jQuery.expando%20%5D%20%3F%0A%09%09%09originalEvent%20%3A%0A%09%09%09new%20jQuery.Event%28%20originalEvent%20%29%3B%0A%09%7D%2C%0A%0A%09special%3A%20%7B%0A%09%09load%3A%20%7B%0A%0A%09%09%09//%20Prevent%20triggered%20image.load%20events%20from%20bubbling%20to%20window.load%0A%09%09%09noBubble%3A%20true%0A%09%09%7D%2C%0A%09%09click%3A%20%7B%0A%0A%09%09%09//%20Utilize%20native%20event%20to%20ensure%20correct%20state%20for%20checkable%20inputs%0A%09%09%09setup%3A%20function%28%20data%20%29%20%7B%0A%0A%09%09%09%09//%20For%20mutual%20compressibility%20with%20_default%2C%20replace%20%60this%60%20access%20with%20a%20local%20var.%0A%09%09%09%09//%20%60%7C%7C%20data%60%20is%20dead%20code%20meant%20only%20to%20preserve%20the%20variable%20through%20minification.%0A%09%09%09%09var%20el%20%3D%20this%20%7C%7C%20data%3B%0A%0A%09%09%09%09//%20Claim%20the%20first%20handler%0A%09%09%09%09if%20%28%20rcheckableType.test%28%20el.type%20%29%20%26%26%0A%09%09%09%09%09el.click%20%26%26%20nodeName%28%20el%2C%20%22input%22%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20dataPriv.set%28%20el%2C%20%22click%22%2C%20...%20%29%0A%09%09%09%09%09leverageNative%28%20el%2C%20%22click%22%2C%20returnTrue%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Return%20false%20to%20allow%20normal%20processing%20in%20the%20caller%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%2C%0A%09%09%09trigger%3A%20function%28%20data%20%29%20%7B%0A%0A%09%09%09%09//%20For%20mutual%20compressibility%20with%20_default%2C%20replace%20%60this%60%20access%20with%20a%20local%20var.%0A%09%09%09%09//%20%60%7C%7C%20data%60%20is%20dead%20code%20meant%20only%20to%20preserve%20the%20variable%20through%20minification.%0A%09%09%09%09var%20el%20%3D%20this%20%7C%7C%20data%3B%0A%0A%09%09%09%09//%20Force%20setup%20before%20triggering%20a%20click%0A%09%09%09%09if%20%28%20rcheckableType.test%28%20el.type%20%29%20%26%26%0A%09%09%09%09%09el.click%20%26%26%20nodeName%28%20el%2C%20%22input%22%20%29%20%29%20%7B%0A%0A%09%09%09%09%09leverageNative%28%20el%2C%20%22click%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Return%20non-false%20to%20allow%20normal%20event-path%20propagation%0A%09%09%09%09return%20true%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20For%20cross-browser%20consistency%2C%20suppress%20native%20.click%28%29%20on%20links%0A%09%09%09//%20Also%20prevent%20it%20if%20we%27re%20currently%20inside%20a%20leveraged%20native-event%20stack%0A%09%09%09_default%3A%20function%28%20event%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20event.target%3B%0A%09%09%09%09return%20rcheckableType.test%28%20target.type%20%29%20%26%26%0A%09%09%09%09%09target.click%20%26%26%20nodeName%28%20target%2C%20%22input%22%20%29%20%26%26%0A%09%09%09%09%09dataPriv.get%28%20target%2C%20%22click%22%20%29%20%7C%7C%0A%09%09%09%09%09nodeName%28%20target%2C%20%22a%22%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09beforeunload%3A%20%7B%0A%09%09%09postDispatch%3A%20function%28%20event%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Firefox%2020%2B%0A%09%09%09%09//%20Firefox%20doesn%27t%20alert%20if%20the%20returnValue%20field%20is%20not%20set.%0A%09%09%09%09if%20%28%20event.result%20%21%3D%3D%20undefined%20%26%26%20event.originalEvent%20%29%20%7B%0A%09%09%09%09%09event.originalEvent.returnValue%20%3D%20event.result%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0A//%20Ensure%20the%20presence%20of%20an%20event%20listener%20that%20handles%20manually-triggered%0A//%20synthetic%20events%20by%20interrupting%20progress%20until%20reinvoked%20in%20response%20to%0A//%20%2Anative%2A%20events%20that%20it%20fires%20directly%2C%20ensuring%20that%20state%20changes%20have%0A//%20already%20occurred%20before%20other%20listeners%20are%20invoked.%0Afunction%20leverageNative%28%20el%2C%20type%2C%20expectSync%20%29%20%7B%0A%0A%09//%20Missing%20expectSync%20indicates%20a%20trigger%20call%2C%20which%20must%20force%20setup%20through%20jQuery.event.add%0A%09if%20%28%20%21expectSync%20%29%20%7B%0A%09%09if%20%28%20dataPriv.get%28%20el%2C%20type%20%29%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09jQuery.event.add%28%20el%2C%20type%2C%20returnTrue%20%29%3B%0A%09%09%7D%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Register%20the%20controller%20as%20a%20special%20universal%20handler%20for%20all%20event%20namespaces%0A%09dataPriv.set%28%20el%2C%20type%2C%20false%20%29%3B%0A%09jQuery.event.add%28%20el%2C%20type%2C%20%7B%0A%09%09namespace%3A%20false%2C%0A%09%09handler%3A%20function%28%20event%20%29%20%7B%0A%09%09%09var%20notAsync%2C%20result%2C%0A%09%09%09%09saved%20%3D%20dataPriv.get%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09if%20%28%20%28%20event.isTrigger%20%26%201%20%29%20%26%26%20this%5B%20type%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Interrupt%20processing%20of%20the%20outer%20synthetic%20.trigger%28%29ed%20event%0A%09%09%09%09//%20Saved%20data%20should%20be%20false%20in%20such%20cases%2C%20but%20might%20be%20a%20leftover%20capture%20object%0A%09%09%09%09//%20from%20an%20async%20native%20handler%20%28gh-4350%29%0A%09%09%09%09if%20%28%20%21saved.length%20%29%20%7B%0A%0A%09%09%09%09%09//%20Store%20arguments%20for%20use%20when%20handling%20the%20inner%20native%20event%0A%09%09%09%09%09//%20There%20will%20always%20be%20at%20least%20one%20argument%20%28an%20event%20object%29%2C%20so%20this%20array%0A%09%09%09%09%09//%20will%20not%20be%20confused%20with%20a%20leftover%20capture%20object.%0A%09%09%09%09%09saved%20%3D%20slice.call%28%20arguments%20%29%3B%0A%09%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20saved%20%29%3B%0A%0A%09%09%09%09%09//%20Trigger%20the%20native%20event%20and%20capture%20its%20result%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A%09%09%09%09%09//%20focus%28%29%20and%20blur%28%29%20are%20asynchronous%0A%09%09%09%09%09notAsync%20%3D%20expectSync%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%09this%5B%20type%20%5D%28%29%3B%0A%09%09%09%09%09result%20%3D%20dataPriv.get%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%09if%20%28%20saved%20%21%3D%3D%20result%20%7C%7C%20notAsync%20%29%20%7B%0A%09%09%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20false%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09result%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20saved%20%21%3D%3D%20result%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Cancel%20the%20outer%20synthetic%20event%0A%09%09%09%09%09%09event.stopImmediatePropagation%28%29%3B%0A%09%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%09%09return%20result.value%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09//%20If%20this%20is%20an%20inner%20synthetic%20event%20for%20an%20event%20with%20a%20bubbling%20surrogate%0A%09%09%09%09//%20%28focus%20or%20blur%29%2C%20assume%20that%20the%20surrogate%20already%20propagated%20from%20triggering%20the%0A%09%09%09%09//%20native%20event%20and%20prevent%20that%20from%20happening%20again%20here.%0A%09%09%09%09//%20This%20technically%20gets%20the%20ordering%20wrong%20w.r.t.%20to%20%60.trigger%28%29%60%20%28in%20which%20the%0A%09%09%09%09//%20bubbling%20surrogate%20propagates%20%2Aafter%2A%20the%20non-bubbling%20base%29%2C%20but%20that%20seems%0A%09%09%09%09//%20less%20bad%20than%20duplication.%0A%09%09%09%09%7D%20else%20if%20%28%20%28%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%20%29.delegateType%20%29%20%7B%0A%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09//%20If%20this%20is%20a%20native%20event%20triggered%20above%2C%20everything%20is%20now%20in%20order%0A%09%09%09//%20Fire%20an%20inner%20synthetic%20event%20with%20the%20original%20arguments%0A%09%09%09%7D%20else%20if%20%28%20saved.length%20%29%20%7B%0A%0A%09%09%09%09//%20...and%20capture%20the%20result%0A%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20%7B%0A%09%09%09%09%09value%3A%20jQuery.event.trigger%28%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A%09%09%09%09%09%09//%20Extend%20with%20the%20prototype%20to%20reset%20the%20above%20stopImmediatePropagation%28%29%0A%09%09%09%09%09%09jQuery.extend%28%20saved%5B%200%20%5D%2C%20jQuery.Event.prototype%20%29%2C%0A%09%09%09%09%09%09saved.slice%28%201%20%29%2C%0A%09%09%09%09%09%09this%0A%09%09%09%09%09%29%0A%09%09%09%09%7D%20%29%3B%0A%0A%09%09%09%09//%20Abort%20handling%20of%20the%20native%20event%0A%09%09%09%09event.stopImmediatePropagation%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0AjQuery.removeEvent%20%3D%20function%28%20elem%2C%20type%2C%20handle%20%29%20%7B%0A%0A%09//%20This%20%22if%22%20is%20needed%20for%20plain%20objects%0A%09if%20%28%20elem.removeEventListener%20%29%20%7B%0A%09%09elem.removeEventListener%28%20type%2C%20handle%20%29%3B%0A%09%7D%0A%7D%3B%0A%0AjQuery.Event%20%3D%20function%28%20src%2C%20props%20%29%20%7B%0A%0A%09//%20Allow%20instantiation%20without%20the%20%27new%27%20keyword%0A%09if%20%28%20%21%28%20this%20instanceof%20jQuery.Event%20%29%20%29%20%7B%0A%09%09return%20new%20jQuery.Event%28%20src%2C%20props%20%29%3B%0A%09%7D%0A%0A%09//%20Event%20object%0A%09if%20%28%20src%20%26%26%20src.type%20%29%20%7B%0A%09%09this.originalEvent%20%3D%20src%3B%0A%09%09this.type%20%3D%20src.type%3B%0A%0A%09%09//%20Events%20bubbling%20up%20the%20document%20may%20have%20been%20marked%20as%20prevented%0A%09%09//%20by%20a%20handler%20lower%20down%20the%20tree%3B%20reflect%20the%20correct%20value.%0A%09%09this.isDefaultPrevented%20%3D%20src.defaultPrevented%20%7C%7C%0A%09%09%09%09src.defaultPrevented%20%3D%3D%3D%20undefined%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D2.3%20only%0A%09%09%09%09src.returnValue%20%3D%3D%3D%20false%20%3F%0A%09%09%09returnTrue%20%3A%0A%09%09%09returnFalse%3B%0A%0A%09%09//%20Create%20target%20properties%0A%09%09//%20Support%3A%20Safari%20%3C%3D6%20-%207%20only%0A%09%09//%20Target%20should%20not%20be%20a%20text%20node%20%28%23504%2C%20%2313143%29%0A%09%09this.target%20%3D%20%28%20src.target%20%26%26%20src.target.nodeType%20%3D%3D%3D%203%20%29%20%3F%0A%09%09%09src.target.parentNode%20%3A%0A%09%09%09src.target%3B%0A%0A%09%09this.currentTarget%20%3D%20src.currentTarget%3B%0A%09%09this.relatedTarget%20%3D%20src.relatedTarget%3B%0A%0A%09//%20Event%20type%0A%09%7D%20else%20%7B%0A%09%09this.type%20%3D%20src%3B%0A%09%7D%0A%0A%09//%20Put%20explicitly%20provided%20properties%20onto%20the%20event%20object%0A%09if%20%28%20props%20%29%20%7B%0A%09%09jQuery.extend%28%20this%2C%20props%20%29%3B%0A%09%7D%0A%0A%09//%20Create%20a%20timestamp%20if%20incoming%20event%20doesn%27t%20have%20one%0A%09this.timeStamp%20%3D%20src%20%26%26%20src.timeStamp%20%7C%7C%20Date.now%28%29%3B%0A%0A%09//%20Mark%20it%20as%20fixed%0A%09this%5B%20jQuery.expando%20%5D%20%3D%20true%3B%0A%7D%3B%0A%0A//%20jQuery.Event%20is%20based%20on%20DOM3%20Events%20as%20specified%20by%20the%20ECMAScript%20Language%20Binding%0A//%20https%3A//www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html%0AjQuery.Event.prototype%20%3D%20%7B%0A%09constructor%3A%20jQuery.Event%2C%0A%09isDefaultPrevented%3A%20returnFalse%2C%0A%09isPropagationStopped%3A%20returnFalse%2C%0A%09isImmediatePropagationStopped%3A%20returnFalse%2C%0A%09isSimulated%3A%20false%2C%0A%0A%09preventDefault%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isDefaultPrevented%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09stopPropagation%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isPropagationStopped%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09stopImmediatePropagation%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isImmediatePropagationStopped%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.stopImmediatePropagation%28%29%3B%0A%09%09%7D%0A%0A%09%09this.stopPropagation%28%29%3B%0A%09%7D%0A%7D%3B%0A%0A//%20Includes%20all%20common%20event%20props%20including%20KeyEvent%20and%20MouseEvent%20specific%20props%0AjQuery.each%28%20%7B%0A%09altKey%3A%20true%2C%0A%09bubbles%3A%20true%2C%0A%09cancelable%3A%20true%2C%0A%09changedTouches%3A%20true%2C%0A%09ctrlKey%3A%20true%2C%0A%09detail%3A%20true%2C%0A%09eventPhase%3A%20true%2C%0A%09metaKey%3A%20true%2C%0A%09pageX%3A%20true%2C%0A%09pageY%3A%20true%2C%0A%09shiftKey%3A%20true%2C%0A%09view%3A%20true%2C%0A%09%22char%22%3A%20true%2C%0A%09code%3A%20true%2C%0A%09charCode%3A%20true%2C%0A%09key%3A%20true%2C%0A%09keyCode%3A%20true%2C%0A%09button%3A%20true%2C%0A%09buttons%3A%20true%2C%0A%09clientX%3A%20true%2C%0A%09clientY%3A%20true%2C%0A%09offsetX%3A%20true%2C%0A%09offsetY%3A%20true%2C%0A%09pointerId%3A%20true%2C%0A%09pointerType%3A%20true%2C%0A%09screenX%3A%20true%2C%0A%09screenY%3A%20true%2C%0A%09targetTouches%3A%20true%2C%0A%09toElement%3A%20true%2C%0A%09touches%3A%20true%2C%0A%0A%09which%3A%20function%28%20event%20%29%20%7B%0A%09%09var%20button%20%3D%20event.button%3B%0A%0A%09%09//%20Add%20which%20for%20key%20events%0A%09%09if%20%28%20event.which%20%3D%3D%20null%20%26%26%20rkeyEvent.test%28%20event.type%20%29%20%29%20%7B%0A%09%09%09return%20event.charCode%20%21%3D%20null%20%3F%20event.charCode%20%3A%20event.keyCode%3B%0A%09%09%7D%0A%0A%09%09//%20Add%20which%20for%20click%3A%201%20%3D%3D%3D%20left%3B%202%20%3D%3D%3D%20middle%3B%203%20%3D%3D%3D%20right%0A%09%09if%20%28%20%21event.which%20%26%26%20button%20%21%3D%3D%20undefined%20%26%26%20rmouseEvent.test%28%20event.type%20%29%20%29%20%7B%0A%09%09%09if%20%28%20button%20%26%201%20%29%20%7B%0A%09%09%09%09return%201%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20button%20%26%202%20%29%20%7B%0A%09%09%09%09return%203%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20button%20%26%204%20%29%20%7B%0A%09%09%09%09return%202%3B%0A%09%09%09%7D%0A%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09return%20event.which%3B%0A%09%7D%0A%7D%2C%20jQuery.event.addProp%20%29%3B%0A%0AjQuery.each%28%20%7B%20focus%3A%20%22focusin%22%2C%20blur%3A%20%22focusout%22%20%7D%2C%20function%28%20type%2C%20delegateType%20%29%20%7B%0A%09jQuery.event.special%5B%20type%20%5D%20%3D%20%7B%0A%0A%09%09//%20Utilize%20native%20event%20if%20possible%20so%20blur/focus%20sequence%20is%20correct%0A%09%09setup%3A%20function%28%29%20%7B%0A%0A%09%09%09//%20Claim%20the%20first%20handler%0A%09%09%09//%20dataPriv.set%28%20this%2C%20%22focus%22%2C%20...%20%29%0A%09%09%09//%20dataPriv.set%28%20this%2C%20%22blur%22%2C%20...%20%29%0A%09%09%09leverageNative%28%20this%2C%20type%2C%20expectSync%20%29%3B%0A%0A%09%09%09//%20Return%20false%20to%20allow%20normal%20processing%20in%20the%20caller%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09trigger%3A%20function%28%29%20%7B%0A%0A%09%09%09//%20Force%20setup%20before%20trigger%0A%09%09%09leverageNative%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09//%20Return%20non-false%20to%20allow%20normal%20event-path%20propagation%0A%09%09%09return%20true%3B%0A%09%09%7D%2C%0A%0A%09%09delegateType%3A%20delegateType%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Create%20mouseenter/leave%20events%20using%20mouseover/out%20and%20event-time%20checks%0A//%20so%20that%20event%20delegation%20works%20in%20jQuery.%0A//%20Do%20the%20same%20for%20pointerenter/pointerleave%20and%20pointerover/pointerout%0A//%0A//%20Support%3A%20Safari%207%20only%0A//%20Safari%20sends%20mouseenter%20too%20often%3B%20see%3A%0A//%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D470258%0A//%20for%20the%20description%20of%20the%20bug%20%28it%20existed%20in%20older%20Chrome%20versions%20as%20well%29.%0AjQuery.each%28%20%7B%0A%09mouseenter%3A%20%22mouseover%22%2C%0A%09mouseleave%3A%20%22mouseout%22%2C%0A%09pointerenter%3A%20%22pointerover%22%2C%0A%09pointerleave%3A%20%22pointerout%22%0A%7D%2C%20function%28%20orig%2C%20fix%20%29%20%7B%0A%09jQuery.event.special%5B%20orig%20%5D%20%3D%20%7B%0A%09%09delegateType%3A%20fix%2C%0A%09%09bindType%3A%20fix%2C%0A%0A%09%09handle%3A%20function%28%20event%20%29%20%7B%0A%09%09%09var%20ret%2C%0A%09%09%09%09target%20%3D%20this%2C%0A%09%09%09%09related%20%3D%20event.relatedTarget%2C%0A%09%09%09%09handleObj%20%3D%20event.handleObj%3B%0A%0A%09%09%09//%20For%20mouseenter/leave%20call%20the%20handler%20if%20related%20is%20outside%20the%20target.%0A%09%09%09//%20NB%3A%20No%20relatedTarget%20if%20the%20mouse%20left/entered%20the%20browser%20window%0A%09%09%09if%20%28%20%21related%20%7C%7C%20%28%20related%20%21%3D%3D%20target%20%26%26%20%21jQuery.contains%28%20target%2C%20related%20%29%20%29%20%29%20%7B%0A%09%09%09%09event.type%20%3D%20handleObj.origType%3B%0A%09%09%09%09ret%20%3D%20handleObj.handler.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09event.type%20%3D%20fix%3B%0A%09%09%09%7D%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09on%3A%20function%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20on%28%20this%2C%20types%2C%20selector%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09one%3A%20function%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20on%28%20this%2C%20types%2C%20selector%2C%20data%2C%20fn%2C%201%20%29%3B%0A%09%7D%2C%0A%09off%3A%20function%28%20types%2C%20selector%2C%20fn%20%29%20%7B%0A%09%09var%20handleObj%2C%20type%3B%0A%09%09if%20%28%20types%20%26%26%20types.preventDefault%20%26%26%20types.handleObj%20%29%20%7B%0A%0A%09%09%09//%20%28%20event%20%29%20%20dispatched%20jQuery.Event%0A%09%09%09handleObj%20%3D%20types.handleObj%3B%0A%09%09%09jQuery%28%20types.delegateTarget%20%29.off%28%0A%09%09%09%09handleObj.namespace%20%3F%0A%09%09%09%09%09handleObj.origType%20%2B%20%22.%22%20%2B%20handleObj.namespace%20%3A%0A%09%09%09%09%09handleObj.origType%2C%0A%09%09%09%09handleObj.selector%2C%0A%09%09%09%09handleObj.handler%0A%09%09%09%29%3B%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%09%09if%20%28%20typeof%20types%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types-object%20%5B%2C%20selector%5D%20%29%0A%09%09%09for%20%28%20type%20in%20types%20%29%20%7B%0A%09%09%09%09this.off%28%20type%2C%20selector%2C%20types%5B%20type%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%09%09if%20%28%20selector%20%3D%3D%3D%20false%20%7C%7C%20typeof%20selector%20%3D%3D%3D%20%22function%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types%20%5B%2C%20fn%5D%20%29%0A%09%09%09fn%20%3D%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09if%20%28%20fn%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09fn%20%3D%20returnFalse%3B%0A%09%09%7D%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.event.remove%28%20this%2C%20types%2C%20fn%2C%20selector%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Avar%0A%0A%09//%20Support%3A%20IE%20%3C%3D10%20-%2011%2C%20Edge%2012%20-%2013%20only%0A%09//%20In%20IE/Edge%20using%20regex%20groups%20here%20causes%20severe%20slowdowns.%0A%09//%20See%20https%3A//connect.microsoft.com/IE/feedback/details/1736512/%0A%09rnoInnerhtml%20%3D%20/%3Cscript%7C%3Cstyle%7C%3Clink/i%2C%0A%0A%09//%20checked%3D%22checked%22%20or%20checked%0A%09rchecked%20%3D%20/checked%5Cs%2A%28%3F%3A%5B%5E%3D%5D%7C%3D%5Cs%2A.checked.%29/i%2C%0A%09rcleanScript%20%3D%20/%5E%5Cs%2A%3C%21%28%3F%3A%5C%5BCDATA%5C%5B%7C--%29%7C%28%3F%3A%5C%5D%5C%5D%7C--%29%3E%5Cs%2A%24/g%3B%0A%0A//%20Prefer%20a%20tbody%20over%20its%20parent%20table%20for%20containing%20new%20rows%0Afunction%20manipulationTarget%28%20elem%2C%20content%20%29%20%7B%0A%09if%20%28%20nodeName%28%20elem%2C%20%22table%22%20%29%20%26%26%0A%09%09nodeName%28%20content.nodeType%20%21%3D%3D%2011%20%3F%20content%20%3A%20content.firstChild%2C%20%22tr%22%20%29%20%29%20%7B%0A%0A%09%09return%20jQuery%28%20elem%20%29.children%28%20%22tbody%22%20%29%5B%200%20%5D%20%7C%7C%20elem%3B%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0A//%20Replace/restore%20the%20type%20attribute%20of%20script%20elements%20for%20safe%20DOM%20manipulation%0Afunction%20disableScript%28%20elem%20%29%20%7B%0A%09elem.type%20%3D%20%28%20elem.getAttribute%28%20%22type%22%20%29%20%21%3D%3D%20null%20%29%20%2B%20%22/%22%20%2B%20elem.type%3B%0A%09return%20elem%3B%0A%7D%0Afunction%20restoreScript%28%20elem%20%29%20%7B%0A%09if%20%28%20%28%20elem.type%20%7C%7C%20%22%22%20%29.slice%28%200%2C%205%20%29%20%3D%3D%3D%20%22true/%22%20%29%20%7B%0A%09%09elem.type%20%3D%20elem.type.slice%28%205%20%29%3B%0A%09%7D%20else%20%7B%0A%09%09elem.removeAttribute%28%20%22type%22%20%29%3B%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0Afunction%20cloneCopyEvent%28%20src%2C%20dest%20%29%20%7B%0A%09var%20i%2C%20l%2C%20type%2C%20pdataOld%2C%20udataOld%2C%20udataCur%2C%20events%3B%0A%0A%09if%20%28%20dest.nodeType%20%21%3D%3D%201%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%201.%20Copy%20private%20data%3A%20events%2C%20handlers%2C%20etc.%0A%09if%20%28%20dataPriv.hasData%28%20src%20%29%20%29%20%7B%0A%09%09pdataOld%20%3D%20dataPriv.get%28%20src%20%29%3B%0A%09%09events%20%3D%20pdataOld.events%3B%0A%0A%09%09if%20%28%20events%20%29%20%7B%0A%09%09%09dataPriv.remove%28%20dest%2C%20%22handle%20events%22%20%29%3B%0A%0A%09%09%09for%20%28%20type%20in%20events%20%29%20%7B%0A%09%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20events%5B%20type%20%5D.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09jQuery.event.add%28%20dest%2C%20type%2C%20events%5B%20type%20%5D%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%202.%20Copy%20user%20data%0A%09if%20%28%20dataUser.hasData%28%20src%20%29%20%29%20%7B%0A%09%09udataOld%20%3D%20dataUser.access%28%20src%20%29%3B%0A%09%09udataCur%20%3D%20jQuery.extend%28%20%7B%7D%2C%20udataOld%20%29%3B%0A%0A%09%09dataUser.set%28%20dest%2C%20udataCur%20%29%3B%0A%09%7D%0A%7D%0A%0A//%20Fix%20IE%20bugs%2C%20see%20support%20tests%0Afunction%20fixInput%28%20src%2C%20dest%20%29%20%7B%0A%09var%20nodeName%20%3D%20dest.nodeName.toLowerCase%28%29%3B%0A%0A%09//%20Fails%20to%20persist%20the%20checked%20state%20of%20a%20cloned%20checkbox%20or%20radio%20button.%0A%09if%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%26%26%20rcheckableType.test%28%20src.type%20%29%20%29%20%7B%0A%09%09dest.checked%20%3D%20src.checked%3B%0A%0A%09//%20Fails%20to%20return%20the%20selected%20option%20to%20the%20default%20selected%20state%20when%20cloning%20options%0A%09%7D%20else%20if%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%7C%7C%20nodeName%20%3D%3D%3D%20%22textarea%22%20%29%20%7B%0A%09%09dest.defaultValue%20%3D%20src.defaultValue%3B%0A%09%7D%0A%7D%0A%0Afunction%20domManip%28%20collection%2C%20args%2C%20callback%2C%20ignored%20%29%20%7B%0A%0A%09//%20Flatten%20any%20nested%20arrays%0A%09args%20%3D%20flat%28%20args%20%29%3B%0A%0A%09var%20fragment%2C%20first%2C%20scripts%2C%20hasScripts%2C%20node%2C%20doc%2C%0A%09%09i%20%3D%200%2C%0A%09%09l%20%3D%20collection.length%2C%0A%09%09iNoClone%20%3D%20l%20-%201%2C%0A%09%09value%20%3D%20args%5B%200%20%5D%2C%0A%09%09valueIsFunction%20%3D%20isFunction%28%20value%20%29%3B%0A%0A%09//%20We%20can%27t%20cloneNode%20fragments%20that%20contain%20checked%2C%20in%20WebKit%0A%09if%20%28%20valueIsFunction%20%7C%7C%0A%09%09%09%28%20l%20%3E%201%20%26%26%20typeof%20value%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%21support.checkClone%20%26%26%20rchecked.test%28%20value%20%29%20%29%20%29%20%7B%0A%09%09return%20collection.each%28%20function%28%20index%20%29%20%7B%0A%09%09%09var%20self%20%3D%20collection.eq%28%20index%20%29%3B%0A%09%09%09if%20%28%20valueIsFunction%20%29%20%7B%0A%09%09%09%09args%5B%200%20%5D%20%3D%20value.call%28%20this%2C%20index%2C%20self.html%28%29%20%29%3B%0A%09%09%09%7D%0A%09%09%09domManip%28%20self%2C%20args%2C%20callback%2C%20ignored%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09if%20%28%20l%20%29%20%7B%0A%09%09fragment%20%3D%20buildFragment%28%20args%2C%20collection%5B%200%20%5D.ownerDocument%2C%20false%2C%20collection%2C%20ignored%20%29%3B%0A%09%09first%20%3D%20fragment.firstChild%3B%0A%0A%09%09if%20%28%20fragment.childNodes.length%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09fragment%20%3D%20first%3B%0A%09%09%7D%0A%0A%09%09//%20Require%20either%20new%20content%20or%20an%20interest%20in%20ignored%20elements%20to%20invoke%20the%20callback%0A%09%09if%20%28%20first%20%7C%7C%20ignored%20%29%20%7B%0A%09%09%09scripts%20%3D%20jQuery.map%28%20getAll%28%20fragment%2C%20%22script%22%20%29%2C%20disableScript%20%29%3B%0A%09%09%09hasScripts%20%3D%20scripts.length%3B%0A%0A%09%09%09//%20Use%20the%20original%20fragment%20for%20the%20last%20item%0A%09%09%09//%20instead%20of%20the%20first%20because%20it%20can%20end%20up%0A%09%09%09//%20being%20emptied%20incorrectly%20in%20certain%20situations%20%28%238070%29.%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09node%20%3D%20fragment%3B%0A%0A%09%09%09%09if%20%28%20i%20%21%3D%3D%20iNoClone%20%29%20%7B%0A%09%09%09%09%09node%20%3D%20jQuery.clone%28%20node%2C%20true%2C%20true%20%29%3B%0A%0A%09%09%09%09%09//%20Keep%20references%20to%20cloned%20scripts%20for%20later%20restoration%0A%09%09%09%09%09if%20%28%20hasScripts%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09%09%09jQuery.merge%28%20scripts%2C%20getAll%28%20node%2C%20%22script%22%20%29%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09callback.call%28%20collection%5B%20i%20%5D%2C%20node%2C%20i%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20hasScripts%20%29%20%7B%0A%09%09%09%09doc%20%3D%20scripts%5B%20scripts.length%20-%201%20%5D.ownerDocument%3B%0A%0A%09%09%09%09//%20Reenable%20scripts%0A%09%09%09%09jQuery.map%28%20scripts%2C%20restoreScript%20%29%3B%0A%0A%09%09%09%09//%20Evaluate%20executable%20scripts%20on%20first%20document%20insertion%0A%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20hasScripts%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09node%20%3D%20scripts%5B%20i%20%5D%3B%0A%09%09%09%09%09if%20%28%20rscriptType.test%28%20node.type%20%7C%7C%20%22%22%20%29%20%26%26%0A%09%09%09%09%09%09%21dataPriv.access%28%20node%2C%20%22globalEval%22%20%29%20%26%26%0A%09%09%09%09%09%09jQuery.contains%28%20doc%2C%20node%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09if%20%28%20node.src%20%26%26%20%28%20node.type%20%7C%7C%20%22%22%20%29.toLowerCase%28%29%20%20%21%3D%3D%20%22module%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Optional%20AJAX%20dependency%2C%20but%20won%27t%20run%20scripts%20if%20not%20present%0A%09%09%09%09%09%09%09if%20%28%20jQuery._evalUrl%20%26%26%20%21node.noModule%20%29%20%7B%0A%09%09%09%09%09%09%09%09jQuery._evalUrl%28%20node.src%2C%20%7B%0A%09%09%09%09%09%09%09%09%09nonce%3A%20node.nonce%20%7C%7C%20node.getAttribute%28%20%22nonce%22%20%29%0A%09%09%09%09%09%09%09%09%7D%2C%20doc%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09DOMEval%28%20node.textContent.replace%28%20rcleanScript%2C%20%22%22%20%29%2C%20node%2C%20doc%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20collection%3B%0A%7D%0A%0Afunction%20remove%28%20elem%2C%20selector%2C%20keepData%20%29%20%7B%0A%09var%20node%2C%0A%09%09nodes%20%3D%20selector%20%3F%20jQuery.filter%28%20selector%2C%20elem%20%29%20%3A%20elem%2C%0A%09%09i%20%3D%200%3B%0A%0A%09for%20%28%20%3B%20%28%20node%20%3D%20nodes%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%21keepData%20%26%26%20node.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09jQuery.cleanData%28%20getAll%28%20node%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20node.parentNode%20%29%20%7B%0A%09%09%09if%20%28%20keepData%20%26%26%20isAttached%28%20node%20%29%20%29%20%7B%0A%09%09%09%09setGlobalEval%28%20getAll%28%20node%2C%20%22script%22%20%29%20%29%3B%0A%09%09%09%7D%0A%09%09%09node.parentNode.removeChild%28%20node%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%09htmlPrefilter%3A%20function%28%20html%20%29%20%7B%0A%09%09return%20html%3B%0A%09%7D%2C%0A%0A%09clone%3A%20function%28%20elem%2C%20dataAndEvents%2C%20deepDataAndEvents%20%29%20%7B%0A%09%09var%20i%2C%20l%2C%20srcElements%2C%20destElements%2C%0A%09%09%09clone%20%3D%20elem.cloneNode%28%20true%20%29%2C%0A%09%09%09inPage%20%3D%20isAttached%28%20elem%20%29%3B%0A%0A%09%09//%20Fix%20IE%20cloning%20issues%0A%09%09if%20%28%20%21support.noCloneChecked%20%26%26%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20elem.nodeType%20%3D%3D%3D%2011%20%29%20%26%26%0A%09%09%09%09%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09//%20We%20eschew%20Sizzle%20here%20for%20performance%20reasons%3A%20https%3A//jsperf.com/getall-vs-sizzle/2%0A%09%09%09destElements%20%3D%20getAll%28%20clone%20%29%3B%0A%09%09%09srcElements%20%3D%20getAll%28%20elem%20%29%3B%0A%0A%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20srcElements.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09fixInput%28%20srcElements%5B%20i%20%5D%2C%20destElements%5B%20i%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Copy%20the%20events%20from%20the%20original%20to%20the%20clone%0A%09%09if%20%28%20dataAndEvents%20%29%20%7B%0A%09%09%09if%20%28%20deepDataAndEvents%20%29%20%7B%0A%09%09%09%09srcElements%20%3D%20srcElements%20%7C%7C%20getAll%28%20elem%20%29%3B%0A%09%09%09%09destElements%20%3D%20destElements%20%7C%7C%20getAll%28%20clone%20%29%3B%0A%0A%09%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20srcElements.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09cloneCopyEvent%28%20srcElements%5B%20i%20%5D%2C%20destElements%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09cloneCopyEvent%28%20elem%2C%20clone%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Preserve%20script%20evaluation%20history%0A%09%09destElements%20%3D%20getAll%28%20clone%2C%20%22script%22%20%29%3B%0A%09%09if%20%28%20destElements.length%20%3E%200%20%29%20%7B%0A%09%09%09setGlobalEval%28%20destElements%2C%20%21inPage%20%26%26%20getAll%28%20elem%2C%20%22script%22%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20the%20cloned%20set%0A%09%09return%20clone%3B%0A%09%7D%2C%0A%0A%09cleanData%3A%20function%28%20elems%20%29%20%7B%0A%09%09var%20data%2C%20elem%2C%20type%2C%0A%09%09%09special%20%3D%20jQuery.event.special%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20%28%20elem%20%3D%20elems%5B%20i%20%5D%20%29%20%21%3D%3D%20undefined%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20acceptData%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20%28%20data%20%3D%20elem%5B%20dataPriv.expando%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20data.events%20%29%20%7B%0A%09%09%09%09%09%09for%20%28%20type%20in%20data.events%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20special%5B%20type%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09%09jQuery.event.remove%28%20elem%2C%20type%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20This%20is%20a%20shortcut%20to%20avoid%20jQuery.event.remove%27s%20overhead%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09jQuery.removeEvent%28%20elem%2C%20type%2C%20data.handle%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%2B%0A%09%09%09%09%09//%20Assign%20undefined%20instead%20of%20using%20delete%2C%20see%20Data%23remove%0A%09%09%09%09%09elem%5B%20dataPriv.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28%20elem%5B%20dataUser.expando%20%5D%20%29%20%7B%0A%0A%09%09%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%2B%0A%09%09%09%09%09//%20Assign%20undefined%20instead%20of%20using%20delete%2C%20see%20Data%23remove%0A%09%09%09%09%09elem%5B%20dataUser.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09detach%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20remove%28%20this%2C%20selector%2C%20true%20%29%3B%0A%09%7D%2C%0A%0A%09remove%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20remove%28%20this%2C%20selector%20%29%3B%0A%09%7D%2C%0A%0A%09text%3A%20function%28%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09return%20value%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09%09jQuery.text%28%20this%20%29%20%3A%0A%09%09%09%09this.empty%28%29.each%28%20function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09%09this.textContent%20%3D%20value%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%29%3B%0A%09%7D%2C%0A%0A%09append%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20manipulationTarget%28%20this%2C%20elem%20%29%3B%0A%09%09%09%09target.appendChild%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09prepend%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20manipulationTarget%28%20this%2C%20elem%20%29%3B%0A%09%09%09%09target.insertBefore%28%20elem%2C%20target.firstChild%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09before%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.parentNode%20%29%20%7B%0A%09%09%09%09this.parentNode.insertBefore%28%20elem%2C%20this%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09after%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.parentNode%20%29%20%7B%0A%09%09%09%09this.parentNode.insertBefore%28%20elem%2C%20this.nextSibling%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09empty%3A%20function%28%29%20%7B%0A%09%09var%20elem%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20%28%20elem%20%3D%20this%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09//%20Prevent%20memory%20leaks%0A%09%09%09%09jQuery.cleanData%28%20getAll%28%20elem%2C%20false%20%29%20%29%3B%0A%0A%09%09%09%09//%20Remove%20any%20remaining%20nodes%0A%09%09%09%09elem.textContent%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09clone%3A%20function%28%20dataAndEvents%2C%20deepDataAndEvents%20%29%20%7B%0A%09%09dataAndEvents%20%3D%20dataAndEvents%20%3D%3D%20null%20%3F%20false%20%3A%20dataAndEvents%3B%0A%09%09deepDataAndEvents%20%3D%20deepDataAndEvents%20%3D%3D%20null%20%3F%20dataAndEvents%20%3A%20deepDataAndEvents%3B%0A%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%09%09%09return%20jQuery.clone%28%20this%2C%20dataAndEvents%2C%20deepDataAndEvents%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09html%3A%20function%28%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09var%20elem%20%3D%20this%5B%200%20%5D%20%7C%7C%20%7B%7D%2C%0A%09%09%09%09i%20%3D%200%2C%0A%09%09%09%09l%20%3D%20this.length%3B%0A%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20undefined%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09return%20elem.innerHTML%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20See%20if%20we%20can%20take%20a%20shortcut%20and%20just%20use%20innerHTML%0A%09%09%09if%20%28%20typeof%20value%20%3D%3D%3D%20%22string%22%20%26%26%20%21rnoInnerhtml.test%28%20value%20%29%20%26%26%0A%09%09%09%09%21wrapMap%5B%20%28%20rtagName.exec%28%20value%20%29%20%7C%7C%20%5B%20%22%22%2C%20%22%22%20%5D%20%29%5B%201%20%5D.toLowerCase%28%29%20%5D%20%29%20%7B%0A%0A%09%09%09%09value%20%3D%20jQuery.htmlPrefilter%28%20value%20%29%3B%0A%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09%09elem%20%3D%20this%5B%20i%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09%09%09%09//%20Remove%20element%20nodes%20and%20prevent%20memory%20leaks%0A%09%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09%09%09%09jQuery.cleanData%28%20getAll%28%20elem%2C%20false%20%29%20%29%3B%0A%09%09%09%09%09%09%09elem.innerHTML%20%3D%20value%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09elem%20%3D%200%3B%0A%0A%09%09%09%09//%20If%20using%20innerHTML%20throws%20an%20exception%2C%20use%20the%20fallback%20method%0A%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09%09this.empty%28%29.append%28%20value%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%29%3B%0A%09%7D%2C%0A%0A%09replaceWith%3A%20function%28%29%20%7B%0A%09%09var%20ignored%20%3D%20%5B%5D%3B%0A%0A%09%09//%20Make%20the%20changes%2C%20replacing%20each%20non-ignored%20context%20element%20with%20the%20new%20content%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20parent%20%3D%20this.parentNode%3B%0A%0A%09%09%09if%20%28%20jQuery.inArray%28%20this%2C%20ignored%20%29%20%3C%200%20%29%20%7B%0A%09%09%09%09jQuery.cleanData%28%20getAll%28%20this%20%29%20%29%3B%0A%09%09%09%09if%20%28%20parent%20%29%20%7B%0A%09%09%09%09%09parent.replaceChild%28%20elem%2C%20this%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Force%20callback%20invocation%0A%09%09%7D%2C%20ignored%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%7B%0A%09appendTo%3A%20%22append%22%2C%0A%09prependTo%3A%20%22prepend%22%2C%0A%09insertBefore%3A%20%22before%22%2C%0A%09insertAfter%3A%20%22after%22%2C%0A%09replaceAll%3A%20%22replaceWith%22%0A%7D%2C%20function%28%20name%2C%20original%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20selector%20%29%20%7B%0A%09%09var%20elems%2C%0A%09%09%09ret%20%3D%20%5B%5D%2C%0A%09%09%09insert%20%3D%20jQuery%28%20selector%20%29%2C%0A%09%09%09last%20%3D%20insert.length%20-%201%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20i%20%3C%3D%20last%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09elems%20%3D%20i%20%3D%3D%3D%20last%20%3F%20this%20%3A%20this.clone%28%20true%20%29%3B%0A%09%09%09jQuery%28%20insert%5B%20i%20%5D%20%29%5B%20original%20%5D%28%20elems%20%29%3B%0A%0A%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09//%20.get%28%29%20because%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09push.apply%28%20ret%2C%20elems.get%28%29%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20ret%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0Avar%20rnumnonpx%20%3D%20new%20RegExp%28%20%22%5E%28%22%20%2B%20pnum%20%2B%20%22%29%28%3F%21px%29%5Ba-z%25%5D%2B%24%22%2C%20%22i%22%20%29%3B%0A%0Avar%20getStyles%20%3D%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D11%20only%2C%20Firefox%20%3C%3D30%20%28%2315098%2C%20%2314150%29%0A%09%09//%20IE%20throws%20on%20elements%20created%20in%20popups%0A%09%09//%20FF%20meanwhile%20throws%20on%20frame%20elements%20through%20%22defaultView.getComputedStyle%22%0A%09%09var%20view%20%3D%20elem.ownerDocument.defaultView%3B%0A%0A%09%09if%20%28%20%21view%20%7C%7C%20%21view.opener%20%29%20%7B%0A%09%09%09view%20%3D%20window%3B%0A%09%09%7D%0A%0A%09%09return%20view.getComputedStyle%28%20elem%20%29%3B%0A%09%7D%3B%0A%0Avar%20swap%20%3D%20function%28%20elem%2C%20options%2C%20callback%20%29%20%7B%0A%09var%20ret%2C%20name%2C%0A%09%09old%20%3D%20%7B%7D%3B%0A%0A%09//%20Remember%20the%20old%20values%2C%20and%20insert%20the%20new%20ones%0A%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09old%5B%20name%20%5D%20%3D%20elem.style%5B%20name%20%5D%3B%0A%09%09elem.style%5B%20name%20%5D%20%3D%20options%5B%20name%20%5D%3B%0A%09%7D%0A%0A%09ret%20%3D%20callback.call%28%20elem%20%29%3B%0A%0A%09//%20Revert%20the%20old%20values%0A%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09elem.style%5B%20name%20%5D%20%3D%20old%5B%20name%20%5D%3B%0A%09%7D%0A%0A%09return%20ret%3B%0A%7D%3B%0A%0A%0Avar%20rboxStyle%20%3D%20new%20RegExp%28%20cssExpand.join%28%20%22%7C%22%20%29%2C%20%22i%22%20%29%3B%0A%0A%0A%0A%28%20function%28%29%20%7B%0A%0A%09//%20Executing%20both%20pixelPosition%20%26%20boxSizingReliable%20tests%20require%20only%20one%20layout%0A%09//%20so%20they%27re%20executed%20at%20the%20same%20time%20to%20save%20the%20second%20computation.%0A%09function%20computeStyleTests%28%29%20%7B%0A%0A%09%09//%20This%20is%20a%20singleton%2C%20we%20need%20to%20execute%20it%20only%20once%0A%09%09if%20%28%20%21div%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09container.style.cssText%20%3D%20%22position%3Aabsolute%3Bleft%3A-11111px%3Bwidth%3A60px%3B%22%20%2B%0A%09%09%09%22margin-top%3A1px%3Bpadding%3A0%3Bborder%3A0%22%3B%0A%09%09div.style.cssText%20%3D%0A%09%09%09%22position%3Arelative%3Bdisplay%3Ablock%3Bbox-sizing%3Aborder-box%3Boverflow%3Ascroll%3B%22%20%2B%0A%09%09%09%22margin%3Aauto%3Bborder%3A1px%3Bpadding%3A1px%3B%22%20%2B%0A%09%09%09%22width%3A60%25%3Btop%3A1%25%22%3B%0A%09%09documentElement.appendChild%28%20container%20%29.appendChild%28%20div%20%29%3B%0A%0A%09%09var%20divStyle%20%3D%20window.getComputedStyle%28%20div%20%29%3B%0A%09%09pixelPositionVal%20%3D%20divStyle.top%20%21%3D%3D%20%221%25%22%3B%0A%0A%09%09//%20Support%3A%20Android%204.0%20-%204.3%20only%2C%20Firefox%20%3C%3D3%20-%2044%0A%09%09reliableMarginLeftVal%20%3D%20roundPixelMeasures%28%20divStyle.marginLeft%20%29%20%3D%3D%3D%2012%3B%0A%0A%09%09//%20Support%3A%20Android%204.0%20-%204.3%20only%2C%20Safari%20%3C%3D9.1%20-%2010.1%2C%20iOS%20%3C%3D7.0%20-%209.3%0A%09%09//%20Some%20styles%20come%20back%20with%20percentage%20values%2C%20even%20though%20they%20shouldn%27t%0A%09%09div.style.right%20%3D%20%2260%25%22%3B%0A%09%09pixelBoxStylesVal%20%3D%20roundPixelMeasures%28%20divStyle.right%20%29%20%3D%3D%3D%2036%3B%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09%09//%20Detect%20misreporting%20of%20content%20dimensions%20for%20box-sizing%3Aborder-box%20elements%0A%09%09boxSizingReliableVal%20%3D%20roundPixelMeasures%28%20divStyle.width%20%29%20%3D%3D%3D%2036%3B%0A%0A%09%09//%20Support%3A%20IE%209%20only%0A%09%09//%20Detect%20overflow%3Ascroll%20screwiness%20%28gh-3699%29%0A%09%09//%20Support%3A%20Chrome%20%3C%3D64%0A%09%09//%20Don%27t%20get%20tricked%20when%20zoom%20affects%20offsetWidth%20%28gh-4029%29%0A%09%09div.style.position%20%3D%20%22absolute%22%3B%0A%09%09scrollboxSizeVal%20%3D%20roundPixelMeasures%28%20div.offsetWidth%20/%203%20%29%20%3D%3D%3D%2012%3B%0A%0A%09%09documentElement.removeChild%28%20container%20%29%3B%0A%0A%09%09//%20Nullify%20the%20div%20so%20it%20wouldn%27t%20be%20stored%20in%20the%20memory%20and%0A%09%09//%20it%20will%20also%20be%20a%20sign%20that%20checks%20already%20performed%0A%09%09div%20%3D%20null%3B%0A%09%7D%0A%0A%09function%20roundPixelMeasures%28%20measure%20%29%20%7B%0A%09%09return%20Math.round%28%20parseFloat%28%20measure%20%29%20%29%3B%0A%09%7D%0A%0A%09var%20pixelPositionVal%2C%20boxSizingReliableVal%2C%20scrollboxSizeVal%2C%20pixelBoxStylesVal%2C%0A%09%09reliableTrDimensionsVal%2C%20reliableMarginLeftVal%2C%0A%09%09container%20%3D%20document.createElement%28%20%22div%22%20%29%2C%0A%09%09div%20%3D%20document.createElement%28%20%22div%22%20%29%3B%0A%0A%09//%20Finish%20early%20in%20limited%20%28non-browser%29%20environments%0A%09if%20%28%20%21div.style%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09//%20Style%20of%20cloned%20element%20affects%20source%20element%20cloned%20%28%238908%29%0A%09div.style.backgroundClip%20%3D%20%22content-box%22%3B%0A%09div.cloneNode%28%20true%20%29.style.backgroundClip%20%3D%20%22%22%3B%0A%09support.clearCloneStyle%20%3D%20div.style.backgroundClip%20%3D%3D%3D%20%22content-box%22%3B%0A%0A%09jQuery.extend%28%20support%2C%20%7B%0A%09%09boxSizingReliable%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20boxSizingReliableVal%3B%0A%09%09%7D%2C%0A%09%09pixelBoxStyles%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20pixelBoxStylesVal%3B%0A%09%09%7D%2C%0A%09%09pixelPosition%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20pixelPositionVal%3B%0A%09%09%7D%2C%0A%09%09reliableMarginLeft%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20reliableMarginLeftVal%3B%0A%09%09%7D%2C%0A%09%09scrollboxSize%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20scrollboxSizeVal%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09//%20IE/Edge%20misreport%20%60getComputedStyle%60%20of%20table%20rows%20with%20width/height%0A%09%09//%20set%20in%20CSS%20while%20%60offset%2A%60%20properties%20report%20correct%20values.%0A%09%09//%20Behavior%20in%20IE%209%20is%20more%20subtle%20than%20in%20newer%20versions%20%26%20it%20passes%0A%09%09//%20some%20versions%20of%20this%20test%3B%20make%20sure%20not%20to%20make%20it%20pass%20there%21%0A%09%09reliableTrDimensions%3A%20function%28%29%20%7B%0A%09%09%09var%20table%2C%20tr%2C%20trChild%2C%20trStyle%3B%0A%09%09%09if%20%28%20reliableTrDimensionsVal%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09table%20%3D%20document.createElement%28%20%22table%22%20%29%3B%0A%09%09%09%09tr%20%3D%20document.createElement%28%20%22tr%22%20%29%3B%0A%09%09%09%09trChild%20%3D%20document.createElement%28%20%22div%22%20%29%3B%0A%0A%09%09%09%09table.style.cssText%20%3D%20%22position%3Aabsolute%3Bleft%3A-11111px%22%3B%0A%09%09%09%09tr.style.height%20%3D%20%221px%22%3B%0A%09%09%09%09trChild.style.height%20%3D%20%229px%22%3B%0A%0A%09%09%09%09documentElement%0A%09%09%09%09%09.appendChild%28%20table%20%29%0A%09%09%09%09%09.appendChild%28%20tr%20%29%0A%09%09%09%09%09.appendChild%28%20trChild%20%29%3B%0A%0A%09%09%09%09trStyle%20%3D%20window.getComputedStyle%28%20tr%20%29%3B%0A%09%09%09%09reliableTrDimensionsVal%20%3D%20parseInt%28%20trStyle.height%20%29%20%3E%203%3B%0A%0A%09%09%09%09documentElement.removeChild%28%20table%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20reliableTrDimensionsVal%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%20%29%28%29%3B%0A%0A%0Afunction%20curCSS%28%20elem%2C%20name%2C%20computed%20%29%20%7B%0A%09var%20width%2C%20minWidth%2C%20maxWidth%2C%20ret%2C%0A%0A%09%09//%20Support%3A%20Firefox%2051%2B%0A%09%09//%20Retrieving%20style%20before%20computed%20somehow%0A%09%09//%20fixes%20an%20issue%20with%20getting%20wrong%20values%0A%09%09//%20on%20detached%20elements%0A%09%09style%20%3D%20elem.style%3B%0A%0A%09computed%20%3D%20computed%20%7C%7C%20getStyles%28%20elem%20%29%3B%0A%0A%09//%20getPropertyValue%20is%20needed%20for%3A%0A%09//%20%20%20.css%28%27filter%27%29%20%28IE%209%20only%2C%20%2312537%29%0A%09//%20%20%20.css%28%27--customProperty%29%20%28%233144%29%0A%09if%20%28%20computed%20%29%20%7B%0A%09%09ret%20%3D%20computed.getPropertyValue%28%20name%20%29%20%7C%7C%20computed%5B%20name%20%5D%3B%0A%0A%09%09if%20%28%20ret%20%3D%3D%3D%20%22%22%20%26%26%20%21isAttached%28%20elem%20%29%20%29%20%7B%0A%09%09%09ret%20%3D%20jQuery.style%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20A%20tribute%20to%20the%20%22awesome%20hack%20by%20Dean%20Edwards%22%0A%09%09//%20Android%20Browser%20returns%20percentage%20for%20some%20values%2C%0A%09%09//%20but%20width%20seems%20to%20be%20reliably%20pixels.%0A%09%09//%20This%20is%20against%20the%20CSSOM%20draft%20spec%3A%0A%09%09//%20https%3A//drafts.csswg.org/cssom/%23resolved-values%0A%09%09if%20%28%20%21support.pixelBoxStyles%28%29%20%26%26%20rnumnonpx.test%28%20ret%20%29%20%26%26%20rboxStyle.test%28%20name%20%29%20%29%20%7B%0A%0A%09%09%09//%20Remember%20the%20original%20values%0A%09%09%09width%20%3D%20style.width%3B%0A%09%09%09minWidth%20%3D%20style.minWidth%3B%0A%09%09%09maxWidth%20%3D%20style.maxWidth%3B%0A%0A%09%09%09//%20Put%20in%20the%20new%20values%20to%20get%20a%20computed%20value%20out%0A%09%09%09style.minWidth%20%3D%20style.maxWidth%20%3D%20style.width%20%3D%20ret%3B%0A%09%09%09ret%20%3D%20computed.width%3B%0A%0A%09%09%09//%20Revert%20the%20changed%20values%0A%09%09%09style.width%20%3D%20width%3B%0A%09%09%09style.minWidth%20%3D%20minWidth%3B%0A%09%09%09style.maxWidth%20%3D%20maxWidth%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20ret%20%21%3D%3D%20undefined%20%3F%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09%09//%20IE%20returns%20zIndex%20value%20as%20an%20integer.%0A%09%09ret%20%2B%20%22%22%20%3A%0A%09%09ret%3B%0A%7D%0A%0A%0Afunction%20addGetHookIf%28%20conditionFn%2C%20hookFn%20%29%20%7B%0A%0A%09//%20Define%20the%20hook%2C%20we%27ll%20check%20on%20the%20first%20run%20if%20it%27s%20really%20needed.%0A%09return%20%7B%0A%09%09get%3A%20function%28%29%20%7B%0A%09%09%09if%20%28%20conditionFn%28%29%20%29%20%7B%0A%0A%09%09%09%09//%20Hook%20not%20needed%20%28or%20it%27s%20not%20possible%20to%20use%20it%20due%0A%09%09%09%09//%20to%20missing%20dependency%29%2C%20remove%20it.%0A%09%09%09%09delete%20this.get%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Hook%20needed%3B%20redefine%20it%20so%20that%20the%20support%20test%20is%20not%20executed%20again.%0A%09%09%09return%20%28%20this.get%20%3D%20hookFn%20%29.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0A%0Avar%20cssPrefixes%20%3D%20%5B%20%22Webkit%22%2C%20%22Moz%22%2C%20%22ms%22%20%5D%2C%0A%09emptyStyle%20%3D%20document.createElement%28%20%22div%22%20%29.style%2C%0A%09vendorProps%20%3D%20%7B%7D%3B%0A%0A//%20Return%20a%20vendor-prefixed%20property%20or%20undefined%0Afunction%20vendorPropName%28%20name%20%29%20%7B%0A%0A%09//%20Check%20for%20vendor%20prefixed%20names%0A%09var%20capName%20%3D%20name%5B%200%20%5D.toUpperCase%28%29%20%2B%20name.slice%28%201%20%29%2C%0A%09%09i%20%3D%20cssPrefixes.length%3B%0A%0A%09while%20%28%20i--%20%29%20%7B%0A%09%09name%20%3D%20cssPrefixes%5B%20i%20%5D%20%2B%20capName%3B%0A%09%09if%20%28%20name%20in%20emptyStyle%20%29%20%7B%0A%09%09%09return%20name%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0A//%20Return%20a%20potentially-mapped%20jQuery.cssProps%20or%20vendor%20prefixed%20property%0Afunction%20finalPropName%28%20name%20%29%20%7B%0A%09var%20final%20%3D%20jQuery.cssProps%5B%20name%20%5D%20%7C%7C%20vendorProps%5B%20name%20%5D%3B%0A%0A%09if%20%28%20final%20%29%20%7B%0A%09%09return%20final%3B%0A%09%7D%0A%09if%20%28%20name%20in%20emptyStyle%20%29%20%7B%0A%09%09return%20name%3B%0A%09%7D%0A%09return%20vendorProps%5B%20name%20%5D%20%3D%20vendorPropName%28%20name%20%29%20%7C%7C%20name%3B%0A%7D%0A%0A%0Avar%0A%0A%09//%20Swappable%20if%20display%20is%20none%20or%20starts%20with%20table%0A%09//%20except%20%22table%22%2C%20%22table-cell%22%2C%20or%20%22table-caption%22%0A%09//%20See%20here%20for%20display%20values%3A%20https%3A//developer.mozilla.org/en-US/docs/CSS/display%0A%09rdisplayswap%20%3D%20/%5E%28none%7Ctable%28%3F%21-c%5Bea%5D%29.%2B%29/%2C%0A%09rcustomProp%20%3D%20/%5E--/%2C%0A%09cssShow%20%3D%20%7B%20position%3A%20%22absolute%22%2C%20visibility%3A%20%22hidden%22%2C%20display%3A%20%22block%22%20%7D%2C%0A%09cssNormalTransform%20%3D%20%7B%0A%09%09letterSpacing%3A%20%220%22%2C%0A%09%09fontWeight%3A%20%22400%22%0A%09%7D%3B%0A%0Afunction%20setPositiveNumber%28%20_elem%2C%20value%2C%20subtract%20%29%20%7B%0A%0A%09//%20Any%20relative%20%28%2B/-%29%20values%20have%20already%20been%0A%09//%20normalized%20at%20this%20point%0A%09var%20matches%20%3D%20rcssNum.exec%28%20value%20%29%3B%0A%09return%20matches%20%3F%0A%0A%09%09//%20Guard%20against%20undefined%20%22subtract%22%2C%20e.g.%2C%20when%20used%20as%20in%20cssHooks%0A%09%09Math.max%28%200%2C%20matches%5B%202%20%5D%20-%20%28%20subtract%20%7C%7C%200%20%29%20%29%20%2B%20%28%20matches%5B%203%20%5D%20%7C%7C%20%22px%22%20%29%20%3A%0A%09%09value%3B%0A%7D%0A%0Afunction%20boxModelAdjustment%28%20elem%2C%20dimension%2C%20box%2C%20isBorderBox%2C%20styles%2C%20computedVal%20%29%20%7B%0A%09var%20i%20%3D%20dimension%20%3D%3D%3D%20%22width%22%20%3F%201%20%3A%200%2C%0A%09%09extra%20%3D%200%2C%0A%09%09delta%20%3D%200%3B%0A%0A%09//%20Adjustment%20may%20not%20be%20necessary%0A%09if%20%28%20box%20%3D%3D%3D%20%28%20isBorderBox%20%3F%20%22border%22%20%3A%20%22content%22%20%29%20%29%20%7B%0A%09%09return%200%3B%0A%09%7D%0A%0A%09for%20%28%20%3B%20i%20%3C%204%3B%20i%20%2B%3D%202%20%29%20%7B%0A%0A%09%09//%20Both%20box%20models%20exclude%20margin%0A%09%09if%20%28%20box%20%3D%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20box%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20If%20we%20get%20here%20with%20a%20content-box%2C%20we%27re%20seeking%20%22padding%22%20or%20%22border%22%20or%20%22margin%22%0A%09%09if%20%28%20%21isBorderBox%20%29%20%7B%0A%0A%09%09%09//%20Add%20padding%0A%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20%22padding%22%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%0A%09%09%09//%20For%20%22border%22%20or%20%22margin%22%2C%20add%20border%0A%09%09%09if%20%28%20box%20%21%3D%3D%20%22padding%22%20%29%20%7B%0A%09%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%0A%09%09%09//%20But%20still%20keep%20track%20of%20it%20otherwise%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09extra%20%2B%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%0A%09%09//%20If%20we%20get%20here%20with%20a%20border-box%20%28content%20%2B%20padding%20%2B%20border%29%2C%20we%27re%20seeking%20%22content%22%20or%0A%09%09//%20%22padding%22%20or%20%22margin%22%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20For%20%22content%22%2C%20subtract%20padding%0A%09%09%09if%20%28%20box%20%3D%3D%3D%20%22content%22%20%29%20%7B%0A%09%09%09%09delta%20-%3D%20jQuery.css%28%20elem%2C%20%22padding%22%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20For%20%22content%22%20or%20%22padding%22%2C%20subtract%20border%0A%09%09%09if%20%28%20box%20%21%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09%09%09delta%20-%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Account%20for%20positive%20content-box%20scroll%20gutter%20when%20requested%20by%20providing%20computedVal%0A%09if%20%28%20%21isBorderBox%20%26%26%20computedVal%20%3E%3D%200%20%29%20%7B%0A%0A%09%09//%20offsetWidth/offsetHeight%20is%20a%20rounded%20sum%20of%20content%2C%20padding%2C%20scroll%20gutter%2C%20and%20border%0A%09%09//%20Assuming%20integer%20scroll%20gutter%2C%20subtract%20the%20rest%20and%20round%20down%0A%09%09delta%20%2B%3D%20Math.max%28%200%2C%20Math.ceil%28%0A%09%09%09elem%5B%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%20%5D%20-%0A%09%09%09computedVal%20-%0A%09%09%09delta%20-%0A%09%09%09extra%20-%0A%09%09%090.5%0A%0A%09%09//%20If%20offsetWidth/offsetHeight%20is%20unknown%2C%20then%20we%20can%27t%20determine%20content-box%20scroll%20gutter%0A%09%09//%20Use%20an%20explicit%20zero%20to%20avoid%20NaN%20%28gh-3964%29%0A%09%09%29%20%29%20%7C%7C%200%3B%0A%09%7D%0A%0A%09return%20delta%3B%0A%7D%0A%0Afunction%20getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%20%7B%0A%0A%09//%20Start%20with%20computed%20style%0A%09var%20styles%20%3D%20getStyles%28%20elem%20%29%2C%0A%0A%09%09//%20To%20avoid%20forcing%20a%20reflow%2C%20only%20fetch%20boxSizing%20if%20we%20need%20it%20%28gh-4322%29.%0A%09%09//%20Fake%20content-box%20until%20we%20know%20it%27s%20needed%20to%20know%20the%20true%20value.%0A%09%09boxSizingNeeded%20%3D%20%21support.boxSizingReliable%28%29%20%7C%7C%20extra%2C%0A%09%09isBorderBox%20%3D%20boxSizingNeeded%20%26%26%0A%09%09%09jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%2C%0A%09%09valueIsBorderBox%20%3D%20isBorderBox%2C%0A%0A%09%09val%20%3D%20curCSS%28%20elem%2C%20dimension%2C%20styles%20%29%2C%0A%09%09offsetProp%20%3D%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%3B%0A%0A%09//%20Support%3A%20Firefox%20%3C%3D54%0A%09//%20Return%20a%20confounding%20non-pixel%20value%20or%20feign%20ignorance%2C%20as%20appropriate.%0A%09if%20%28%20rnumnonpx.test%28%20val%20%29%20%29%20%7B%0A%09%09if%20%28%20%21extra%20%29%20%7B%0A%09%09%09return%20val%3B%0A%09%09%7D%0A%09%09val%20%3D%20%22auto%22%3B%0A%09%7D%0A%0A%0A%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09//%20Use%20offsetWidth/offsetHeight%20for%20when%20box%20sizing%20is%20unreliable.%0A%09//%20In%20those%20cases%2C%20the%20computed%20value%20can%20be%20trusted%20to%20be%20border-box.%0A%09if%20%28%20%28%20%21support.boxSizingReliable%28%29%20%26%26%20isBorderBox%20%7C%7C%0A%0A%09%09//%20Support%3A%20IE%2010%20-%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09//%20IE/Edge%20misreport%20%60getComputedStyle%60%20of%20table%20rows%20with%20width/height%0A%09%09//%20set%20in%20CSS%20while%20%60offset%2A%60%20properties%20report%20correct%20values.%0A%09%09//%20Interestingly%2C%20in%20some%20cases%20IE%209%20doesn%27t%20suffer%20from%20this%20issue.%0A%09%09%21support.reliableTrDimensions%28%29%20%26%26%20nodeName%28%20elem%2C%20%22tr%22%20%29%20%7C%7C%0A%0A%09%09//%20Fall%20back%20to%20offsetWidth/offsetHeight%20when%20value%20is%20%22auto%22%0A%09%09//%20This%20happens%20for%20inline%20elements%20with%20no%20explicit%20setting%20%28gh-3571%29%0A%09%09val%20%3D%3D%3D%20%22auto%22%20%7C%7C%0A%0A%09%09//%20Support%3A%20Android%20%3C%3D4.1%20-%204.3%20only%0A%09%09//%20Also%20use%20offsetWidth/offsetHeight%20for%20misreported%20inline%20dimensions%20%28gh-3602%29%0A%09%09%21parseFloat%28%20val%20%29%20%26%26%20jQuery.css%28%20elem%2C%20%22display%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22inline%22%20%29%20%26%26%0A%0A%09%09//%20Make%20sure%20the%20element%20is%20visible%20%26%20connected%0A%09%09elem.getClientRects%28%29.length%20%29%20%7B%0A%0A%09%09isBorderBox%20%3D%20jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%3B%0A%0A%09%09//%20Where%20available%2C%20offsetWidth/offsetHeight%20approximate%20border%20box%20dimensions.%0A%09%09//%20Where%20not%20available%20%28e.g.%2C%20SVG%29%2C%20assume%20unreliable%20box-sizing%20and%20interpret%20the%0A%09%09//%20retrieved%20value%20as%20a%20content%20box%20dimension.%0A%09%09valueIsBorderBox%20%3D%20offsetProp%20in%20elem%3B%0A%09%09if%20%28%20valueIsBorderBox%20%29%20%7B%0A%09%09%09val%20%3D%20elem%5B%20offsetProp%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Normalize%20%22%22%20and%20auto%0A%09val%20%3D%20parseFloat%28%20val%20%29%20%7C%7C%200%3B%0A%0A%09//%20Adjust%20for%20the%20element%27s%20box%20model%0A%09return%20%28%20val%20%2B%0A%09%09boxModelAdjustment%28%0A%09%09%09elem%2C%0A%09%09%09dimension%2C%0A%09%09%09extra%20%7C%7C%20%28%20isBorderBox%20%3F%20%22border%22%20%3A%20%22content%22%20%29%2C%0A%09%09%09valueIsBorderBox%2C%0A%09%09%09styles%2C%0A%0A%09%09%09//%20Provide%20the%20current%20computed%20size%20to%20request%20scroll%20gutter%20calculation%20%28gh-3589%29%0A%09%09%09val%0A%09%09%29%0A%09%29%20%2B%20%22px%22%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Add%20in%20style%20property%20hooks%20for%20overriding%20the%20default%0A%09//%20behavior%20of%20getting%20and%20setting%20a%20style%20property%0A%09cssHooks%3A%20%7B%0A%09%09opacity%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09%09%09if%20%28%20computed%20%29%20%7B%0A%0A%09%09%09%09%09//%20We%20should%20always%20get%20a%20number%20back%20from%20opacity%0A%09%09%09%09%09var%20ret%20%3D%20curCSS%28%20elem%2C%20%22opacity%22%20%29%3B%0A%09%09%09%09%09return%20ret%20%3D%3D%3D%20%22%22%20%3F%20%221%22%20%3A%20ret%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Don%27t%20automatically%20add%20%22px%22%20to%20these%20possibly-unitless%20properties%0A%09cssNumber%3A%20%7B%0A%09%09%22animationIterationCount%22%3A%20true%2C%0A%09%09%22columnCount%22%3A%20true%2C%0A%09%09%22fillOpacity%22%3A%20true%2C%0A%09%09%22flexGrow%22%3A%20true%2C%0A%09%09%22flexShrink%22%3A%20true%2C%0A%09%09%22fontWeight%22%3A%20true%2C%0A%09%09%22gridArea%22%3A%20true%2C%0A%09%09%22gridColumn%22%3A%20true%2C%0A%09%09%22gridColumnEnd%22%3A%20true%2C%0A%09%09%22gridColumnStart%22%3A%20true%2C%0A%09%09%22gridRow%22%3A%20true%2C%0A%09%09%22gridRowEnd%22%3A%20true%2C%0A%09%09%22gridRowStart%22%3A%20true%2C%0A%09%09%22lineHeight%22%3A%20true%2C%0A%09%09%22opacity%22%3A%20true%2C%0A%09%09%22order%22%3A%20true%2C%0A%09%09%22orphans%22%3A%20true%2C%0A%09%09%22widows%22%3A%20true%2C%0A%09%09%22zIndex%22%3A%20true%2C%0A%09%09%22zoom%22%3A%20true%0A%09%7D%2C%0A%0A%09//%20Add%20in%20properties%20whose%20names%20you%20wish%20to%20fix%20before%0A%09//%20setting%20or%20getting%20the%20value%0A%09cssProps%3A%20%7B%7D%2C%0A%0A%09//%20Get%20and%20set%20the%20style%20property%20on%20a%20DOM%20Node%0A%09style%3A%20function%28%20elem%2C%20name%2C%20value%2C%20extra%20%29%20%7B%0A%0A%09%09//%20Don%27t%20set%20styles%20on%20text%20and%20comment%20nodes%0A%09%09if%20%28%20%21elem%20%7C%7C%20elem.nodeType%20%3D%3D%3D%203%20%7C%7C%20elem.nodeType%20%3D%3D%3D%208%20%7C%7C%20%21elem.style%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name%0A%09%09var%20ret%2C%20type%2C%20hooks%2C%0A%09%09%09origName%20%3D%20camelCase%28%20name%20%29%2C%0A%09%09%09isCustomProp%20%3D%20rcustomProp.test%28%20name%20%29%2C%0A%09%09%09style%20%3D%20elem.style%3B%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name.%20We%20don%27t%0A%09%09//%20want%20to%20query%20the%20value%20if%20it%20is%20a%20CSS%20custom%20property%0A%09%09//%20since%20they%20are%20user-defined.%0A%09%09if%20%28%20%21isCustomProp%20%29%20%7B%0A%09%09%09name%20%3D%20finalPropName%28%20origName%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Gets%20hook%20for%20the%20prefixed%20version%2C%20then%20unprefixed%20version%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%20%7C%7C%20jQuery.cssHooks%5B%20origName%20%5D%3B%0A%0A%09%09//%20Check%20if%20we%27re%20setting%20a%20value%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09type%20%3D%20typeof%20value%3B%0A%0A%09%09%09//%20Convert%20%22%2B%3D%22%20or%20%22-%3D%22%20to%20relative%20numbers%20%28%237345%29%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22string%22%20%26%26%20%28%20ret%20%3D%20rcssNum.exec%28%20value%20%29%20%29%20%26%26%20ret%5B%201%20%5D%20%29%20%7B%0A%09%09%09%09value%20%3D%20adjustCSS%28%20elem%2C%20name%2C%20ret%20%29%3B%0A%0A%09%09%09%09//%20Fixes%20bug%20%239237%0A%09%09%09%09type%20%3D%20%22number%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Make%20sure%20that%20null%20and%20NaN%20values%20aren%27t%20set%20%28%237116%29%0A%09%09%09if%20%28%20value%20%3D%3D%20null%20%7C%7C%20value%20%21%3D%3D%20value%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20a%20number%20was%20passed%20in%2C%20add%20the%20unit%20%28except%20for%20certain%20CSS%20properties%29%0A%09%09%09//%20The%20isCustomProp%20check%20can%20be%20removed%20in%20jQuery%204.0%20when%20we%20only%20auto-append%0A%09%09%09//%20%22px%22%20to%20a%20few%20hardcoded%20values.%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22number%22%20%26%26%20%21isCustomProp%20%29%20%7B%0A%09%09%09%09value%20%2B%3D%20ret%20%26%26%20ret%5B%203%20%5D%20%7C%7C%20%28%20jQuery.cssNumber%5B%20origName%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20background-%2A%20props%20affect%20original%20clone%27s%20values%0A%09%09%09if%20%28%20%21support.clearCloneStyle%20%26%26%20value%20%3D%3D%3D%20%22%22%20%26%26%20name.indexOf%28%20%22background%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09%09style%5B%20name%20%5D%20%3D%20%22inherit%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20a%20hook%20was%20provided%2C%20use%20that%20value%2C%20otherwise%20just%20set%20the%20specified%20value%0A%09%09%09if%20%28%20%21hooks%20%7C%7C%20%21%28%20%22set%22%20in%20hooks%20%29%20%7C%7C%0A%09%09%09%09%28%20value%20%3D%20hooks.set%28%20elem%2C%20value%2C%20extra%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09if%20%28%20isCustomProp%20%29%20%7B%0A%09%09%09%09%09style.setProperty%28%20name%2C%20value%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09style%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20If%20a%20hook%20was%20provided%20get%20the%20non-computed%20value%20from%20there%0A%09%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.get%28%20elem%2C%20false%2C%20extra%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Otherwise%20just%20get%20the%20value%20from%20the%20style%20object%0A%09%09%09return%20style%5B%20name%20%5D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09css%3A%20function%28%20elem%2C%20name%2C%20extra%2C%20styles%20%29%20%7B%0A%09%09var%20val%2C%20num%2C%20hooks%2C%0A%09%09%09origName%20%3D%20camelCase%28%20name%20%29%2C%0A%09%09%09isCustomProp%20%3D%20rcustomProp.test%28%20name%20%29%3B%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name.%20We%20don%27t%0A%09%09//%20want%20to%20modify%20the%20value%20if%20it%20is%20a%20CSS%20custom%20property%0A%09%09//%20since%20they%20are%20user-defined.%0A%09%09if%20%28%20%21isCustomProp%20%29%20%7B%0A%09%09%09name%20%3D%20finalPropName%28%20origName%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Try%20prefixed%20name%20followed%20by%20the%20unprefixed%20name%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%20%7C%7C%20jQuery.cssHooks%5B%20origName%20%5D%3B%0A%0A%09%09//%20If%20a%20hook%20was%20provided%20get%20the%20computed%20value%20from%20there%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%29%20%7B%0A%09%09%09val%20%3D%20hooks.get%28%20elem%2C%20true%2C%20extra%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Otherwise%2C%20if%20a%20way%20to%20get%20the%20computed%20value%20exists%2C%20use%20that%0A%09%09if%20%28%20val%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09val%20%3D%20curCSS%28%20elem%2C%20name%2C%20styles%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Convert%20%22normal%22%20to%20computed%20value%0A%09%09if%20%28%20val%20%3D%3D%3D%20%22normal%22%20%26%26%20name%20in%20cssNormalTransform%20%29%20%7B%0A%09%09%09val%20%3D%20cssNormalTransform%5B%20name%20%5D%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20numeric%20if%20forced%20or%20a%20qualifier%20was%20provided%20and%20val%20looks%20numeric%0A%09%09if%20%28%20extra%20%3D%3D%3D%20%22%22%20%7C%7C%20extra%20%29%20%7B%0A%09%09%09num%20%3D%20parseFloat%28%20val%20%29%3B%0A%09%09%09return%20extra%20%3D%3D%3D%20true%20%7C%7C%20isFinite%28%20num%20%29%20%3F%20num%20%7C%7C%200%20%3A%20val%3B%0A%09%09%7D%0A%0A%09%09return%20val%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22height%22%2C%20%22width%22%20%5D%2C%20function%28%20_i%2C%20dimension%20%29%20%7B%0A%09jQuery.cssHooks%5B%20dimension%20%5D%20%3D%20%7B%0A%09%09get%3A%20function%28%20elem%2C%20computed%2C%20extra%20%29%20%7B%0A%09%09%09if%20%28%20computed%20%29%20%7B%0A%0A%09%09%09%09//%20Certain%20elements%20can%20have%20dimension%20info%20if%20we%20invisibly%20show%20them%0A%09%09%09%09//%20but%20it%20must%20have%20a%20current%20display%20style%20that%20would%20benefit%0A%09%09%09%09return%20rdisplayswap.test%28%20jQuery.css%28%20elem%2C%20%22display%22%20%29%20%29%20%26%26%0A%0A%09%09%09%09%09//%20Support%3A%20Safari%208%2B%0A%09%09%09%09%09//%20Table%20columns%20in%20Safari%20have%20non-zero%20offsetWidth%20%26%20zero%0A%09%09%09%09%09//%20getBoundingClientRect%28%29.width%20unless%20display%20is%20changed.%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09%09%09%09%09//%20Running%20getBoundingClientRect%20on%20a%20disconnected%20node%0A%09%09%09%09%09//%20in%20IE%20throws%20an%20error.%0A%09%09%09%09%09%28%20%21elem.getClientRects%28%29.length%20%7C%7C%20%21elem.getBoundingClientRect%28%29.width%20%29%20%3F%0A%09%09%09%09%09%09swap%28%20elem%2C%20cssShow%2C%20function%28%29%20%7B%0A%09%09%09%09%09%09%09return%20getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%3B%0A%09%09%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09%09%09getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09set%3A%20function%28%20elem%2C%20value%2C%20extra%20%29%20%7B%0A%09%09%09var%20matches%2C%0A%09%09%09%09styles%20%3D%20getStyles%28%20elem%20%29%2C%0A%0A%09%09%09%09//%20Only%20read%20styles.position%20if%20the%20test%20has%20a%20chance%20to%20fail%0A%09%09%09%09//%20to%20avoid%20forcing%20a%20reflow.%0A%09%09%09%09scrollboxSizeBuggy%20%3D%20%21support.scrollboxSize%28%29%20%26%26%0A%09%09%09%09%09styles.position%20%3D%3D%3D%20%22absolute%22%2C%0A%0A%09%09%09%09//%20To%20avoid%20forcing%20a%20reflow%2C%20only%20fetch%20boxSizing%20if%20we%20need%20it%20%28gh-3991%29%0A%09%09%09%09boxSizingNeeded%20%3D%20scrollboxSizeBuggy%20%7C%7C%20extra%2C%0A%09%09%09%09isBorderBox%20%3D%20boxSizingNeeded%20%26%26%0A%09%09%09%09%09jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%2C%0A%09%09%09%09subtract%20%3D%20extra%20%3F%0A%09%09%09%09%09boxModelAdjustment%28%0A%09%09%09%09%09%09elem%2C%0A%09%09%09%09%09%09dimension%2C%0A%09%09%09%09%09%09extra%2C%0A%09%09%09%09%09%09isBorderBox%2C%0A%09%09%09%09%09%09styles%0A%09%09%09%09%09%29%20%3A%0A%09%09%09%09%090%3B%0A%0A%09%09%09//%20Account%20for%20unreliable%20border-box%20dimensions%20by%20comparing%20offset%2A%20to%20computed%20and%0A%09%09%09//%20faking%20a%20content-box%20to%20get%20border%20and%20padding%20%28gh-3699%29%0A%09%09%09if%20%28%20isBorderBox%20%26%26%20scrollboxSizeBuggy%20%29%20%7B%0A%09%09%09%09subtract%20-%3D%20Math.ceil%28%0A%09%09%09%09%09elem%5B%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%20%5D%20-%0A%09%09%09%09%09parseFloat%28%20styles%5B%20dimension%20%5D%20%29%20-%0A%09%09%09%09%09boxModelAdjustment%28%20elem%2C%20dimension%2C%20%22border%22%2C%20false%2C%20styles%20%29%20-%0A%09%09%09%09%090.5%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Convert%20to%20pixels%20if%20value%20adjustment%20is%20needed%0A%09%09%09if%20%28%20subtract%20%26%26%20%28%20matches%20%3D%20rcssNum.exec%28%20value%20%29%20%29%20%26%26%0A%09%09%09%09%28%20matches%5B%203%20%5D%20%7C%7C%20%22px%22%20%29%20%21%3D%3D%20%22px%22%20%29%20%7B%0A%0A%09%09%09%09elem.style%5B%20dimension%20%5D%20%3D%20value%3B%0A%09%09%09%09value%20%3D%20jQuery.css%28%20elem%2C%20dimension%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20setPositiveNumber%28%20elem%2C%20value%2C%20subtract%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.cssHooks.marginLeft%20%3D%20addGetHookIf%28%20support.reliableMarginLeft%2C%0A%09function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09if%20%28%20computed%20%29%20%7B%0A%09%09%09return%20%28%20parseFloat%28%20curCSS%28%20elem%2C%20%22marginLeft%22%20%29%20%29%20%7C%7C%0A%09%09%09%09elem.getBoundingClientRect%28%29.left%20-%0A%09%09%09%09%09swap%28%20elem%2C%20%7B%20marginLeft%3A%200%20%7D%2C%20function%28%29%20%7B%0A%09%09%09%09%09%09return%20elem.getBoundingClientRect%28%29.left%3B%0A%09%09%09%09%09%7D%20%29%0A%09%09%09%09%29%20%2B%20%22px%22%3B%0A%09%09%7D%0A%09%7D%0A%29%3B%0A%0A//%20These%20hooks%20are%20used%20by%20animate%20to%20expand%20properties%0AjQuery.each%28%20%7B%0A%09margin%3A%20%22%22%2C%0A%09padding%3A%20%22%22%2C%0A%09border%3A%20%22Width%22%0A%7D%2C%20function%28%20prefix%2C%20suffix%20%29%20%7B%0A%09jQuery.cssHooks%5B%20prefix%20%2B%20suffix%20%5D%20%3D%20%7B%0A%09%09expand%3A%20function%28%20value%20%29%20%7B%0A%09%09%09var%20i%20%3D%200%2C%0A%09%09%09%09expanded%20%3D%20%7B%7D%2C%0A%0A%09%09%09%09//%20Assumes%20a%20single%20number%20if%20not%20a%20string%0A%09%09%09%09parts%20%3D%20typeof%20value%20%3D%3D%3D%20%22string%22%20%3F%20value.split%28%20%22%20%22%20%29%20%3A%20%5B%20value%20%5D%3B%0A%0A%09%09%09for%20%28%20%3B%20i%20%3C%204%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09expanded%5B%20prefix%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20suffix%20%5D%20%3D%0A%09%09%09%09%09parts%5B%20i%20%5D%20%7C%7C%20parts%5B%20i%20-%202%20%5D%20%7C%7C%20parts%5B%200%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20expanded%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09if%20%28%20prefix%20%21%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09jQuery.cssHooks%5B%20prefix%20%2B%20suffix%20%5D.set%20%3D%20setPositiveNumber%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09css%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09%09var%20styles%2C%20len%2C%0A%09%09%09%09map%20%3D%20%7B%7D%2C%0A%09%09%09%09i%20%3D%200%3B%0A%0A%09%09%09if%20%28%20Array.isArray%28%20name%20%29%20%29%20%7B%0A%09%09%09%09styles%20%3D%20getStyles%28%20elem%20%29%3B%0A%09%09%09%09len%20%3D%20name.length%3B%0A%0A%09%09%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09map%5B%20name%5B%20i%20%5D%20%5D%20%3D%20jQuery.css%28%20elem%2C%20name%5B%20i%20%5D%2C%20false%2C%20styles%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20map%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20value%20%21%3D%3D%20undefined%20%3F%0A%09%09%09%09jQuery.style%28%20elem%2C%20name%2C%20value%20%29%20%3A%0A%09%09%09%09jQuery.css%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Afunction%20Tween%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%20%29%20%7B%0A%09return%20new%20Tween.prototype.init%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%20%29%3B%0A%7D%0AjQuery.Tween%20%3D%20Tween%3B%0A%0ATween.prototype%20%3D%20%7B%0A%09constructor%3A%20Tween%2C%0A%09init%3A%20function%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%2C%20unit%20%29%20%7B%0A%09%09this.elem%20%3D%20elem%3B%0A%09%09this.prop%20%3D%20prop%3B%0A%09%09this.easing%20%3D%20easing%20%7C%7C%20jQuery.easing._default%3B%0A%09%09this.options%20%3D%20options%3B%0A%09%09this.start%20%3D%20this.now%20%3D%20this.cur%28%29%3B%0A%09%09this.end%20%3D%20end%3B%0A%09%09this.unit%20%3D%20unit%20%7C%7C%20%28%20jQuery.cssNumber%5B%20prop%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%3B%0A%09%7D%2C%0A%09cur%3A%20function%28%29%20%7B%0A%09%09var%20hooks%20%3D%20Tween.propHooks%5B%20this.prop%20%5D%3B%0A%0A%09%09return%20hooks%20%26%26%20hooks.get%20%3F%0A%09%09%09hooks.get%28%20this%20%29%20%3A%0A%09%09%09Tween.propHooks._default.get%28%20this%20%29%3B%0A%09%7D%2C%0A%09run%3A%20function%28%20percent%20%29%20%7B%0A%09%09var%20eased%2C%0A%09%09%09hooks%20%3D%20Tween.propHooks%5B%20this.prop%20%5D%3B%0A%0A%09%09if%20%28%20this.options.duration%20%29%20%7B%0A%09%09%09this.pos%20%3D%20eased%20%3D%20jQuery.easing%5B%20this.easing%20%5D%28%0A%09%09%09%09percent%2C%20this.options.duration%20%2A%20percent%2C%200%2C%201%2C%20this.options.duration%0A%09%09%09%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09this.pos%20%3D%20eased%20%3D%20percent%3B%0A%09%09%7D%0A%09%09this.now%20%3D%20%28%20this.end%20-%20this.start%20%29%20%2A%20eased%20%2B%20this.start%3B%0A%0A%09%09if%20%28%20this.options.step%20%29%20%7B%0A%09%09%09this.options.step.call%28%20this.elem%2C%20this.now%2C%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20hooks.set%20%29%20%7B%0A%09%09%09hooks.set%28%20this%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09Tween.propHooks._default.set%28%20this%20%29%3B%0A%09%09%7D%0A%09%09return%20this%3B%0A%09%7D%0A%7D%3B%0A%0ATween.prototype.init.prototype%20%3D%20Tween.prototype%3B%0A%0ATween.propHooks%20%3D%20%7B%0A%09_default%3A%20%7B%0A%09%09get%3A%20function%28%20tween%20%29%20%7B%0A%09%09%09var%20result%3B%0A%0A%09%09%09//%20Use%20a%20property%20on%20the%20element%20directly%20when%20it%20is%20not%20a%20DOM%20element%2C%0A%09%09%09//%20or%20when%20there%20is%20no%20matching%20style%20property%20that%20exists.%0A%09%09%09if%20%28%20tween.elem.nodeType%20%21%3D%3D%201%20%7C%7C%0A%09%09%09%09tween.elem%5B%20tween.prop%20%5D%20%21%3D%20null%20%26%26%20tween.elem.style%5B%20tween.prop%20%5D%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09return%20tween.elem%5B%20tween.prop%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Passing%20an%20empty%20string%20as%20a%203rd%20parameter%20to%20.css%20will%20automatically%0A%09%09%09//%20attempt%20a%20parseFloat%20and%20fallback%20to%20a%20string%20if%20the%20parse%20fails.%0A%09%09%09//%20Simple%20values%20such%20as%20%2210px%22%20are%20parsed%20to%20Float%3B%0A%09%09%09//%20complex%20values%20such%20as%20%22rotate%281rad%29%22%20are%20returned%20as-is.%0A%09%09%09result%20%3D%20jQuery.css%28%20tween.elem%2C%20tween.prop%2C%20%22%22%20%29%3B%0A%0A%09%09%09//%20Empty%20strings%2C%20null%2C%20undefined%20and%20%22auto%22%20are%20converted%20to%200.%0A%09%09%09return%20%21result%20%7C%7C%20result%20%3D%3D%3D%20%22auto%22%20%3F%200%20%3A%20result%3B%0A%09%09%7D%2C%0A%09%09set%3A%20function%28%20tween%20%29%20%7B%0A%0A%09%09%09//%20Use%20step%20hook%20for%20back%20compat.%0A%09%09%09//%20Use%20cssHook%20if%20its%20there.%0A%09%09%09//%20Use%20.style%20if%20available%20and%20use%20plain%20properties%20where%20available.%0A%09%09%09if%20%28%20jQuery.fx.step%5B%20tween.prop%20%5D%20%29%20%7B%0A%09%09%09%09jQuery.fx.step%5B%20tween.prop%20%5D%28%20tween%20%29%3B%0A%09%09%09%7D%20else%20if%20%28%20tween.elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%0A%09%09%09%09%09jQuery.cssHooks%5B%20tween.prop%20%5D%20%7C%7C%0A%09%09%09%09%09tween.elem.style%5B%20finalPropName%28%20tween.prop%20%29%20%5D%20%21%3D%20null%20%29%20%29%20%7B%0A%09%09%09%09jQuery.style%28%20tween.elem%2C%20tween.prop%2C%20tween.now%20%2B%20tween.unit%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09tween.elem%5B%20tween.prop%20%5D%20%3D%20tween.now%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0A//%20Panic%20based%20approach%20to%20setting%20things%20on%20disconnected%20nodes%0ATween.propHooks.scrollTop%20%3D%20Tween.propHooks.scrollLeft%20%3D%20%7B%0A%09set%3A%20function%28%20tween%20%29%20%7B%0A%09%09if%20%28%20tween.elem.nodeType%20%26%26%20tween.elem.parentNode%20%29%20%7B%0A%09%09%09tween.elem%5B%20tween.prop%20%5D%20%3D%20tween.now%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AjQuery.easing%20%3D%20%7B%0A%09linear%3A%20function%28%20p%20%29%20%7B%0A%09%09return%20p%3B%0A%09%7D%2C%0A%09swing%3A%20function%28%20p%20%29%20%7B%0A%09%09return%200.5%20-%20Math.cos%28%20p%20%2A%20Math.PI%20%29%20/%202%3B%0A%09%7D%2C%0A%09_default%3A%20%22swing%22%0A%7D%3B%0A%0AjQuery.fx%20%3D%20Tween.prototype.init%3B%0A%0A//%20Back%20compat%20%3C1.8%20extension%20point%0AjQuery.fx.step%20%3D%20%7B%7D%3B%0A%0A%0A%0A%0Avar%0A%09fxNow%2C%20inProgress%2C%0A%09rfxtypes%20%3D%20/%5E%28%3F%3Atoggle%7Cshow%7Chide%29%24/%2C%0A%09rrun%20%3D%20/queueHooks%24/%3B%0A%0Afunction%20schedule%28%29%20%7B%0A%09if%20%28%20inProgress%20%29%20%7B%0A%09%09if%20%28%20document.hidden%20%3D%3D%3D%20false%20%26%26%20window.requestAnimationFrame%20%29%20%7B%0A%09%09%09window.requestAnimationFrame%28%20schedule%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09window.setTimeout%28%20schedule%2C%20jQuery.fx.interval%20%29%3B%0A%09%09%7D%0A%0A%09%09jQuery.fx.tick%28%29%3B%0A%09%7D%0A%7D%0A%0A//%20Animations%20created%20synchronously%20will%20run%20synchronously%0Afunction%20createFxNow%28%29%20%7B%0A%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09fxNow%20%3D%20undefined%3B%0A%09%7D%20%29%3B%0A%09return%20%28%20fxNow%20%3D%20Date.now%28%29%20%29%3B%0A%7D%0A%0A//%20Generate%20parameters%20to%20create%20a%20standard%20animation%0Afunction%20genFx%28%20type%2C%20includeWidth%20%29%20%7B%0A%09var%20which%2C%0A%09%09i%20%3D%200%2C%0A%09%09attrs%20%3D%20%7B%20height%3A%20type%20%7D%3B%0A%0A%09//%20If%20we%20include%20width%2C%20step%20value%20is%201%20to%20do%20all%20cssExpand%20values%2C%0A%09//%20otherwise%20step%20value%20is%202%20to%20skip%20over%20Left%20and%20Right%0A%09includeWidth%20%3D%20includeWidth%20%3F%201%20%3A%200%3B%0A%09for%20%28%20%3B%20i%20%3C%204%3B%20i%20%2B%3D%202%20-%20includeWidth%20%29%20%7B%0A%09%09which%20%3D%20cssExpand%5B%20i%20%5D%3B%0A%09%09attrs%5B%20%22margin%22%20%2B%20which%20%5D%20%3D%20attrs%5B%20%22padding%22%20%2B%20which%20%5D%20%3D%20type%3B%0A%09%7D%0A%0A%09if%20%28%20includeWidth%20%29%20%7B%0A%09%09attrs.opacity%20%3D%20attrs.width%20%3D%20type%3B%0A%09%7D%0A%0A%09return%20attrs%3B%0A%7D%0A%0Afunction%20createTween%28%20value%2C%20prop%2C%20animation%20%29%20%7B%0A%09var%20tween%2C%0A%09%09collection%20%3D%20%28%20Animation.tweeners%5B%20prop%20%5D%20%7C%7C%20%5B%5D%20%29.concat%28%20Animation.tweeners%5B%20%22%2A%22%20%5D%20%29%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20collection.length%3B%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20tween%20%3D%20collection%5B%20index%20%5D.call%28%20animation%2C%20prop%2C%20value%20%29%20%29%20%29%20%7B%0A%0A%09%09%09//%20We%27re%20done%20with%20this%20property%0A%09%09%09return%20tween%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20defaultPrefilter%28%20elem%2C%20props%2C%20opts%20%29%20%7B%0A%09var%20prop%2C%20value%2C%20toggle%2C%20hooks%2C%20oldfire%2C%20propTween%2C%20restoreDisplay%2C%20display%2C%0A%09%09isBox%20%3D%20%22width%22%20in%20props%20%7C%7C%20%22height%22%20in%20props%2C%0A%09%09anim%20%3D%20this%2C%0A%09%09orig%20%3D%20%7B%7D%2C%0A%09%09style%20%3D%20elem.style%2C%0A%09%09hidden%20%3D%20elem.nodeType%20%26%26%20isHiddenWithinTree%28%20elem%20%29%2C%0A%09%09dataShow%20%3D%20dataPriv.get%28%20elem%2C%20%22fxshow%22%20%29%3B%0A%0A%09//%20Queue-skipping%20animations%20hijack%20the%20fx%20hooks%0A%09if%20%28%20%21opts.queue%20%29%20%7B%0A%09%09hooks%20%3D%20jQuery._queueHooks%28%20elem%2C%20%22fx%22%20%29%3B%0A%09%09if%20%28%20hooks.unqueued%20%3D%3D%20null%20%29%20%7B%0A%09%09%09hooks.unqueued%20%3D%200%3B%0A%09%09%09oldfire%20%3D%20hooks.empty.fire%3B%0A%09%09%09hooks.empty.fire%20%3D%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20%21hooks.unqueued%20%29%20%7B%0A%09%09%09%09%09oldfire%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%09%09%7D%0A%09%09hooks.unqueued%2B%2B%3B%0A%0A%09%09anim.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Ensure%20the%20complete%20handler%20is%20called%20before%20this%20completes%0A%09%09%09anim.always%28%20function%28%29%20%7B%0A%09%09%09%09hooks.unqueued--%3B%0A%09%09%09%09if%20%28%20%21jQuery.queue%28%20elem%2C%20%22fx%22%20%29.length%20%29%20%7B%0A%09%09%09%09%09hooks.empty.fire%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Detect%20show/hide%20animations%0A%09for%20%28%20prop%20in%20props%20%29%20%7B%0A%09%09value%20%3D%20props%5B%20prop%20%5D%3B%0A%09%09if%20%28%20rfxtypes.test%28%20value%20%29%20%29%20%7B%0A%09%09%09delete%20props%5B%20prop%20%5D%3B%0A%09%09%09toggle%20%3D%20toggle%20%7C%7C%20value%20%3D%3D%3D%20%22toggle%22%3B%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20%28%20hidden%20%3F%20%22hide%22%20%3A%20%22show%22%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Pretend%20to%20be%20hidden%20if%20this%20is%20a%20%22show%22%20and%0A%09%09%09%09//%20there%20is%20still%20data%20from%20a%20stopped%20show/hide%0A%09%09%09%09if%20%28%20value%20%3D%3D%3D%20%22show%22%20%26%26%20dataShow%20%26%26%20dataShow%5B%20prop%20%5D%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09hidden%20%3D%20true%3B%0A%0A%09%09%09%09//%20Ignore%20all%20other%20no-op%20show/hide%20data%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09continue%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09orig%5B%20prop%20%5D%20%3D%20dataShow%20%26%26%20dataShow%5B%20prop%20%5D%20%7C%7C%20jQuery.style%28%20elem%2C%20prop%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Bail%20out%20if%20this%20is%20a%20no-op%20like%20.hide%28%29.hide%28%29%0A%09propTween%20%3D%20%21jQuery.isEmptyObject%28%20props%20%29%3B%0A%09if%20%28%20%21propTween%20%26%26%20jQuery.isEmptyObject%28%20orig%20%29%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Restrict%20%22overflow%22%20and%20%22display%22%20styles%20during%20box%20animations%0A%09if%20%28%20isBox%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2C%20Edge%2012%20-%2015%0A%09%09//%20Record%20all%203%20overflow%20attributes%20because%20IE%20does%20not%20infer%20the%20shorthand%0A%09%09//%20from%20identically-valued%20overflowX%20and%20overflowY%20and%20Edge%20just%20mirrors%0A%09%09//%20the%20overflowX%20value%20there.%0A%09%09opts.overflow%20%3D%20%5B%20style.overflow%2C%20style.overflowX%2C%20style.overflowY%20%5D%3B%0A%0A%09%09//%20Identify%20a%20display%20type%2C%20preferring%20old%20show/hide%20data%20over%20the%20CSS%20cascade%0A%09%09restoreDisplay%20%3D%20dataShow%20%26%26%20dataShow.display%3B%0A%09%09if%20%28%20restoreDisplay%20%3D%3D%20null%20%29%20%7B%0A%09%09%09restoreDisplay%20%3D%20dataPriv.get%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09%7D%0A%09%09display%20%3D%20jQuery.css%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09if%20%28%20restoreDisplay%20%29%20%7B%0A%09%09%09%09display%20%3D%20restoreDisplay%3B%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Get%20nonempty%20value%28s%29%20by%20temporarily%20forcing%20visibility%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%2C%20true%20%29%3B%0A%09%09%09%09restoreDisplay%20%3D%20elem.style.display%20%7C%7C%20restoreDisplay%3B%0A%09%09%09%09display%20%3D%20jQuery.css%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Animate%20inline%20elements%20as%20inline-block%0A%09%09if%20%28%20display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline-block%22%20%26%26%20restoreDisplay%20%21%3D%20null%20%29%20%7B%0A%09%09%09if%20%28%20jQuery.css%28%20elem%2C%20%22float%22%20%29%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%0A%09%09%09%09//%20Restore%20the%20original%20display%20value%20at%20the%20end%20of%20pure%20show/hide%20animations%0A%09%09%09%09if%20%28%20%21propTween%20%29%20%7B%0A%09%09%09%09%09anim.done%28%20function%28%29%20%7B%0A%09%09%09%09%09%09style.display%20%3D%20restoreDisplay%3B%0A%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09if%20%28%20restoreDisplay%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09display%20%3D%20style.display%3B%0A%09%09%09%09%09%09restoreDisplay%20%3D%20display%20%3D%3D%3D%20%22none%22%20%3F%20%22%22%20%3A%20display%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09style.display%20%3D%20%22inline-block%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20opts.overflow%20%29%20%7B%0A%09%09style.overflow%20%3D%20%22hidden%22%3B%0A%09%09anim.always%28%20function%28%29%20%7B%0A%09%09%09style.overflow%20%3D%20opts.overflow%5B%200%20%5D%3B%0A%09%09%09style.overflowX%20%3D%20opts.overflow%5B%201%20%5D%3B%0A%09%09%09style.overflowY%20%3D%20opts.overflow%5B%202%20%5D%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Implement%20show/hide%20animations%0A%09propTween%20%3D%20false%3B%0A%09for%20%28%20prop%20in%20orig%20%29%20%7B%0A%0A%09%09//%20General%20show/hide%20setup%20for%20this%20element%20animation%0A%09%09if%20%28%20%21propTween%20%29%20%7B%0A%09%09%09if%20%28%20dataShow%20%29%20%7B%0A%09%09%09%09if%20%28%20%22hidden%22%20in%20dataShow%20%29%20%7B%0A%09%09%09%09%09hidden%20%3D%20dataShow.hidden%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09dataShow%20%3D%20dataPriv.access%28%20elem%2C%20%22fxshow%22%2C%20%7B%20display%3A%20restoreDisplay%20%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Store%20hidden/visible%20for%20toggle%20so%20%60.stop%28%29.toggle%28%29%60%20%22reverses%22%0A%09%09%09if%20%28%20toggle%20%29%20%7B%0A%09%09%09%09dataShow.hidden%20%3D%20%21hidden%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Show%20elements%20before%20animating%20them%0A%09%09%09if%20%28%20hidden%20%29%20%7B%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%2C%20true%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09/%2A%20eslint-disable%20no-loop-func%20%2A/%0A%0A%09%09%09anim.done%28%20function%28%29%20%7B%0A%0A%09%09%09/%2A%20eslint-enable%20no-loop-func%20%2A/%0A%0A%09%09%09%09//%20The%20final%20step%20of%20a%20%22hide%22%20animation%20is%20actually%20hiding%20the%20element%0A%09%09%09%09if%20%28%20%21hidden%20%29%20%7B%0A%09%09%09%09%09showHide%28%20%5B%20elem%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09dataPriv.remove%28%20elem%2C%20%22fxshow%22%20%29%3B%0A%09%09%09%09for%20%28%20prop%20in%20orig%20%29%20%7B%0A%09%09%09%09%09jQuery.style%28%20elem%2C%20prop%2C%20orig%5B%20prop%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Per-property%20setup%0A%09%09propTween%20%3D%20createTween%28%20hidden%20%3F%20dataShow%5B%20prop%20%5D%20%3A%200%2C%20prop%2C%20anim%20%29%3B%0A%09%09if%20%28%20%21%28%20prop%20in%20dataShow%20%29%20%29%20%7B%0A%09%09%09dataShow%5B%20prop%20%5D%20%3D%20propTween.start%3B%0A%09%09%09if%20%28%20hidden%20%29%20%7B%0A%09%09%09%09propTween.end%20%3D%20propTween.start%3B%0A%09%09%09%09propTween.start%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20propFilter%28%20props%2C%20specialEasing%20%29%20%7B%0A%09var%20index%2C%20name%2C%20easing%2C%20value%2C%20hooks%3B%0A%0A%09//%20camelCase%2C%20specialEasing%20and%20expand%20cssHook%20pass%0A%09for%20%28%20index%20in%20props%20%29%20%7B%0A%09%09name%20%3D%20camelCase%28%20index%20%29%3B%0A%09%09easing%20%3D%20specialEasing%5B%20name%20%5D%3B%0A%09%09value%20%3D%20props%5B%20index%20%5D%3B%0A%09%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09%09easing%20%3D%20value%5B%201%20%5D%3B%0A%09%09%09value%20%3D%20props%5B%20index%20%5D%20%3D%20value%5B%200%20%5D%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20index%20%21%3D%3D%20name%20%29%20%7B%0A%09%09%09props%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09delete%20props%5B%20index%20%5D%3B%0A%09%09%7D%0A%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%3B%0A%09%09if%20%28%20hooks%20%26%26%20%22expand%22%20in%20hooks%20%29%20%7B%0A%09%09%09value%20%3D%20hooks.expand%28%20value%20%29%3B%0A%09%09%09delete%20props%5B%20name%20%5D%3B%0A%0A%09%09%09//%20Not%20quite%20%24.extend%2C%20this%20won%27t%20overwrite%20existing%20keys.%0A%09%09%09//%20Reusing%20%27index%27%20because%20we%20have%20the%20correct%20%22name%22%0A%09%09%09for%20%28%20index%20in%20value%20%29%20%7B%0A%09%09%09%09if%20%28%20%21%28%20index%20in%20props%20%29%20%29%20%7B%0A%09%09%09%09%09props%5B%20index%20%5D%20%3D%20value%5B%20index%20%5D%3B%0A%09%09%09%09%09specialEasing%5B%20index%20%5D%20%3D%20easing%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09specialEasing%5B%20name%20%5D%20%3D%20easing%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20Animation%28%20elem%2C%20properties%2C%20options%20%29%20%7B%0A%09var%20result%2C%0A%09%09stopped%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20Animation.prefilters.length%2C%0A%09%09deferred%20%3D%20jQuery.Deferred%28%29.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Don%27t%20match%20elem%20in%20the%20%3Aanimated%20selector%0A%09%09%09delete%20tick.elem%3B%0A%09%09%7D%20%29%2C%0A%09%09tick%20%3D%20function%28%29%20%7B%0A%09%09%09if%20%28%20stopped%20%29%20%7B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%0A%09%09%09var%20currentTime%20%3D%20fxNow%20%7C%7C%20createFxNow%28%29%2C%0A%09%09%09%09remaining%20%3D%20Math.max%28%200%2C%20animation.startTime%20%2B%20animation.duration%20-%20currentTime%20%29%2C%0A%0A%09%09%09%09//%20Support%3A%20Android%202.3%20only%0A%09%09%09%09//%20Archaic%20crash%20bug%20won%27t%20allow%20us%20to%20use%20%601%20-%20%28%200.5%20%7C%7C%200%20%29%60%20%28%2312497%29%0A%09%09%09%09temp%20%3D%20remaining%20/%20animation.duration%20%7C%7C%200%2C%0A%09%09%09%09percent%20%3D%201%20-%20temp%2C%0A%09%09%09%09index%20%3D%200%2C%0A%09%09%09%09length%20%3D%20animation.tweens.length%3B%0A%0A%09%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09animation.tweens%5B%20index%20%5D.run%28%20percent%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%20percent%2C%20remaining%20%5D%20%29%3B%0A%0A%09%09%09//%20If%20there%27s%20more%20to%20do%2C%20yield%0A%09%09%09if%20%28%20percent%20%3C%201%20%26%26%20length%20%29%20%7B%0A%09%09%09%09return%20remaining%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20this%20was%20an%20empty%20animation%2C%20synthesize%20a%20final%20progress%20notification%0A%09%09%09if%20%28%20%21length%20%29%20%7B%0A%09%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%201%2C%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Resolve%20the%20animation%20and%20report%20its%20conclusion%0A%09%09%09deferred.resolveWith%28%20elem%2C%20%5B%20animation%20%5D%20%29%3B%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09animation%20%3D%20deferred.promise%28%20%7B%0A%09%09%09elem%3A%20elem%2C%0A%09%09%09props%3A%20jQuery.extend%28%20%7B%7D%2C%20properties%20%29%2C%0A%09%09%09opts%3A%20jQuery.extend%28%20true%2C%20%7B%0A%09%09%09%09specialEasing%3A%20%7B%7D%2C%0A%09%09%09%09easing%3A%20jQuery.easing._default%0A%09%09%09%7D%2C%20options%20%29%2C%0A%09%09%09originalProperties%3A%20properties%2C%0A%09%09%09originalOptions%3A%20options%2C%0A%09%09%09startTime%3A%20fxNow%20%7C%7C%20createFxNow%28%29%2C%0A%09%09%09duration%3A%20options.duration%2C%0A%09%09%09tweens%3A%20%5B%5D%2C%0A%09%09%09createTween%3A%20function%28%20prop%2C%20end%20%29%20%7B%0A%09%09%09%09var%20tween%20%3D%20jQuery.Tween%28%20elem%2C%20animation.opts%2C%20prop%2C%20end%2C%0A%09%09%09%09%09%09animation.opts.specialEasing%5B%20prop%20%5D%20%7C%7C%20animation.opts.easing%20%29%3B%0A%09%09%09%09animation.tweens.push%28%20tween%20%29%3B%0A%09%09%09%09return%20tween%3B%0A%09%09%09%7D%2C%0A%09%09%09stop%3A%20function%28%20gotoEnd%20%29%20%7B%0A%09%09%09%09var%20index%20%3D%200%2C%0A%0A%09%09%09%09%09//%20If%20we%20are%20going%20to%20the%20end%2C%20we%20want%20to%20run%20all%20the%20tweens%0A%09%09%09%09%09//%20otherwise%20we%20skip%20this%20part%0A%09%09%09%09%09length%20%3D%20gotoEnd%20%3F%20animation.tweens.length%20%3A%200%3B%0A%09%09%09%09if%20%28%20stopped%20%29%20%7B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%09%09%09%09stopped%20%3D%20true%3B%0A%09%09%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09%09animation.tweens%5B%20index%20%5D.run%28%201%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Resolve%20when%20we%20played%20the%20last%20frame%3B%20otherwise%2C%20reject%0A%09%09%09%09if%20%28%20gotoEnd%20%29%20%7B%0A%09%09%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%201%2C%200%20%5D%20%29%3B%0A%09%09%09%09%09deferred.resolveWith%28%20elem%2C%20%5B%20animation%2C%20gotoEnd%20%5D%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09deferred.rejectWith%28%20elem%2C%20%5B%20animation%2C%20gotoEnd%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%2C%0A%09%09props%20%3D%20animation.props%3B%0A%0A%09propFilter%28%20props%2C%20animation.opts.specialEasing%20%29%3B%0A%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09result%20%3D%20Animation.prefilters%5B%20index%20%5D.call%28%20animation%2C%20elem%2C%20props%2C%20animation.opts%20%29%3B%0A%09%09if%20%28%20result%20%29%20%7B%0A%09%09%09if%20%28%20isFunction%28%20result.stop%20%29%20%29%20%7B%0A%09%09%09%09jQuery._queueHooks%28%20animation.elem%2C%20animation.opts.queue%20%29.stop%20%3D%0A%09%09%09%09%09result.stop.bind%28%20result%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20result%3B%0A%09%09%7D%0A%09%7D%0A%0A%09jQuery.map%28%20props%2C%20createTween%2C%20animation%20%29%3B%0A%0A%09if%20%28%20isFunction%28%20animation.opts.start%20%29%20%29%20%7B%0A%09%09animation.opts.start.call%28%20elem%2C%20animation%20%29%3B%0A%09%7D%0A%0A%09//%20Attach%20callbacks%20from%20options%0A%09animation%0A%09%09.progress%28%20animation.opts.progress%20%29%0A%09%09.done%28%20animation.opts.done%2C%20animation.opts.complete%20%29%0A%09%09.fail%28%20animation.opts.fail%20%29%0A%09%09.always%28%20animation.opts.always%20%29%3B%0A%0A%09jQuery.fx.timer%28%0A%09%09jQuery.extend%28%20tick%2C%20%7B%0A%09%09%09elem%3A%20elem%2C%0A%09%09%09anim%3A%20animation%2C%0A%09%09%09queue%3A%20animation.opts.queue%0A%09%09%7D%20%29%0A%09%29%3B%0A%0A%09return%20animation%3B%0A%7D%0A%0AjQuery.Animation%20%3D%20jQuery.extend%28%20Animation%2C%20%7B%0A%0A%09tweeners%3A%20%7B%0A%09%09%22%2A%22%3A%20%5B%20function%28%20prop%2C%20value%20%29%20%7B%0A%09%09%09var%20tween%20%3D%20this.createTween%28%20prop%2C%20value%20%29%3B%0A%09%09%09adjustCSS%28%20tween.elem%2C%20prop%2C%20rcssNum.exec%28%20value%20%29%2C%20tween%20%29%3B%0A%09%09%09return%20tween%3B%0A%09%09%7D%20%5D%0A%09%7D%2C%0A%0A%09tweener%3A%20function%28%20props%2C%20callback%20%29%20%7B%0A%09%09if%20%28%20isFunction%28%20props%20%29%20%29%20%7B%0A%09%09%09callback%20%3D%20props%3B%0A%09%09%09props%20%3D%20%5B%20%22%2A%22%20%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09props%20%3D%20props.match%28%20rnothtmlwhite%20%29%3B%0A%09%09%7D%0A%0A%09%09var%20prop%2C%0A%09%09%09index%20%3D%200%2C%0A%09%09%09length%20%3D%20props.length%3B%0A%0A%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09prop%20%3D%20props%5B%20index%20%5D%3B%0A%09%09%09Animation.tweeners%5B%20prop%20%5D%20%3D%20Animation.tweeners%5B%20prop%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09Animation.tweeners%5B%20prop%20%5D.unshift%28%20callback%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09prefilters%3A%20%5B%20defaultPrefilter%20%5D%2C%0A%0A%09prefilter%3A%20function%28%20callback%2C%20prepend%20%29%20%7B%0A%09%09if%20%28%20prepend%20%29%20%7B%0A%09%09%09Animation.prefilters.unshift%28%20callback%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09Animation.prefilters.push%28%20callback%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.speed%20%3D%20function%28%20speed%2C%20easing%2C%20fn%20%29%20%7B%0A%09var%20opt%20%3D%20speed%20%26%26%20typeof%20speed%20%3D%3D%3D%20%22object%22%20%3F%20jQuery.extend%28%20%7B%7D%2C%20speed%20%29%20%3A%20%7B%0A%09%09complete%3A%20fn%20%7C%7C%20%21fn%20%26%26%20easing%20%7C%7C%0A%09%09%09isFunction%28%20speed%20%29%20%26%26%20speed%2C%0A%09%09duration%3A%20speed%2C%0A%09%09easing%3A%20fn%20%26%26%20easing%20%7C%7C%20easing%20%26%26%20%21isFunction%28%20easing%20%29%20%26%26%20easing%0A%09%7D%3B%0A%0A%09//%20Go%20to%20the%20end%20state%20if%20fx%20are%20off%0A%09if%20%28%20jQuery.fx.off%20%29%20%7B%0A%09%09opt.duration%20%3D%200%3B%0A%0A%09%7D%20else%20%7B%0A%09%09if%20%28%20typeof%20opt.duration%20%21%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09if%20%28%20opt.duration%20in%20jQuery.fx.speeds%20%29%20%7B%0A%09%09%09%09opt.duration%20%3D%20jQuery.fx.speeds%5B%20opt.duration%20%5D%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09opt.duration%20%3D%20jQuery.fx.speeds._default%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Normalize%20opt.queue%20-%20true/undefined/null%20-%3E%20%22fx%22%0A%09if%20%28%20opt.queue%20%3D%3D%20null%20%7C%7C%20opt.queue%20%3D%3D%3D%20true%20%29%20%7B%0A%09%09opt.queue%20%3D%20%22fx%22%3B%0A%09%7D%0A%0A%09//%20Queueing%0A%09opt.old%20%3D%20opt.complete%3B%0A%0A%09opt.complete%20%3D%20function%28%29%20%7B%0A%09%09if%20%28%20isFunction%28%20opt.old%20%29%20%29%20%7B%0A%09%09%09opt.old.call%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20opt.queue%20%29%20%7B%0A%09%09%09jQuery.dequeue%28%20this%2C%20opt.queue%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09return%20opt%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09fadeTo%3A%20function%28%20speed%2C%20to%2C%20easing%2C%20callback%20%29%20%7B%0A%0A%09%09//%20Show%20any%20hidden%20elements%20after%20setting%20opacity%20to%200%0A%09%09return%20this.filter%28%20isHiddenWithinTree%20%29.css%28%20%22opacity%22%2C%200%20%29.show%28%29%0A%0A%09%09%09//%20Animate%20to%20the%20value%20specified%0A%09%09%09.end%28%29.animate%28%20%7B%20opacity%3A%20to%20%7D%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%2C%0A%09animate%3A%20function%28%20prop%2C%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09var%20empty%20%3D%20jQuery.isEmptyObject%28%20prop%20%29%2C%0A%09%09%09optall%20%3D%20jQuery.speed%28%20speed%2C%20easing%2C%20callback%20%29%2C%0A%09%09%09doAnimation%20%3D%20function%28%29%20%7B%0A%0A%09%09%09%09//%20Operate%20on%20a%20copy%20of%20prop%20so%20per-property%20easing%20won%27t%20be%20lost%0A%09%09%09%09var%20anim%20%3D%20Animation%28%20this%2C%20jQuery.extend%28%20%7B%7D%2C%20prop%20%29%2C%20optall%20%29%3B%0A%0A%09%09%09%09//%20Empty%20animations%2C%20or%20finishing%20resolves%20immediately%0A%09%09%09%09if%20%28%20empty%20%7C%7C%20dataPriv.get%28%20this%2C%20%22finish%22%20%29%20%29%20%7B%0A%09%09%09%09%09anim.stop%28%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%09%09%09doAnimation.finish%20%3D%20doAnimation%3B%0A%0A%09%09return%20empty%20%7C%7C%20optall.queue%20%3D%3D%3D%20false%20%3F%0A%09%09%09this.each%28%20doAnimation%20%29%20%3A%0A%09%09%09this.queue%28%20optall.queue%2C%20doAnimation%20%29%3B%0A%09%7D%2C%0A%09stop%3A%20function%28%20type%2C%20clearQueue%2C%20gotoEnd%20%29%20%7B%0A%09%09var%20stopQueue%20%3D%20function%28%20hooks%20%29%20%7B%0A%09%09%09var%20stop%20%3D%20hooks.stop%3B%0A%09%09%09delete%20hooks.stop%3B%0A%09%09%09stop%28%20gotoEnd%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09gotoEnd%20%3D%20clearQueue%3B%0A%09%09%09clearQueue%20%3D%20type%3B%0A%09%09%09type%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09if%20%28%20clearQueue%20%29%20%7B%0A%09%09%09this.queue%28%20type%20%7C%7C%20%22fx%22%2C%20%5B%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20dequeue%20%3D%20true%2C%0A%09%09%09%09index%20%3D%20type%20%21%3D%20null%20%26%26%20type%20%2B%20%22queueHooks%22%2C%0A%09%09%09%09timers%20%3D%20jQuery.timers%2C%0A%09%09%09%09data%20%3D%20dataPriv.get%28%20this%20%29%3B%0A%0A%09%09%09if%20%28%20index%20%29%20%7B%0A%09%09%09%09if%20%28%20data%5B%20index%20%5D%20%26%26%20data%5B%20index%20%5D.stop%20%29%20%7B%0A%09%09%09%09%09stopQueue%28%20data%5B%20index%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09for%20%28%20index%20in%20data%20%29%20%7B%0A%09%09%09%09%09if%20%28%20data%5B%20index%20%5D%20%26%26%20data%5B%20index%20%5D.stop%20%26%26%20rrun.test%28%20index%20%29%20%29%20%7B%0A%09%09%09%09%09%09stopQueue%28%20data%5B%20index%20%5D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09for%20%28%20index%20%3D%20timers.length%3B%20index--%3B%20%29%20%7B%0A%09%09%09%09if%20%28%20timers%5B%20index%20%5D.elem%20%3D%3D%3D%20this%20%26%26%0A%09%09%09%09%09%28%20type%20%3D%3D%20null%20%7C%7C%20timers%5B%20index%20%5D.queue%20%3D%3D%3D%20type%20%29%20%29%20%7B%0A%0A%09%09%09%09%09timers%5B%20index%20%5D.anim.stop%28%20gotoEnd%20%29%3B%0A%09%09%09%09%09dequeue%20%3D%20false%3B%0A%09%09%09%09%09timers.splice%28%20index%2C%201%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Start%20the%20next%20in%20the%20queue%20if%20the%20last%20step%20wasn%27t%20forced.%0A%09%09%09//%20Timers%20currently%20will%20call%20their%20complete%20callbacks%2C%20which%0A%09%09%09//%20will%20dequeue%20but%20only%20if%20they%20were%20gotoEnd.%0A%09%09%09if%20%28%20dequeue%20%7C%7C%20%21gotoEnd%20%29%20%7B%0A%09%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09finish%3A%20function%28%20type%20%29%20%7B%0A%09%09if%20%28%20type%20%21%3D%3D%20false%20%29%20%7B%0A%09%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%09%09%7D%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20index%2C%0A%09%09%09%09data%20%3D%20dataPriv.get%28%20this%20%29%2C%0A%09%09%09%09queue%20%3D%20data%5B%20type%20%2B%20%22queue%22%20%5D%2C%0A%09%09%09%09hooks%20%3D%20data%5B%20type%20%2B%20%22queueHooks%22%20%5D%2C%0A%09%09%09%09timers%20%3D%20jQuery.timers%2C%0A%09%09%09%09length%20%3D%20queue%20%3F%20queue.length%20%3A%200%3B%0A%0A%09%09%09//%20Enable%20finishing%20flag%20on%20private%20data%0A%09%09%09data.finish%20%3D%20true%3B%0A%0A%09%09%09//%20Empty%20the%20queue%20first%0A%09%09%09jQuery.queue%28%20this%2C%20type%2C%20%5B%5D%20%29%3B%0A%0A%09%09%09if%20%28%20hooks%20%26%26%20hooks.stop%20%29%20%7B%0A%09%09%09%09hooks.stop.call%28%20this%2C%20true%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Look%20for%20any%20active%20animations%2C%20and%20finish%20them%0A%09%09%09for%20%28%20index%20%3D%20timers.length%3B%20index--%3B%20%29%20%7B%0A%09%09%09%09if%20%28%20timers%5B%20index%20%5D.elem%20%3D%3D%3D%20this%20%26%26%20timers%5B%20index%20%5D.queue%20%3D%3D%3D%20type%20%29%20%7B%0A%09%09%09%09%09timers%5B%20index%20%5D.anim.stop%28%20true%20%29%3B%0A%09%09%09%09%09timers.splice%28%20index%2C%201%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Look%20for%20any%20animations%20in%20the%20old%20queue%20and%20finish%20them%0A%09%09%09for%20%28%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20queue%5B%20index%20%5D%20%26%26%20queue%5B%20index%20%5D.finish%20%29%20%7B%0A%09%09%09%09%09queue%5B%20index%20%5D.finish.call%28%20this%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Turn%20off%20finishing%20flag%0A%09%09%09delete%20data.finish%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22toggle%22%2C%20%22show%22%2C%20%22hide%22%20%5D%2C%20function%28%20_i%2C%20name%20%29%20%7B%0A%09var%20cssFn%20%3D%20jQuery.fn%5B%20name%20%5D%3B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09return%20speed%20%3D%3D%20null%20%7C%7C%20typeof%20speed%20%3D%3D%3D%20%22boolean%22%20%3F%0A%09%09%09cssFn.apply%28%20this%2C%20arguments%20%29%20%3A%0A%09%09%09this.animate%28%20genFx%28%20name%2C%20true%20%29%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Generate%20shortcuts%20for%20custom%20animations%0AjQuery.each%28%20%7B%0A%09slideDown%3A%20genFx%28%20%22show%22%20%29%2C%0A%09slideUp%3A%20genFx%28%20%22hide%22%20%29%2C%0A%09slideToggle%3A%20genFx%28%20%22toggle%22%20%29%2C%0A%09fadeIn%3A%20%7B%20opacity%3A%20%22show%22%20%7D%2C%0A%09fadeOut%3A%20%7B%20opacity%3A%20%22hide%22%20%7D%2C%0A%09fadeToggle%3A%20%7B%20opacity%3A%20%22toggle%22%20%7D%0A%7D%2C%20function%28%20name%2C%20props%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09return%20this.animate%28%20props%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.timers%20%3D%20%5B%5D%3B%0AjQuery.fx.tick%20%3D%20function%28%29%20%7B%0A%09var%20timer%2C%0A%09%09i%20%3D%200%2C%0A%09%09timers%20%3D%20jQuery.timers%3B%0A%0A%09fxNow%20%3D%20Date.now%28%29%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20timers.length%3B%20i%2B%2B%20%29%20%7B%0A%09%09timer%20%3D%20timers%5B%20i%20%5D%3B%0A%0A%09%09//%20Run%20the%20timer%20and%20safely%20remove%20it%20when%20done%20%28allowing%20for%20external%20removal%29%0A%09%09if%20%28%20%21timer%28%29%20%26%26%20timers%5B%20i%20%5D%20%3D%3D%3D%20timer%20%29%20%7B%0A%09%09%09timers.splice%28%20i--%2C%201%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20%21timers.length%20%29%20%7B%0A%09%09jQuery.fx.stop%28%29%3B%0A%09%7D%0A%09fxNow%20%3D%20undefined%3B%0A%7D%3B%0A%0AjQuery.fx.timer%20%3D%20function%28%20timer%20%29%20%7B%0A%09jQuery.timers.push%28%20timer%20%29%3B%0A%09jQuery.fx.start%28%29%3B%0A%7D%3B%0A%0AjQuery.fx.interval%20%3D%2013%3B%0AjQuery.fx.start%20%3D%20function%28%29%20%7B%0A%09if%20%28%20inProgress%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09inProgress%20%3D%20true%3B%0A%09schedule%28%29%3B%0A%7D%3B%0A%0AjQuery.fx.stop%20%3D%20function%28%29%20%7B%0A%09inProgress%20%3D%20null%3B%0A%7D%3B%0A%0AjQuery.fx.speeds%20%3D%20%7B%0A%09slow%3A%20600%2C%0A%09fast%3A%20200%2C%0A%0A%09//%20Default%20speed%0A%09_default%3A%20400%0A%7D%3B%0A%0A%0A//%20Based%20off%20of%20the%20plugin%20by%20Clint%20Helfers%2C%20with%20permission.%0A//%20https%3A//web.archive.org/web/20100324014747/http%3A//blindsignals.com/index.php/2009/07/jquery-delay/%0AjQuery.fn.delay%20%3D%20function%28%20time%2C%20type%20%29%20%7B%0A%09time%20%3D%20jQuery.fx%20%3F%20jQuery.fx.speeds%5B%20time%20%5D%20%7C%7C%20time%20%3A%20time%3B%0A%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09return%20this.queue%28%20type%2C%20function%28%20next%2C%20hooks%20%29%20%7B%0A%09%09var%20timeout%20%3D%20window.setTimeout%28%20next%2C%20time%20%29%3B%0A%09%09hooks.stop%20%3D%20function%28%29%20%7B%0A%09%09%09window.clearTimeout%28%20timeout%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0A%28%20function%28%29%20%7B%0A%09var%20input%20%3D%20document.createElement%28%20%22input%22%20%29%2C%0A%09%09select%20%3D%20document.createElement%28%20%22select%22%20%29%2C%0A%09%09opt%20%3D%20select.appendChild%28%20document.createElement%28%20%22option%22%20%29%20%29%3B%0A%0A%09input.type%20%3D%20%22checkbox%22%3B%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.3%20only%0A%09//%20Default%20value%20for%20a%20checkbox%20should%20be%20%22on%22%0A%09support.checkOn%20%3D%20input.value%20%21%3D%3D%20%22%22%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20Must%20access%20selectedIndex%20to%20make%20default%20options%20select%0A%09support.optSelected%20%3D%20opt.selected%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20An%20input%20loses%20its%20value%20after%20becoming%20a%20radio%0A%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09input.value%20%3D%20%22t%22%3B%0A%09input.type%20%3D%20%22radio%22%3B%0A%09support.radioValue%20%3D%20input.value%20%3D%3D%3D%20%22t%22%3B%0A%7D%20%29%28%29%3B%0A%0A%0Avar%20boolHook%2C%0A%09attrHandle%20%3D%20jQuery.expr.attrHandle%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09attr%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20jQuery.attr%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%2C%0A%0A%09removeAttr%3A%20function%28%20name%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.removeAttr%28%20this%2C%20name%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09attr%3A%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09var%20ret%2C%20hooks%2C%0A%09%09%09nType%20%3D%20elem.nodeType%3B%0A%0A%09%09//%20Don%27t%20get/set%20attributes%20on%20text%2C%20comment%20and%20attribute%20nodes%0A%09%09if%20%28%20nType%20%3D%3D%3D%203%20%7C%7C%20nType%20%3D%3D%3D%208%20%7C%7C%20nType%20%3D%3D%3D%202%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Fallback%20to%20prop%20when%20attributes%20are%20not%20supported%0A%09%09if%20%28%20typeof%20elem.getAttribute%20%3D%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09%09return%20jQuery.prop%28%20elem%2C%20name%2C%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Attribute%20hooks%20are%20determined%20by%20the%20lowercase%20version%0A%09%09//%20Grab%20necessary%20hook%20if%20one%20is%20defined%0A%09%09if%20%28%20nType%20%21%3D%3D%201%20%7C%7C%20%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%09%09%09hooks%20%3D%20jQuery.attrHooks%5B%20name.toLowerCase%28%29%20%5D%20%7C%7C%0A%09%09%09%09%28%20jQuery.expr.match.bool.test%28%20name%20%29%20%3F%20boolHook%20%3A%20undefined%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20null%20%29%20%7B%0A%09%09%09%09jQuery.removeAttr%28%20elem%2C%20name%20%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20hooks%20%26%26%20%22set%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.set%28%20elem%2C%20value%2C%20name%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09elem.setAttribute%28%20name%2C%20value%20%2B%20%22%22%20%29%3B%0A%09%09%09return%20value%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%20%28%20ret%20%3D%20hooks.get%28%20elem%2C%20name%20%29%20%29%20%21%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%0A%09%09ret%20%3D%20jQuery.find.attr%28%20elem%2C%20name%20%29%3B%0A%0A%09%09//%20Non-existent%20attributes%20return%20null%2C%20we%20normalize%20to%20undefined%0A%09%09return%20ret%20%3D%3D%20null%20%3F%20undefined%20%3A%20ret%3B%0A%09%7D%2C%0A%0A%09attrHooks%3A%20%7B%0A%09%09type%3A%20%7B%0A%09%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09%09if%20%28%20%21support.radioValue%20%26%26%20value%20%3D%3D%3D%20%22radio%22%20%26%26%0A%09%09%09%09%09nodeName%28%20elem%2C%20%22input%22%20%29%20%29%20%7B%0A%09%09%09%09%09var%20val%20%3D%20elem.value%3B%0A%09%09%09%09%09elem.setAttribute%28%20%22type%22%2C%20value%20%29%3B%0A%09%09%09%09%09if%20%28%20val%20%29%20%7B%0A%09%09%09%09%09%09elem.value%20%3D%20val%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20value%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09removeAttr%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09var%20name%2C%0A%09%09%09i%20%3D%200%2C%0A%0A%09%09%09//%20Attribute%20names%20can%20contain%20non-HTML%20whitespace%20characters%0A%09%09%09//%20https%3A//html.spec.whatwg.org/multipage/syntax.html%23attributes-2%0A%09%09%09attrNames%20%3D%20value%20%26%26%20value.match%28%20rnothtmlwhite%20%29%3B%0A%0A%09%09if%20%28%20attrNames%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09while%20%28%20%28%20name%20%3D%20attrNames%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09elem.removeAttribute%28%20name%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Hooks%20for%20boolean%20attributes%0AboolHook%20%3D%20%7B%0A%09set%3A%20function%28%20elem%2C%20value%2C%20name%20%29%20%7B%0A%09%09if%20%28%20value%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09//%20Remove%20boolean%20attributes%20when%20set%20to%20false%0A%09%09%09jQuery.removeAttr%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09elem.setAttribute%28%20name%2C%20name%20%29%3B%0A%09%09%7D%0A%09%09return%20name%3B%0A%09%7D%0A%7D%3B%0A%0AjQuery.each%28%20jQuery.expr.match.bool.source.match%28%20/%5Cw%2B/g%20%29%2C%20function%28%20_i%2C%20name%20%29%20%7B%0A%09var%20getter%20%3D%20attrHandle%5B%20name%20%5D%20%7C%7C%20jQuery.find.attr%3B%0A%0A%09attrHandle%5B%20name%20%5D%20%3D%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09var%20ret%2C%20handle%2C%0A%09%09%09lowercaseName%20%3D%20name.toLowerCase%28%29%3B%0A%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%0A%09%09%09//%20Avoid%20an%20infinite%20loop%20by%20temporarily%20removing%20this%20function%20from%20the%20getter%0A%09%09%09handle%20%3D%20attrHandle%5B%20lowercaseName%20%5D%3B%0A%09%09%09attrHandle%5B%20lowercaseName%20%5D%20%3D%20ret%3B%0A%09%09%09ret%20%3D%20getter%28%20elem%2C%20name%2C%20isXML%20%29%20%21%3D%20null%20%3F%0A%09%09%09%09lowercaseName%20%3A%0A%09%09%09%09null%3B%0A%09%09%09attrHandle%5B%20lowercaseName%20%5D%20%3D%20handle%3B%0A%09%09%7D%0A%09%09return%20ret%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20rfocusable%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Cbutton%29%24/i%2C%0A%09rclickable%20%3D%20/%5E%28%3F%3Aa%7Carea%29%24/i%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09prop%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20jQuery.prop%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%2C%0A%0A%09removeProp%3A%20function%28%20name%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09delete%20this%5B%20jQuery.propFix%5B%20name%20%5D%20%7C%7C%20name%20%5D%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09prop%3A%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09var%20ret%2C%20hooks%2C%0A%09%09%09nType%20%3D%20elem.nodeType%3B%0A%0A%09%09//%20Don%27t%20get/set%20properties%20on%20text%2C%20comment%20and%20attribute%20nodes%0A%09%09if%20%28%20nType%20%3D%3D%3D%203%20%7C%7C%20nType%20%3D%3D%3D%208%20%7C%7C%20nType%20%3D%3D%3D%202%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20nType%20%21%3D%3D%201%20%7C%7C%20%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09//%20Fix%20name%20and%20attach%20hooks%0A%09%09%09name%20%3D%20jQuery.propFix%5B%20name%20%5D%20%7C%7C%20name%3B%0A%09%09%09hooks%20%3D%20jQuery.propHooks%5B%20name%20%5D%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20hooks%20%26%26%20%22set%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.set%28%20elem%2C%20value%2C%20name%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20%28%20elem%5B%20name%20%5D%20%3D%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%20%28%20ret%20%3D%20hooks.get%28%20elem%2C%20name%20%29%20%29%20%21%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%0A%09%09return%20elem%5B%20name%20%5D%3B%0A%09%7D%2C%0A%0A%09propHooks%3A%20%7B%0A%09%09tabIndex%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09%09%09%09//%20elem.tabIndex%20doesn%27t%20always%20return%20the%0A%09%09%09%09//%20correct%20value%20when%20it%20hasn%27t%20been%20explicitly%20set%0A%09%09%09%09//%20https%3A//web.archive.org/web/20141116233347/http%3A//fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/%0A%09%09%09%09//%20Use%20proper%20attribute%20retrieval%28%2312072%29%0A%09%09%09%09var%20tabindex%20%3D%20jQuery.find.attr%28%20elem%2C%20%22tabindex%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20tabindex%20%29%20%7B%0A%09%09%09%09%09return%20parseInt%28%20tabindex%2C%2010%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09if%20%28%0A%09%09%09%09%09rfocusable.test%28%20elem.nodeName%20%29%20%7C%7C%0A%09%09%09%09%09rclickable.test%28%20elem.nodeName%20%29%20%26%26%0A%09%09%09%09%09elem.href%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09return%200%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09propFix%3A%20%7B%0A%09%09%22for%22%3A%20%22htmlFor%22%2C%0A%09%09%22class%22%3A%20%22className%22%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Support%3A%20IE%20%3C%3D11%20only%0A//%20Accessing%20the%20selectedIndex%20property%0A//%20forces%20the%20browser%20to%20respect%20setting%20selected%0A//%20on%20the%20option%0A//%20The%20getter%20ensures%20a%20default%20option%20is%20selected%0A//%20when%20in%20an%20optgroup%0A//%20eslint%20rule%20%22no-unused-expressions%22%20is%20disabled%20for%20this%20code%0A//%20since%20it%20considers%20such%20accessions%20noop%0Aif%20%28%20%21support.optSelected%20%29%20%7B%0A%09jQuery.propHooks.selected%20%3D%20%7B%0A%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09/%2A%20eslint%20no-unused-expressions%3A%20%22off%22%20%2A/%0A%0A%09%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09%09if%20%28%20parent%20%26%26%20parent.parentNode%20%29%20%7B%0A%09%09%09%09parent.parentNode.selectedIndex%3B%0A%09%09%09%7D%0A%09%09%09return%20null%3B%0A%09%09%7D%2C%0A%09%09set%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09/%2A%20eslint%20no-unused-expressions%3A%20%22off%22%20%2A/%0A%0A%09%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09%09if%20%28%20parent%20%29%20%7B%0A%09%09%09%09parent.selectedIndex%3B%0A%0A%09%09%09%09if%20%28%20parent.parentNode%20%29%20%7B%0A%09%09%09%09%09parent.parentNode.selectedIndex%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0AjQuery.each%28%20%5B%0A%09%22tabIndex%22%2C%0A%09%22readOnly%22%2C%0A%09%22maxLength%22%2C%0A%09%22cellSpacing%22%2C%0A%09%22cellPadding%22%2C%0A%09%22rowSpan%22%2C%0A%09%22colSpan%22%2C%0A%09%22useMap%22%2C%0A%09%22frameBorder%22%2C%0A%09%22contentEditable%22%0A%5D%2C%20function%28%29%20%7B%0A%09jQuery.propFix%5B%20this.toLowerCase%28%29%20%5D%20%3D%20this%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0A%09//%20Strip%20and%20collapse%20whitespace%20according%20to%20HTML%20spec%0A%09//%20https%3A//infra.spec.whatwg.org/%23strip-and-collapse-ascii-whitespace%0A%09function%20stripAndCollapse%28%20value%20%29%20%7B%0A%09%09var%20tokens%20%3D%20value.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09return%20tokens.join%28%20%22%20%22%20%29%3B%0A%09%7D%0A%0A%0Afunction%20getClass%28%20elem%20%29%20%7B%0A%09return%20elem.getAttribute%20%26%26%20elem.getAttribute%28%20%22class%22%20%29%20%7C%7C%20%22%22%3B%0A%7D%0A%0Afunction%20classesToArray%28%20value%20%29%20%7B%0A%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09return%20value%3B%0A%09%7D%0A%09if%20%28%20typeof%20value%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20value.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%09%7D%0A%09return%20%5B%5D%3B%0A%7D%0A%0AjQuery.fn.extend%28%20%7B%0A%09addClass%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20classes%2C%20elem%2C%20cur%2C%20curValue%2C%20clazz%2C%20j%2C%20finalValue%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20j%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.addClass%28%20value.call%28%20this%2C%20j%2C%20getClass%28%20this%20%29%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09classes%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20classes.length%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09curValue%20%3D%20getClass%28%20elem%20%29%3B%0A%09%09%09%09cur%20%3D%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%20%22%20%22%20%2B%20stripAndCollapse%28%20curValue%20%29%20%2B%20%22%20%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20cur%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20clazz%20%3D%20classes%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20cur.indexOf%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%20%29%20%3C%200%20%29%20%7B%0A%09%09%09%09%09%09%09cur%20%2B%3D%20clazz%20%2B%20%22%20%22%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Only%20assign%20if%20different%20to%20avoid%20unneeded%20rendering.%0A%09%09%09%09%09finalValue%20%3D%20stripAndCollapse%28%20cur%20%29%3B%0A%09%09%09%09%09if%20%28%20curValue%20%21%3D%3D%20finalValue%20%29%20%7B%0A%09%09%09%09%09%09elem.setAttribute%28%20%22class%22%2C%20finalValue%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09removeClass%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20classes%2C%20elem%2C%20cur%2C%20curValue%2C%20clazz%2C%20j%2C%20finalValue%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20j%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.removeClass%28%20value.call%28%20this%2C%20j%2C%20getClass%28%20this%20%29%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%21arguments.length%20%29%20%7B%0A%09%09%09return%20this.attr%28%20%22class%22%2C%20%22%22%20%29%3B%0A%09%09%7D%0A%0A%09%09classes%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20classes.length%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09curValue%20%3D%20getClass%28%20elem%20%29%3B%0A%0A%09%09%09%09//%20This%20expression%20is%20here%20for%20better%20compressibility%20%28see%20addClass%29%0A%09%09%09%09cur%20%3D%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%20%22%20%22%20%2B%20stripAndCollapse%28%20curValue%20%29%20%2B%20%22%20%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20cur%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20clazz%20%3D%20classes%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Remove%20%2Aall%2A%20instances%0A%09%09%09%09%09%09while%20%28%20cur.indexOf%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09%09%09cur%20%3D%20cur.replace%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%2C%20%22%20%22%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Only%20assign%20if%20different%20to%20avoid%20unneeded%20rendering.%0A%09%09%09%09%09finalValue%20%3D%20stripAndCollapse%28%20cur%20%29%3B%0A%09%09%09%09%09if%20%28%20curValue%20%21%3D%3D%20finalValue%20%29%20%7B%0A%09%09%09%09%09%09elem.setAttribute%28%20%22class%22%2C%20finalValue%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09toggleClass%3A%20function%28%20value%2C%20stateVal%20%29%20%7B%0A%09%09var%20type%20%3D%20typeof%20value%2C%0A%09%09%09isValidValue%20%3D%20type%20%3D%3D%3D%20%22string%22%20%7C%7C%20Array.isArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20typeof%20stateVal%20%3D%3D%3D%20%22boolean%22%20%26%26%20isValidValue%20%29%20%7B%0A%09%09%09return%20stateVal%20%3F%20this.addClass%28%20value%20%29%20%3A%20this.removeClass%28%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.toggleClass%28%0A%09%09%09%09%09value.call%28%20this%2C%20i%2C%20getClass%28%20this%20%29%2C%20stateVal%20%29%2C%0A%09%09%09%09%09stateVal%0A%09%09%09%09%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20className%2C%20i%2C%20self%2C%20classNames%3B%0A%0A%09%09%09if%20%28%20isValidValue%20%29%20%7B%0A%0A%09%09%09%09//%20Toggle%20individual%20class%20names%0A%09%09%09%09i%20%3D%200%3B%0A%09%09%09%09self%20%3D%20jQuery%28%20this%20%29%3B%0A%09%09%09%09classNames%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09%09%09while%20%28%20%28%20className%20%3D%20classNames%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Check%20each%20className%20given%2C%20space%20separated%20list%0A%09%09%09%09%09if%20%28%20self.hasClass%28%20className%20%29%20%29%20%7B%0A%09%09%09%09%09%09self.removeClass%28%20className%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09self.addClass%28%20className%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09//%20Toggle%20whole%20class%20name%0A%09%09%09%7D%20else%20if%20%28%20value%20%3D%3D%3D%20undefined%20%7C%7C%20type%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09%09%09className%20%3D%20getClass%28%20this%20%29%3B%0A%09%09%09%09if%20%28%20className%20%29%20%7B%0A%0A%09%09%09%09%09//%20Store%20className%20if%20set%0A%09%09%09%09%09dataPriv.set%28%20this%2C%20%22__className__%22%2C%20className%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20If%20the%20element%20has%20a%20class%20name%20or%20if%20we%27re%20passed%20%60false%60%2C%0A%09%09%09%09//%20then%20remove%20the%20whole%20classname%20%28if%20there%20was%20one%2C%20the%20above%20saved%20it%29.%0A%09%09%09%09//%20Otherwise%20bring%20back%20whatever%20was%20previously%20saved%20%28if%20anything%29%2C%0A%09%09%09%09//%20falling%20back%20to%20the%20empty%20string%20if%20nothing%20was%20stored.%0A%09%09%09%09if%20%28%20this.setAttribute%20%29%20%7B%0A%09%09%09%09%09this.setAttribute%28%20%22class%22%2C%0A%09%09%09%09%09%09className%20%7C%7C%20value%20%3D%3D%3D%20false%20%3F%0A%09%09%09%09%09%09%22%22%20%3A%0A%09%09%09%09%09%09dataPriv.get%28%20this%2C%20%22__className__%22%20%29%20%7C%7C%20%22%22%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09hasClass%3A%20function%28%20selector%20%29%20%7B%0A%09%09var%20className%2C%20elem%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09className%20%3D%20%22%20%22%20%2B%20selector%20%2B%20%22%20%22%3B%0A%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%28%20%22%20%22%20%2B%20stripAndCollapse%28%20getClass%28%20elem%20%29%20%29%20%2B%20%22%20%22%20%29.indexOf%28%20className%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20false%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20rreturn%20%3D%20/%5Cr/g%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09val%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20hooks%2C%20ret%2C%20valueIsFunction%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%3B%0A%0A%09%09if%20%28%20%21arguments.length%20%29%20%7B%0A%09%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09%09hooks%20%3D%20jQuery.valHooks%5B%20elem.type%20%5D%20%7C%7C%0A%09%09%09%09%09jQuery.valHooks%5B%20elem.nodeName.toLowerCase%28%29%20%5D%3B%0A%0A%09%09%09%09if%20%28%20hooks%20%26%26%0A%09%09%09%09%09%22get%22%20in%20hooks%20%26%26%0A%09%09%09%09%09%28%20ret%20%3D%20hooks.get%28%20elem%2C%20%22value%22%20%29%20%29%20%21%3D%3D%20undefined%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09return%20ret%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09ret%20%3D%20elem.value%3B%0A%0A%09%09%09%09//%20Handle%20most%20common%20string%20cases%0A%09%09%09%09if%20%28%20typeof%20ret%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09%09%09return%20ret.replace%28%20rreturn%2C%20%22%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Handle%20cases%20where%20value%20is%20null/undef%20or%20number%0A%09%09%09%09return%20ret%20%3D%3D%20null%20%3F%20%22%22%20%3A%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09valueIsFunction%20%3D%20isFunction%28%20value%20%29%3B%0A%0A%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09var%20val%3B%0A%0A%09%09%09if%20%28%20this.nodeType%20%21%3D%3D%201%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20valueIsFunction%20%29%20%7B%0A%09%09%09%09val%20%3D%20value.call%28%20this%2C%20i%2C%20jQuery%28%20this%20%29.val%28%29%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09val%20%3D%20value%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Treat%20null/undefined%20as%20%22%22%3B%20convert%20numbers%20to%20string%0A%09%09%09if%20%28%20val%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09val%20%3D%20%22%22%3B%0A%0A%09%09%09%7D%20else%20if%20%28%20typeof%20val%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09val%20%2B%3D%20%22%22%3B%0A%0A%09%09%09%7D%20else%20if%20%28%20Array.isArray%28%20val%20%29%20%29%20%7B%0A%09%09%09%09val%20%3D%20jQuery.map%28%20val%2C%20function%28%20value%20%29%20%7B%0A%09%09%09%09%09return%20value%20%3D%3D%20null%20%3F%20%22%22%20%3A%20value%20%2B%20%22%22%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09hooks%20%3D%20jQuery.valHooks%5B%20this.type%20%5D%20%7C%7C%20jQuery.valHooks%5B%20this.nodeName.toLowerCase%28%29%20%5D%3B%0A%0A%09%09%09//%20If%20set%20returns%20undefined%2C%20fall%20back%20to%20normal%20setting%0A%09%09%09if%20%28%20%21hooks%20%7C%7C%20%21%28%20%22set%22%20in%20hooks%20%29%20%7C%7C%20hooks.set%28%20this%2C%20val%2C%20%22value%22%20%29%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09this.value%20%3D%20val%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09valHooks%3A%20%7B%0A%09%09option%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09%09var%20val%20%3D%20jQuery.find.attr%28%20elem%2C%20%22value%22%20%29%3B%0A%09%09%09%09return%20val%20%21%3D%20null%20%3F%0A%09%09%09%09%09val%20%3A%0A%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D10%20-%2011%20only%0A%09%09%09%09%09//%20option.text%20throws%20exceptions%20%28%2314686%2C%20%2314858%29%0A%09%09%09%09%09//%20Strip%20and%20collapse%20whitespace%0A%09%09%09%09%09//%20https%3A//html.spec.whatwg.org/%23strip-and-collapse-whitespace%0A%09%09%09%09%09stripAndCollapse%28%20jQuery.text%28%20elem%20%29%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09select%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20value%2C%20option%2C%20i%2C%0A%09%09%09%09%09options%20%3D%20elem.options%2C%0A%09%09%09%09%09index%20%3D%20elem.selectedIndex%2C%0A%09%09%09%09%09one%20%3D%20elem.type%20%3D%3D%3D%20%22select-one%22%2C%0A%09%09%09%09%09values%20%3D%20one%20%3F%20null%20%3A%20%5B%5D%2C%0A%09%09%09%09%09max%20%3D%20one%20%3F%20index%20%2B%201%20%3A%20options.length%3B%0A%0A%09%09%09%09if%20%28%20index%20%3C%200%20%29%20%7B%0A%09%09%09%09%09i%20%3D%20max%3B%0A%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09i%20%3D%20one%20%3F%20index%20%3A%200%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Loop%20through%20all%20the%20selected%20options%0A%09%09%09%09for%20%28%20%3B%20i%20%3C%20max%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09option%20%3D%20options%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09//%20IE8-9%20doesn%27t%20update%20selected%20after%20form%20reset%20%28%232551%29%0A%09%09%09%09%09if%20%28%20%28%20option.selected%20%7C%7C%20i%20%3D%3D%3D%20index%20%29%20%26%26%0A%0A%09%09%09%09%09%09%09//%20Don%27t%20return%20options%20that%20are%20disabled%20or%20in%20a%20disabled%20optgroup%0A%09%09%09%09%09%09%09%21option.disabled%20%26%26%0A%09%09%09%09%09%09%09%28%20%21option.parentNode.disabled%20%7C%7C%0A%09%09%09%09%09%09%09%09%21nodeName%28%20option.parentNode%2C%20%22optgroup%22%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Get%20the%20specific%20value%20for%20the%20option%0A%09%09%09%09%09%09value%20%3D%20jQuery%28%20option%20%29.val%28%29%3B%0A%0A%09%09%09%09%09%09//%20We%20don%27t%20need%20an%20array%20for%20one%20selects%0A%09%09%09%09%09%09if%20%28%20one%20%29%20%7B%0A%09%09%09%09%09%09%09return%20value%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09//%20Multi-Selects%20return%20an%20array%0A%09%09%09%09%09%09values.push%28%20value%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20values%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09%09var%20optionSet%2C%20option%2C%0A%09%09%09%09%09options%20%3D%20elem.options%2C%0A%09%09%09%09%09values%20%3D%20jQuery.makeArray%28%20value%20%29%2C%0A%09%09%09%09%09i%20%3D%20options.length%3B%0A%0A%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09option%20%3D%20options%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09/%2A%20eslint-disable%20no-cond-assign%20%2A/%0A%0A%09%09%09%09%09if%20%28%20option.selected%20%3D%0A%09%09%09%09%09%09jQuery.inArray%28%20jQuery.valHooks.option.get%28%20option%20%29%2C%20values%20%29%20%3E%20-1%0A%09%09%09%09%09%29%20%7B%0A%09%09%09%09%09%09optionSet%20%3D%20true%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09/%2A%20eslint-enable%20no-cond-assign%20%2A/%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Force%20browsers%20to%20behave%20consistently%20when%20non-matching%20value%20is%20set%0A%09%09%09%09if%20%28%20%21optionSet%20%29%20%7B%0A%09%09%09%09%09elem.selectedIndex%20%3D%20-1%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20values%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Radios%20and%20checkboxes%20getter/setter%0AjQuery.each%28%20%5B%20%22radio%22%2C%20%22checkbox%22%20%5D%2C%20function%28%29%20%7B%0A%09jQuery.valHooks%5B%20this%20%5D%20%3D%20%7B%0A%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09%09%09return%20%28%20elem.checked%20%3D%20jQuery.inArray%28%20jQuery%28%20elem%20%29.val%28%29%2C%20value%20%29%20%3E%20-1%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%09if%20%28%20%21support.checkOn%20%29%20%7B%0A%09%09jQuery.valHooks%5B%20this%20%5D.get%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem.getAttribute%28%20%22value%22%20%29%20%3D%3D%3D%20null%20%3F%20%22on%22%20%3A%20elem.value%3B%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Return%20jQuery%20for%20attributes-only%20inclusion%0A%0A%0Asupport.focusin%20%3D%20%22onfocusin%22%20in%20window%3B%0A%0A%0Avar%20rfocusMorph%20%3D%20/%5E%28%3F%3Afocusinfocus%7Cfocusoutblur%29%24/%2C%0A%09stopPropagationCallback%20%3D%20function%28%20e%20%29%20%7B%0A%09%09e.stopPropagation%28%29%3B%0A%09%7D%3B%0A%0AjQuery.extend%28%20jQuery.event%2C%20%7B%0A%0A%09trigger%3A%20function%28%20event%2C%20data%2C%20elem%2C%20onlyHandlers%20%29%20%7B%0A%0A%09%09var%20i%2C%20cur%2C%20tmp%2C%20bubbleType%2C%20ontype%2C%20handle%2C%20special%2C%20lastElement%2C%0A%09%09%09eventPath%20%3D%20%5B%20elem%20%7C%7C%20document%20%5D%2C%0A%09%09%09type%20%3D%20hasOwn.call%28%20event%2C%20%22type%22%20%29%20%3F%20event.type%20%3A%20event%2C%0A%09%09%09namespaces%20%3D%20hasOwn.call%28%20event%2C%20%22namespace%22%20%29%20%3F%20event.namespace.split%28%20%22.%22%20%29%20%3A%20%5B%5D%3B%0A%0A%09%09cur%20%3D%20lastElement%20%3D%20tmp%20%3D%20elem%20%3D%20elem%20%7C%7C%20document%3B%0A%0A%09%09//%20Don%27t%20do%20events%20on%20text%20and%20comment%20nodes%0A%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%203%20%7C%7C%20elem.nodeType%20%3D%3D%3D%208%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20focus/blur%20morphs%20to%20focusin/out%3B%20ensure%20we%27re%20not%20firing%20them%20right%20now%0A%09%09if%20%28%20rfocusMorph.test%28%20type%20%2B%20jQuery.event.triggered%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20type.indexOf%28%20%22.%22%20%29%20%3E%20-1%20%29%20%7B%0A%0A%09%09%09//%20Namespaced%20trigger%3B%20create%20a%20regexp%20to%20match%20event%20type%20in%20handle%28%29%0A%09%09%09namespaces%20%3D%20type.split%28%20%22.%22%20%29%3B%0A%09%09%09type%20%3D%20namespaces.shift%28%29%3B%0A%09%09%09namespaces.sort%28%29%3B%0A%09%09%7D%0A%09%09ontype%20%3D%20type.indexOf%28%20%22%3A%22%20%29%20%3C%200%20%26%26%20%22on%22%20%2B%20type%3B%0A%0A%09%09//%20Caller%20can%20pass%20in%20a%20jQuery.Event%20object%2C%20Object%2C%20or%20just%20an%20event%20type%20string%0A%09%09event%20%3D%20event%5B%20jQuery.expando%20%5D%20%3F%0A%09%09%09event%20%3A%0A%09%09%09new%20jQuery.Event%28%20type%2C%20typeof%20event%20%3D%3D%3D%20%22object%22%20%26%26%20event%20%29%3B%0A%0A%09%09//%20Trigger%20bitmask%3A%20%26%201%20for%20native%20handlers%3B%20%26%202%20for%20jQuery%20%28always%20true%29%0A%09%09event.isTrigger%20%3D%20onlyHandlers%20%3F%202%20%3A%203%3B%0A%09%09event.namespace%20%3D%20namespaces.join%28%20%22.%22%20%29%3B%0A%09%09event.rnamespace%20%3D%20event.namespace%20%3F%0A%09%09%09new%20RegExp%28%20%22%28%5E%7C%5C%5C.%29%22%20%2B%20namespaces.join%28%20%22%5C%5C.%28%3F%3A.%2A%5C%5C.%7C%29%22%20%29%20%2B%20%22%28%5C%5C.%7C%24%29%22%20%29%20%3A%0A%09%09%09null%3B%0A%0A%09%09//%20Clean%20up%20the%20event%20in%20case%20it%20is%20being%20reused%0A%09%09event.result%20%3D%20undefined%3B%0A%09%09if%20%28%20%21event.target%20%29%20%7B%0A%09%09%09event.target%20%3D%20elem%3B%0A%09%09%7D%0A%0A%09%09//%20Clone%20any%20incoming%20data%20and%20prepend%20the%20event%2C%20creating%20the%20handler%20arg%20list%0A%09%09data%20%3D%20data%20%3D%3D%20null%20%3F%0A%09%09%09%5B%20event%20%5D%20%3A%0A%09%09%09jQuery.makeArray%28%20data%2C%20%5B%20event%20%5D%20%29%3B%0A%0A%09%09//%20Allow%20special%20events%20to%20draw%20outside%20the%20lines%0A%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20special.trigger%20%26%26%20special.trigger.apply%28%20elem%2C%20data%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Determine%20event%20propagation%20path%20in%20advance%2C%20per%20W3C%20events%20spec%20%28%239951%29%0A%09%09//%20Bubble%20up%20to%20document%2C%20then%20to%20window%3B%20watch%20for%20a%20global%20ownerDocument%20var%20%28%239724%29%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20%21special.noBubble%20%26%26%20%21isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09bubbleType%20%3D%20special.delegateType%20%7C%7C%20type%3B%0A%09%09%09if%20%28%20%21rfocusMorph.test%28%20bubbleType%20%2B%20type%20%29%20%29%20%7B%0A%09%09%09%09cur%20%3D%20cur.parentNode%3B%0A%09%09%09%7D%0A%09%09%09for%20%28%20%3B%20cur%3B%20cur%20%3D%20cur.parentNode%20%29%20%7B%0A%09%09%09%09eventPath.push%28%20cur%20%29%3B%0A%09%09%09%09tmp%20%3D%20cur%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Only%20add%20window%20if%20we%20got%20to%20document%20%28e.g.%2C%20not%20plain%20obj%20or%20detached%20DOM%29%0A%09%09%09if%20%28%20tmp%20%3D%3D%3D%20%28%20elem.ownerDocument%20%7C%7C%20document%20%29%20%29%20%7B%0A%09%09%09%09eventPath.push%28%20tmp.defaultView%20%7C%7C%20tmp.parentWindow%20%7C%7C%20window%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Fire%20handlers%20on%20the%20event%20path%0A%09%09i%20%3D%200%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20eventPath%5B%20i%2B%2B%20%5D%20%29%20%26%26%20%21event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09lastElement%20%3D%20cur%3B%0A%09%09%09event.type%20%3D%20i%20%3E%201%20%3F%0A%09%09%09%09bubbleType%20%3A%0A%09%09%09%09special.bindType%20%7C%7C%20type%3B%0A%0A%09%09%09//%20jQuery%20handler%0A%09%09%09handle%20%3D%20%28%0A%09%09%09%09%09dataPriv.get%28%20cur%2C%20%22events%22%20%29%20%7C%7C%20Object.create%28%20null%20%29%0A%09%09%09%09%29%5B%20event.type%20%5D%20%26%26%0A%09%09%09%09dataPriv.get%28%20cur%2C%20%22handle%22%20%29%3B%0A%09%09%09if%20%28%20handle%20%29%20%7B%0A%09%09%09%09handle.apply%28%20cur%2C%20data%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Native%20handler%0A%09%09%09handle%20%3D%20ontype%20%26%26%20cur%5B%20ontype%20%5D%3B%0A%09%09%09if%20%28%20handle%20%26%26%20handle.apply%20%26%26%20acceptData%28%20cur%20%29%20%29%20%7B%0A%09%09%09%09event.result%20%3D%20handle.apply%28%20cur%2C%20data%20%29%3B%0A%09%09%09%09if%20%28%20event.result%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09event.type%20%3D%20type%3B%0A%0A%09%09//%20If%20nobody%20prevented%20the%20default%20action%2C%20do%20it%20now%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20%21event.isDefaultPrevented%28%29%20%29%20%7B%0A%0A%09%09%09if%20%28%20%28%20%21special._default%20%7C%7C%0A%09%09%09%09special._default.apply%28%20eventPath.pop%28%29%2C%20data%20%29%20%3D%3D%3D%20false%20%29%20%26%26%0A%09%09%09%09acceptData%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Call%20a%20native%20DOM%20method%20on%20the%20target%20with%20the%20same%20name%20as%20the%20event.%0A%09%09%09%09//%20Don%27t%20do%20default%20actions%20on%20window%2C%20that%27s%20where%20global%20variables%20be%20%28%236170%29%0A%09%09%09%09if%20%28%20ontype%20%26%26%20isFunction%28%20elem%5B%20type%20%5D%20%29%20%26%26%20%21isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Don%27t%20re-trigger%20an%20onFOO%20event%20when%20we%20call%20its%20FOO%28%29%20method%0A%09%09%09%09%09tmp%20%3D%20elem%5B%20ontype%20%5D%3B%0A%0A%09%09%09%09%09if%20%28%20tmp%20%29%20%7B%0A%09%09%09%09%09%09elem%5B%20ontype%20%5D%20%3D%20null%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Prevent%20re-triggering%20of%20the%20same%20event%2C%20since%20we%20already%20bubbled%20it%20above%0A%09%09%09%09%09jQuery.event.triggered%20%3D%20type%3B%0A%0A%09%09%09%09%09if%20%28%20event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09%09%09%09lastElement.addEventListener%28%20type%2C%20stopPropagationCallback%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09elem%5B%20type%20%5D%28%29%3B%0A%0A%09%09%09%09%09if%20%28%20event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09%09%09%09lastElement.removeEventListener%28%20type%2C%20stopPropagationCallback%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09jQuery.event.triggered%20%3D%20undefined%3B%0A%0A%09%09%09%09%09if%20%28%20tmp%20%29%20%7B%0A%09%09%09%09%09%09elem%5B%20ontype%20%5D%20%3D%20tmp%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20event.result%3B%0A%09%7D%2C%0A%0A%09//%20Piggyback%20on%20a%20donor%20event%20to%20simulate%20a%20different%20one%0A%09//%20Used%20only%20for%20%60focus%28in%20%7C%20out%29%60%20events%0A%09simulate%3A%20function%28%20type%2C%20elem%2C%20event%20%29%20%7B%0A%09%09var%20e%20%3D%20jQuery.extend%28%0A%09%09%09new%20jQuery.Event%28%29%2C%0A%09%09%09event%2C%0A%09%09%09%7B%0A%09%09%09%09type%3A%20type%2C%0A%09%09%09%09isSimulated%3A%20true%0A%09%09%09%7D%0A%09%09%29%3B%0A%0A%09%09jQuery.event.trigger%28%20e%2C%20null%2C%20elem%20%29%3B%0A%09%7D%0A%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09trigger%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.event.trigger%28%20type%2C%20data%2C%20this%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09triggerHandler%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09var%20elem%20%3D%20this%5B%200%20%5D%3B%0A%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.event.trigger%28%20type%2C%20data%2C%20elem%2C%20true%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20Support%3A%20Firefox%20%3C%3D44%0A//%20Firefox%20doesn%27t%20have%20focus%28in%20%7C%20out%29%20events%0A//%20Related%20ticket%20-%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D687787%0A//%0A//%20Support%3A%20Chrome%20%3C%3D48%20-%2049%2C%20Safari%20%3C%3D9.0%20-%209.1%0A//%20focus%28in%20%7C%20out%29%20events%20fire%20after%20focus%20%26%20blur%20events%2C%0A//%20which%20is%20spec%20violation%20-%20http%3A//www.w3.org/TR/DOM-Level-3-Events/%23events-focusevent-event-order%0A//%20Related%20ticket%20-%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D449857%0Aif%20%28%20%21support.focusin%20%29%20%7B%0A%09jQuery.each%28%20%7B%20focus%3A%20%22focusin%22%2C%20blur%3A%20%22focusout%22%20%7D%2C%20function%28%20orig%2C%20fix%20%29%20%7B%0A%0A%09%09//%20Attach%20a%20single%20capturing%20handler%20on%20the%20document%20while%20someone%20wants%20focusin/focusout%0A%09%09var%20handler%20%3D%20function%28%20event%20%29%20%7B%0A%09%09%09jQuery.event.simulate%28%20fix%2C%20event.target%2C%20jQuery.event.fix%28%20event%20%29%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09jQuery.event.special%5B%20fix%20%5D%20%3D%20%7B%0A%09%09%09setup%3A%20function%28%29%20%7B%0A%0A%09%09%09%09//%20Handle%3A%20regular%20nodes%20%28via%20%60this.ownerDocument%60%29%2C%20window%0A%09%09%09%09//%20%28via%20%60this.document%60%29%20%26%20document%20%28via%20%60this%60%29.%0A%09%09%09%09var%20doc%20%3D%20this.ownerDocument%20%7C%7C%20this.document%20%7C%7C%20this%2C%0A%09%09%09%09%09attaches%20%3D%20dataPriv.access%28%20doc%2C%20fix%20%29%3B%0A%0A%09%09%09%09if%20%28%20%21attaches%20%29%20%7B%0A%09%09%09%09%09doc.addEventListener%28%20orig%2C%20handler%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09dataPriv.access%28%20doc%2C%20fix%2C%20%28%20attaches%20%7C%7C%200%20%29%20%2B%201%20%29%3B%0A%09%09%09%7D%2C%0A%09%09%09teardown%3A%20function%28%29%20%7B%0A%09%09%09%09var%20doc%20%3D%20this.ownerDocument%20%7C%7C%20this.document%20%7C%7C%20this%2C%0A%09%09%09%09%09attaches%20%3D%20dataPriv.access%28%20doc%2C%20fix%20%29%20-%201%3B%0A%0A%09%09%09%09if%20%28%20%21attaches%20%29%20%7B%0A%09%09%09%09%09doc.removeEventListener%28%20orig%2C%20handler%2C%20true%20%29%3B%0A%09%09%09%09%09dataPriv.remove%28%20doc%2C%20fix%20%29%3B%0A%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09dataPriv.access%28%20doc%2C%20fix%2C%20attaches%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%0Avar%20location%20%3D%20window.location%3B%0A%0Avar%20nonce%20%3D%20%7B%20guid%3A%20Date.now%28%29%20%7D%3B%0A%0Avar%20rquery%20%3D%20%28%20/%5C%3F/%20%29%3B%0A%0A%0A%0A//%20Cross-browser%20xml%20parsing%0AjQuery.parseXML%20%3D%20function%28%20data%20%29%20%7B%0A%09var%20xml%3B%0A%09if%20%28%20%21data%20%7C%7C%20typeof%20data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20null%3B%0A%09%7D%0A%0A%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09//%20IE%20throws%20on%20parseFromString%20with%20invalid%20input.%0A%09try%20%7B%0A%09%09xml%20%3D%20%28%20new%20window.DOMParser%28%29%20%29.parseFromString%28%20data%2C%20%22text/xml%22%20%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09xml%20%3D%20undefined%3B%0A%09%7D%0A%0A%09if%20%28%20%21xml%20%7C%7C%20xml.getElementsByTagName%28%20%22parsererror%22%20%29.length%20%29%20%7B%0A%09%09jQuery.error%28%20%22Invalid%20XML%3A%20%22%20%2B%20data%20%29%3B%0A%09%7D%0A%09return%20xml%3B%0A%7D%3B%0A%0A%0Avar%0A%09rbracket%20%3D%20/%5C%5B%5C%5D%24/%2C%0A%09rCRLF%20%3D%20/%5Cr%3F%5Cn/g%2C%0A%09rsubmitterTypes%20%3D%20/%5E%28%3F%3Asubmit%7Cbutton%7Cimage%7Creset%7Cfile%29%24/i%2C%0A%09rsubmittable%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Ckeygen%29/i%3B%0A%0Afunction%20buildParams%28%20prefix%2C%20obj%2C%20traditional%2C%20add%20%29%20%7B%0A%09var%20name%3B%0A%0A%09if%20%28%20Array.isArray%28%20obj%20%29%20%29%20%7B%0A%0A%09%09//%20Serialize%20array%20item.%0A%09%09jQuery.each%28%20obj%2C%20function%28%20i%2C%20v%20%29%20%7B%0A%09%09%09if%20%28%20traditional%20%7C%7C%20rbracket.test%28%20prefix%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Treat%20each%20array%20item%20as%20a%20scalar.%0A%09%09%09%09add%28%20prefix%2C%20v%20%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Item%20is%20non-scalar%20%28array%20or%20object%29%2C%20encode%20its%20numeric%20index.%0A%09%09%09%09buildParams%28%0A%09%09%09%09%09prefix%20%2B%20%22%5B%22%20%2B%20%28%20typeof%20v%20%3D%3D%3D%20%22object%22%20%26%26%20v%20%21%3D%20null%20%3F%20i%20%3A%20%22%22%20%29%20%2B%20%22%5D%22%2C%0A%09%09%09%09%09v%2C%0A%09%09%09%09%09traditional%2C%0A%09%09%09%09%09add%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%0A%09%7D%20else%20if%20%28%20%21traditional%20%26%26%20toType%28%20obj%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20Serialize%20object%20item.%0A%09%09for%20%28%20name%20in%20obj%20%29%20%7B%0A%09%09%09buildParams%28%20prefix%20%2B%20%22%5B%22%20%2B%20name%20%2B%20%22%5D%22%2C%20obj%5B%20name%20%5D%2C%20traditional%2C%20add%20%29%3B%0A%09%09%7D%0A%0A%09%7D%20else%20%7B%0A%0A%09%09//%20Serialize%20scalar%20item.%0A%09%09add%28%20prefix%2C%20obj%20%29%3B%0A%09%7D%0A%7D%0A%0A//%20Serialize%20an%20array%20of%20form%20elements%20or%20a%20set%20of%0A//%20key/values%20into%20a%20query%20string%0AjQuery.param%20%3D%20function%28%20a%2C%20traditional%20%29%20%7B%0A%09var%20prefix%2C%0A%09%09s%20%3D%20%5B%5D%2C%0A%09%09add%20%3D%20function%28%20key%2C%20valueOrFunction%20%29%20%7B%0A%0A%09%09%09//%20If%20value%20is%20a%20function%2C%20invoke%20it%20and%20use%20its%20return%20value%0A%09%09%09var%20value%20%3D%20isFunction%28%20valueOrFunction%20%29%20%3F%0A%09%09%09%09valueOrFunction%28%29%20%3A%0A%09%09%09%09valueOrFunction%3B%0A%0A%09%09%09s%5B%20s.length%20%5D%20%3D%20encodeURIComponent%28%20key%20%29%20%2B%20%22%3D%22%20%2B%0A%09%09%09%09encodeURIComponent%28%20value%20%3D%3D%20null%20%3F%20%22%22%20%3A%20value%20%29%3B%0A%09%09%7D%3B%0A%0A%09if%20%28%20a%20%3D%3D%20null%20%29%20%7B%0A%09%09return%20%22%22%3B%0A%09%7D%0A%0A%09//%20If%20an%20array%20was%20passed%20in%2C%20assume%20that%20it%20is%20an%20array%20of%20form%20elements.%0A%09if%20%28%20Array.isArray%28%20a%20%29%20%7C%7C%20%28%20a.jquery%20%26%26%20%21jQuery.isPlainObject%28%20a%20%29%20%29%20%29%20%7B%0A%0A%09%09//%20Serialize%20the%20form%20elements%0A%09%09jQuery.each%28%20a%2C%20function%28%29%20%7B%0A%09%09%09add%28%20this.name%2C%20this.value%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09%7D%20else%20%7B%0A%0A%09%09//%20If%20traditional%2C%20encode%20the%20%22old%22%20way%20%28the%20way%201.3.2%20or%20older%0A%09%09//%20did%20it%29%2C%20otherwise%20encode%20params%20recursively.%0A%09%09for%20%28%20prefix%20in%20a%20%29%20%7B%0A%09%09%09buildParams%28%20prefix%2C%20a%5B%20prefix%20%5D%2C%20traditional%2C%20add%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20resulting%20serialization%0A%09return%20s.join%28%20%22%26%22%20%29%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09serialize%3A%20function%28%29%20%7B%0A%09%09return%20jQuery.param%28%20this.serializeArray%28%29%20%29%3B%0A%09%7D%2C%0A%09serializeArray%3A%20function%28%29%20%7B%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Can%20add%20propHook%20for%20%22elements%22%20to%20filter%20or%20add%20form%20elements%0A%09%09%09var%20elements%20%3D%20jQuery.prop%28%20this%2C%20%22elements%22%20%29%3B%0A%09%09%09return%20elements%20%3F%20jQuery.makeArray%28%20elements%20%29%20%3A%20this%3B%0A%09%09%7D%20%29%0A%09%09.filter%28%20function%28%29%20%7B%0A%09%09%09var%20type%20%3D%20this.type%3B%0A%0A%09%09%09//%20Use%20.is%28%20%22%3Adisabled%22%20%29%20so%20that%20fieldset%5Bdisabled%5D%20works%0A%09%09%09return%20this.name%20%26%26%20%21jQuery%28%20this%20%29.is%28%20%22%3Adisabled%22%20%29%20%26%26%0A%09%09%09%09rsubmittable.test%28%20this.nodeName%20%29%20%26%26%20%21rsubmitterTypes.test%28%20type%20%29%20%26%26%0A%09%09%09%09%28%20this.checked%20%7C%7C%20%21rcheckableType.test%28%20type%20%29%20%29%3B%0A%09%09%7D%20%29%0A%09%09.map%28%20function%28%20_i%2C%20elem%20%29%20%7B%0A%09%09%09var%20val%20%3D%20jQuery%28%20this%20%29.val%28%29%3B%0A%0A%09%09%09if%20%28%20val%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09return%20null%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20Array.isArray%28%20val%20%29%20%29%20%7B%0A%09%09%09%09return%20jQuery.map%28%20val%2C%20function%28%20val%20%29%20%7B%0A%09%09%09%09%09return%20%7B%20name%3A%20elem.name%2C%20value%3A%20val.replace%28%20rCRLF%2C%20%22%5Cr%5Cn%22%20%29%20%7D%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20%7B%20name%3A%20elem.name%2C%20value%3A%20val.replace%28%20rCRLF%2C%20%22%5Cr%5Cn%22%20%29%20%7D%3B%0A%09%09%7D%20%29.get%28%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Avar%0A%09r20%20%3D%20/%2520/g%2C%0A%09rhash%20%3D%20/%23.%2A%24/%2C%0A%09rantiCache%20%3D%20/%28%5B%3F%26%5D%29_%3D%5B%5E%26%5D%2A/%2C%0A%09rheaders%20%3D%20/%5E%28.%2A%3F%29%3A%5B%20%5Ct%5D%2A%28%5B%5E%5Cr%5Cn%5D%2A%29%24/mg%2C%0A%0A%09//%20%237653%2C%20%238125%2C%20%238152%3A%20local%20protocol%20detection%0A%09rlocalProtocol%20%3D%20/%5E%28%3F%3Aabout%7Capp%7Capp-storage%7C.%2B-extension%7Cfile%7Cres%7Cwidget%29%3A%24/%2C%0A%09rnoContent%20%3D%20/%5E%28%3F%3AGET%7CHEAD%29%24/%2C%0A%09rprotocol%20%3D%20/%5E%5C/%5C//%2C%0A%0A%09/%2A%20Prefilters%0A%09%20%2A%201%29%20They%20are%20useful%20to%20introduce%20custom%20dataTypes%20%28see%20ajax/jsonp.js%20for%20an%20example%29%0A%09%20%2A%202%29%20These%20are%20called%3A%0A%09%20%2A%20%20%20%20-%20BEFORE%20asking%20for%20a%20transport%0A%09%20%2A%20%20%20%20-%20AFTER%20param%20serialization%20%28s.data%20is%20a%20string%20if%20s.processData%20is%20true%29%0A%09%20%2A%203%29%20key%20is%20the%20dataType%0A%09%20%2A%204%29%20the%20catchall%20symbol%20%22%2A%22%20can%20be%20used%0A%09%20%2A%205%29%20execution%20will%20start%20with%20transport%20dataType%20and%20THEN%20continue%20down%20to%20%22%2A%22%20if%20needed%0A%09%20%2A/%0A%09prefilters%20%3D%20%7B%7D%2C%0A%0A%09/%2A%20Transports%20bindings%0A%09%20%2A%201%29%20key%20is%20the%20dataType%0A%09%20%2A%202%29%20the%20catchall%20symbol%20%22%2A%22%20can%20be%20used%0A%09%20%2A%203%29%20selection%20will%20start%20with%20transport%20dataType%20and%20THEN%20go%20to%20%22%2A%22%20if%20needed%0A%09%20%2A/%0A%09transports%20%3D%20%7B%7D%2C%0A%0A%09//%20Avoid%20comment-prolog%20char%20sequence%20%28%2310098%29%3B%20must%20appease%20lint%20and%20evade%20compression%0A%09allTypes%20%3D%20%22%2A/%22.concat%28%20%22%2A%22%20%29%2C%0A%0A%09//%20Anchor%20tag%20for%20parsing%20the%20document%20origin%0A%09originAnchor%20%3D%20document.createElement%28%20%22a%22%20%29%3B%0A%09originAnchor.href%20%3D%20location.href%3B%0A%0A//%20Base%20%22constructor%22%20for%20jQuery.ajaxPrefilter%20and%20jQuery.ajaxTransport%0Afunction%20addToPrefiltersOrTransports%28%20structure%20%29%20%7B%0A%0A%09//%20dataTypeExpression%20is%20optional%20and%20defaults%20to%20%22%2A%22%0A%09return%20function%28%20dataTypeExpression%2C%20func%20%29%20%7B%0A%0A%09%09if%20%28%20typeof%20dataTypeExpression%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09func%20%3D%20dataTypeExpression%3B%0A%09%09%09dataTypeExpression%20%3D%20%22%2A%22%3B%0A%09%09%7D%0A%0A%09%09var%20dataType%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09dataTypes%20%3D%20dataTypeExpression.toLowerCase%28%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%0A%09%09if%20%28%20isFunction%28%20func%20%29%20%29%20%7B%0A%0A%09%09%09//%20For%20each%20dataType%20in%20the%20dataTypeExpression%0A%09%09%09while%20%28%20%28%20dataType%20%3D%20dataTypes%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Prepend%20if%20requested%0A%09%09%09%09if%20%28%20dataType%5B%200%20%5D%20%3D%3D%3D%20%22%2B%22%20%29%20%7B%0A%09%09%09%09%09dataType%20%3D%20dataType.slice%28%201%20%29%20%7C%7C%20%22%2A%22%3B%0A%09%09%09%09%09%28%20structure%5B%20dataType%20%5D%20%3D%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%20%29.unshift%28%20func%20%29%3B%0A%0A%09%09%09%09//%20Otherwise%20append%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%28%20structure%5B%20dataType%20%5D%20%3D%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%20%29.push%28%20func%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0A//%20Base%20inspection%20function%20for%20prefilters%20and%20transports%0Afunction%20inspectPrefiltersOrTransports%28%20structure%2C%20options%2C%20originalOptions%2C%20jqXHR%20%29%20%7B%0A%0A%09var%20inspected%20%3D%20%7B%7D%2C%0A%09%09seekingTransport%20%3D%20%28%20structure%20%3D%3D%3D%20transports%20%29%3B%0A%0A%09function%20inspect%28%20dataType%20%29%20%7B%0A%09%09var%20selected%3B%0A%09%09inspected%5B%20dataType%20%5D%20%3D%20true%3B%0A%09%09jQuery.each%28%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%2C%20function%28%20_%2C%20prefilterOrFactory%20%29%20%7B%0A%09%09%09var%20dataTypeOrTransport%20%3D%20prefilterOrFactory%28%20options%2C%20originalOptions%2C%20jqXHR%20%29%3B%0A%09%09%09if%20%28%20typeof%20dataTypeOrTransport%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%21seekingTransport%20%26%26%20%21inspected%5B%20dataTypeOrTransport%20%5D%20%29%20%7B%0A%0A%09%09%09%09options.dataTypes.unshift%28%20dataTypeOrTransport%20%29%3B%0A%09%09%09%09inspect%28%20dataTypeOrTransport%20%29%3B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%20else%20if%20%28%20seekingTransport%20%29%20%7B%0A%09%09%09%09return%20%21%28%20selected%20%3D%20dataTypeOrTransport%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%09return%20selected%3B%0A%09%7D%0A%0A%09return%20inspect%28%20options.dataTypes%5B%200%20%5D%20%29%20%7C%7C%20%21inspected%5B%20%22%2A%22%20%5D%20%26%26%20inspect%28%20%22%2A%22%20%29%3B%0A%7D%0A%0A//%20A%20special%20extend%20for%20ajax%20options%0A//%20that%20takes%20%22flat%22%20options%20%28not%20to%20be%20deep%20extended%29%0A//%20Fixes%20%239887%0Afunction%20ajaxExtend%28%20target%2C%20src%20%29%20%7B%0A%09var%20key%2C%20deep%2C%0A%09%09flatOptions%20%3D%20jQuery.ajaxSettings.flatOptions%20%7C%7C%20%7B%7D%3B%0A%0A%09for%20%28%20key%20in%20src%20%29%20%7B%0A%09%09if%20%28%20src%5B%20key%20%5D%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%28%20flatOptions%5B%20key%20%5D%20%3F%20target%20%3A%20%28%20deep%20%7C%7C%20%28%20deep%20%3D%20%7B%7D%20%29%20%29%20%29%5B%20key%20%5D%20%3D%20src%5B%20key%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%09if%20%28%20deep%20%29%20%7B%0A%09%09jQuery.extend%28%20true%2C%20target%2C%20deep%20%29%3B%0A%09%7D%0A%0A%09return%20target%3B%0A%7D%0A%0A/%2A%20Handles%20responses%20to%20an%20ajax%20request%3A%0A%20%2A%20-%20finds%20the%20right%20dataType%20%28mediates%20between%20content-type%20and%20expected%20dataType%29%0A%20%2A%20-%20returns%20the%20corresponding%20response%0A%20%2A/%0Afunction%20ajaxHandleResponses%28%20s%2C%20jqXHR%2C%20responses%20%29%20%7B%0A%0A%09var%20ct%2C%20type%2C%20finalDataType%2C%20firstDataType%2C%0A%09%09contents%20%3D%20s.contents%2C%0A%09%09dataTypes%20%3D%20s.dataTypes%3B%0A%0A%09//%20Remove%20auto%20dataType%20and%20get%20content-type%20in%20the%20process%0A%09while%20%28%20dataTypes%5B%200%20%5D%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%09%09dataTypes.shift%28%29%3B%0A%09%09if%20%28%20ct%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09ct%20%3D%20s.mimeType%20%7C%7C%20jqXHR.getResponseHeader%28%20%22Content-Type%22%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Check%20if%20we%27re%20dealing%20with%20a%20known%20content-type%0A%09if%20%28%20ct%20%29%20%7B%0A%09%09for%20%28%20type%20in%20contents%20%29%20%7B%0A%09%09%09if%20%28%20contents%5B%20type%20%5D%20%26%26%20contents%5B%20type%20%5D.test%28%20ct%20%29%20%29%20%7B%0A%09%09%09%09dataTypes.unshift%28%20type%20%29%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Check%20to%20see%20if%20we%20have%20a%20response%20for%20the%20expected%20dataType%0A%09if%20%28%20dataTypes%5B%200%20%5D%20in%20responses%20%29%20%7B%0A%09%09finalDataType%20%3D%20dataTypes%5B%200%20%5D%3B%0A%09%7D%20else%20%7B%0A%0A%09%09//%20Try%20convertible%20dataTypes%0A%09%09for%20%28%20type%20in%20responses%20%29%20%7B%0A%09%09%09if%20%28%20%21dataTypes%5B%200%20%5D%20%7C%7C%20s.converters%5B%20type%20%2B%20%22%20%22%20%2B%20dataTypes%5B%200%20%5D%20%5D%20%29%20%7B%0A%09%09%09%09finalDataType%20%3D%20type%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20%21firstDataType%20%29%20%7B%0A%09%09%09%09firstDataType%20%3D%20type%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Or%20just%20use%20first%20one%0A%09%09finalDataType%20%3D%20finalDataType%20%7C%7C%20firstDataType%3B%0A%09%7D%0A%0A%09//%20If%20we%20found%20a%20dataType%0A%09//%20We%20add%20the%20dataType%20to%20the%20list%20if%20needed%0A%09//%20and%20return%20the%20corresponding%20response%0A%09if%20%28%20finalDataType%20%29%20%7B%0A%09%09if%20%28%20finalDataType%20%21%3D%3D%20dataTypes%5B%200%20%5D%20%29%20%7B%0A%09%09%09dataTypes.unshift%28%20finalDataType%20%29%3B%0A%09%09%7D%0A%09%09return%20responses%5B%20finalDataType%20%5D%3B%0A%09%7D%0A%7D%0A%0A/%2A%20Chain%20conversions%20given%20the%20request%20and%20the%20original%20response%0A%20%2A%20Also%20sets%20the%20responseXXX%20fields%20on%20the%20jqXHR%20instance%0A%20%2A/%0Afunction%20ajaxConvert%28%20s%2C%20response%2C%20jqXHR%2C%20isSuccess%20%29%20%7B%0A%09var%20conv2%2C%20current%2C%20conv%2C%20tmp%2C%20prev%2C%0A%09%09converters%20%3D%20%7B%7D%2C%0A%0A%09%09//%20Work%20with%20a%20copy%20of%20dataTypes%20in%20case%20we%20need%20to%20modify%20it%20for%20conversion%0A%09%09dataTypes%20%3D%20s.dataTypes.slice%28%29%3B%0A%0A%09//%20Create%20converters%20map%20with%20lowercased%20keys%0A%09if%20%28%20dataTypes%5B%201%20%5D%20%29%20%7B%0A%09%09for%20%28%20conv%20in%20s.converters%20%29%20%7B%0A%09%09%09converters%5B%20conv.toLowerCase%28%29%20%5D%20%3D%20s.converters%5B%20conv%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09current%20%3D%20dataTypes.shift%28%29%3B%0A%0A%09//%20Convert%20to%20each%20sequential%20dataType%0A%09while%20%28%20current%20%29%20%7B%0A%0A%09%09if%20%28%20s.responseFields%5B%20current%20%5D%20%29%20%7B%0A%09%09%09jqXHR%5B%20s.responseFields%5B%20current%20%5D%20%5D%20%3D%20response%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20the%20dataFilter%20if%20provided%0A%09%09if%20%28%20%21prev%20%26%26%20isSuccess%20%26%26%20s.dataFilter%20%29%20%7B%0A%09%09%09response%20%3D%20s.dataFilter%28%20response%2C%20s.dataType%20%29%3B%0A%09%09%7D%0A%0A%09%09prev%20%3D%20current%3B%0A%09%09current%20%3D%20dataTypes.shift%28%29%3B%0A%0A%09%09if%20%28%20current%20%29%20%7B%0A%0A%09%09%09//%20There%27s%20only%20work%20to%20do%20if%20current%20dataType%20is%20non-auto%0A%09%09%09if%20%28%20current%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%0A%09%09%09%09current%20%3D%20prev%3B%0A%0A%09%09%09//%20Convert%20response%20if%20prev%20dataType%20is%20non-auto%20and%20differs%20from%20current%0A%09%09%09%7D%20else%20if%20%28%20prev%20%21%3D%3D%20%22%2A%22%20%26%26%20prev%20%21%3D%3D%20current%20%29%20%7B%0A%0A%09%09%09%09//%20Seek%20a%20direct%20converter%0A%09%09%09%09conv%20%3D%20converters%5B%20prev%20%2B%20%22%20%22%20%2B%20current%20%5D%20%7C%7C%20converters%5B%20%22%2A%20%22%20%2B%20current%20%5D%3B%0A%0A%09%09%09%09//%20If%20none%20found%2C%20seek%20a%20pair%0A%09%09%09%09if%20%28%20%21conv%20%29%20%7B%0A%09%09%09%09%09for%20%28%20conv2%20in%20converters%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20If%20conv2%20outputs%20current%0A%09%09%09%09%09%09tmp%20%3D%20conv2.split%28%20%22%20%22%20%29%3B%0A%09%09%09%09%09%09if%20%28%20tmp%5B%201%20%5D%20%3D%3D%3D%20current%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20If%20prev%20can%20be%20converted%20to%20accepted%20input%0A%09%09%09%09%09%09%09conv%20%3D%20converters%5B%20prev%20%2B%20%22%20%22%20%2B%20tmp%5B%200%20%5D%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09converters%5B%20%22%2A%20%22%20%2B%20tmp%5B%200%20%5D%20%5D%3B%0A%09%09%09%09%09%09%09if%20%28%20conv%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Condense%20equivalence%20converters%0A%09%09%09%09%09%09%09%09if%20%28%20conv%20%3D%3D%3D%20true%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09conv%20%3D%20converters%5B%20conv2%20%5D%3B%0A%0A%09%09%09%09%09%09%09%09//%20Otherwise%2C%20insert%20the%20intermediate%20dataType%0A%09%09%09%09%09%09%09%09%7D%20else%20if%20%28%20converters%5B%20conv2%20%5D%20%21%3D%3D%20true%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09current%20%3D%20tmp%5B%200%20%5D%3B%0A%09%09%09%09%09%09%09%09%09dataTypes.unshift%28%20tmp%5B%201%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Apply%20converter%20%28if%20not%20an%20equivalence%29%0A%09%09%09%09if%20%28%20conv%20%21%3D%3D%20true%20%29%20%7B%0A%0A%09%09%09%09%09//%20Unless%20errors%20are%20allowed%20to%20bubble%2C%20catch%20and%20return%20them%0A%09%09%09%09%09if%20%28%20conv%20%26%26%20s.throws%20%29%20%7B%0A%09%09%09%09%09%09response%20%3D%20conv%28%20response%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09response%20%3D%20conv%28%20response%20%29%3B%0A%09%09%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09%09%09%09%09%09return%20%7B%0A%09%09%09%09%09%09%09%09state%3A%20%22parsererror%22%2C%0A%09%09%09%09%09%09%09%09error%3A%20conv%20%3F%20e%20%3A%20%22No%20conversion%20from%20%22%20%2B%20prev%20%2B%20%22%20to%20%22%20%2B%20current%0A%09%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20%7B%20state%3A%20%22success%22%2C%20data%3A%20response%20%7D%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Counter%20for%20holding%20the%20number%20of%20active%20queries%0A%09active%3A%200%2C%0A%0A%09//%20Last-Modified%20header%20cache%20for%20next%20request%0A%09lastModified%3A%20%7B%7D%2C%0A%09etag%3A%20%7B%7D%2C%0A%0A%09ajaxSettings%3A%20%7B%0A%09%09url%3A%20location.href%2C%0A%09%09type%3A%20%22GET%22%2C%0A%09%09isLocal%3A%20rlocalProtocol.test%28%20location.protocol%20%29%2C%0A%09%09global%3A%20true%2C%0A%09%09processData%3A%20true%2C%0A%09%09async%3A%20true%2C%0A%09%09contentType%3A%20%22application/x-www-form-urlencoded%3B%20charset%3DUTF-8%22%2C%0A%0A%09%09/%2A%0A%09%09timeout%3A%200%2C%0A%09%09data%3A%20null%2C%0A%09%09dataType%3A%20null%2C%0A%09%09username%3A%20null%2C%0A%09%09password%3A%20null%2C%0A%09%09cache%3A%20null%2C%0A%09%09throws%3A%20false%2C%0A%09%09traditional%3A%20false%2C%0A%09%09headers%3A%20%7B%7D%2C%0A%09%09%2A/%0A%0A%09%09accepts%3A%20%7B%0A%09%09%09%22%2A%22%3A%20allTypes%2C%0A%09%09%09text%3A%20%22text/plain%22%2C%0A%09%09%09html%3A%20%22text/html%22%2C%0A%09%09%09xml%3A%20%22application/xml%2C%20text/xml%22%2C%0A%09%09%09json%3A%20%22application/json%2C%20text/javascript%22%0A%09%09%7D%2C%0A%0A%09%09contents%3A%20%7B%0A%09%09%09xml%3A%20/%5Cbxml%5Cb/%2C%0A%09%09%09html%3A%20/%5Cbhtml/%2C%0A%09%09%09json%3A%20/%5Cbjson%5Cb/%0A%09%09%7D%2C%0A%0A%09%09responseFields%3A%20%7B%0A%09%09%09xml%3A%20%22responseXML%22%2C%0A%09%09%09text%3A%20%22responseText%22%2C%0A%09%09%09json%3A%20%22responseJSON%22%0A%09%09%7D%2C%0A%0A%09%09//%20Data%20converters%0A%09%09//%20Keys%20separate%20source%20%28or%20catchall%20%22%2A%22%29%20and%20destination%20types%20with%20a%20single%20space%0A%09%09converters%3A%20%7B%0A%0A%09%09%09//%20Convert%20anything%20to%20text%0A%09%09%09%22%2A%20text%22%3A%20String%2C%0A%0A%09%09%09//%20Text%20to%20html%20%28true%20%3D%20no%20transformation%29%0A%09%09%09%22text%20html%22%3A%20true%2C%0A%0A%09%09%09//%20Evaluate%20text%20as%20a%20json%20expression%0A%09%09%09%22text%20json%22%3A%20JSON.parse%2C%0A%0A%09%09%09//%20Parse%20text%20as%20xml%0A%09%09%09%22text%20xml%22%3A%20jQuery.parseXML%0A%09%09%7D%2C%0A%0A%09%09//%20For%20options%20that%20shouldn%27t%20be%20deep%20extended%3A%0A%09%09//%20you%20can%20add%20your%20own%20custom%20options%20here%20if%0A%09%09//%20and%20when%20you%20create%20one%20that%20shouldn%27t%20be%0A%09%09//%20deep%20extended%20%28see%20ajaxExtend%29%0A%09%09flatOptions%3A%20%7B%0A%09%09%09url%3A%20true%2C%0A%09%09%09context%3A%20true%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Creates%20a%20full%20fledged%20settings%20object%20into%20target%0A%09//%20with%20both%20ajaxSettings%20and%20settings%20fields.%0A%09//%20If%20target%20is%20omitted%2C%20writes%20into%20ajaxSettings.%0A%09ajaxSetup%3A%20function%28%20target%2C%20settings%20%29%20%7B%0A%09%09return%20settings%20%3F%0A%0A%09%09%09//%20Building%20a%20settings%20object%0A%09%09%09ajaxExtend%28%20ajaxExtend%28%20target%2C%20jQuery.ajaxSettings%20%29%2C%20settings%20%29%20%3A%0A%0A%09%09%09//%20Extending%20ajaxSettings%0A%09%09%09ajaxExtend%28%20jQuery.ajaxSettings%2C%20target%20%29%3B%0A%09%7D%2C%0A%0A%09ajaxPrefilter%3A%20addToPrefiltersOrTransports%28%20prefilters%20%29%2C%0A%09ajaxTransport%3A%20addToPrefiltersOrTransports%28%20transports%20%29%2C%0A%0A%09//%20Main%20method%0A%09ajax%3A%20function%28%20url%2C%20options%20%29%20%7B%0A%0A%09%09//%20If%20url%20is%20an%20object%2C%20simulate%20pre-1.5%20signature%0A%09%09if%20%28%20typeof%20url%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09%09options%20%3D%20url%3B%0A%09%09%09url%20%3D%20undefined%3B%0A%09%09%7D%0A%0A%09%09//%20Force%20options%20to%20be%20an%20object%0A%09%09options%20%3D%20options%20%7C%7C%20%7B%7D%3B%0A%0A%09%09var%20transport%2C%0A%0A%09%09%09//%20URL%20without%20anti-cache%20param%0A%09%09%09cacheURL%2C%0A%0A%09%09%09//%20Response%20headers%0A%09%09%09responseHeadersString%2C%0A%09%09%09responseHeaders%2C%0A%0A%09%09%09//%20timeout%20handle%0A%09%09%09timeoutTimer%2C%0A%0A%09%09%09//%20Url%20cleanup%20var%0A%09%09%09urlAnchor%2C%0A%0A%09%09%09//%20Request%20state%20%28becomes%20false%20upon%20send%20and%20true%20upon%20completion%29%0A%09%09%09completed%2C%0A%0A%09%09%09//%20To%20know%20if%20global%20events%20are%20to%20be%20dispatched%0A%09%09%09fireGlobals%2C%0A%0A%09%09%09//%20Loop%20variable%0A%09%09%09i%2C%0A%0A%09%09%09//%20uncached%20part%20of%20the%20url%0A%09%09%09uncached%2C%0A%0A%09%09%09//%20Create%20the%20final%20options%20object%0A%09%09%09s%20%3D%20jQuery.ajaxSetup%28%20%7B%7D%2C%20options%20%29%2C%0A%0A%09%09%09//%20Callbacks%20context%0A%09%09%09callbackContext%20%3D%20s.context%20%7C%7C%20s%2C%0A%0A%09%09%09//%20Context%20for%20global%20events%20is%20callbackContext%20if%20it%20is%20a%20DOM%20node%20or%20jQuery%20collection%0A%09%09%09globalEventContext%20%3D%20s.context%20%26%26%0A%09%09%09%09%28%20callbackContext.nodeType%20%7C%7C%20callbackContext.jquery%20%29%20%3F%0A%09%09%09%09%09jQuery%28%20callbackContext%20%29%20%3A%0A%09%09%09%09%09jQuery.event%2C%0A%0A%09%09%09//%20Deferreds%0A%09%09%09deferred%20%3D%20jQuery.Deferred%28%29%2C%0A%09%09%09completeDeferred%20%3D%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%0A%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09statusCode%20%3D%20s.statusCode%20%7C%7C%20%7B%7D%2C%0A%0A%09%09%09//%20Headers%20%28they%20are%20sent%20all%20at%20once%29%0A%09%09%09requestHeaders%20%3D%20%7B%7D%2C%0A%09%09%09requestHeadersNames%20%3D%20%7B%7D%2C%0A%0A%09%09%09//%20Default%20abort%20message%0A%09%09%09strAbort%20%3D%20%22canceled%22%2C%0A%0A%09%09%09//%20Fake%20xhr%0A%09%09%09jqXHR%20%3D%20%7B%0A%09%09%09%09readyState%3A%200%2C%0A%0A%09%09%09%09//%20Builds%20headers%20hashtable%20if%20needed%0A%09%09%09%09getResponseHeader%3A%20function%28%20key%20%29%20%7B%0A%09%09%09%09%09var%20match%3B%0A%09%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%21responseHeaders%20%29%20%7B%0A%09%09%09%09%09%09%09responseHeaders%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%09%09while%20%28%20%28%20match%20%3D%20rheaders.exec%28%20responseHeadersString%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09responseHeaders%5B%20match%5B%201%20%5D.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%20%3D%0A%09%09%09%09%09%09%09%09%09%28%20responseHeaders%5B%20match%5B%201%20%5D.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%20%7C%7C%20%5B%5D%20%29%0A%09%09%09%09%09%09%09%09%09%09.concat%28%20match%5B%202%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09match%20%3D%20responseHeaders%5B%20key.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20match%20%3D%3D%20null%20%3F%20null%20%3A%20match.join%28%20%22%2C%20%22%20%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Raw%20string%0A%09%09%09%09getAllResponseHeaders%3A%20function%28%29%20%7B%0A%09%09%09%09%09return%20completed%20%3F%20responseHeadersString%20%3A%20null%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Caches%20the%20header%0A%09%09%09%09setRequestHeader%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09%09%09%09if%20%28%20completed%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09name%20%3D%20requestHeadersNames%5B%20name.toLowerCase%28%29%20%5D%20%3D%0A%09%09%09%09%09%09%09requestHeadersNames%5B%20name.toLowerCase%28%29%20%5D%20%7C%7C%20name%3B%0A%09%09%09%09%09%09requestHeaders%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Overrides%20response%20content-type%20header%0A%09%09%09%09overrideMimeType%3A%20function%28%20type%20%29%20%7B%0A%09%09%09%09%09if%20%28%20completed%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09s.mimeType%20%3D%20type%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09%09statusCode%3A%20function%28%20map%20%29%20%7B%0A%09%09%09%09%09var%20code%3B%0A%09%09%09%09%09if%20%28%20map%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Execute%20the%20appropriate%20callbacks%0A%09%09%09%09%09%09%09jqXHR.always%28%20map%5B%20jqXHR.status%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Lazy-add%20the%20new%20callbacks%20in%20a%20way%20that%20preserves%20old%20ones%0A%09%09%09%09%09%09%09for%20%28%20code%20in%20map%20%29%20%7B%0A%09%09%09%09%09%09%09%09statusCode%5B%20code%20%5D%20%3D%20%5B%20statusCode%5B%20code%20%5D%2C%20map%5B%20code%20%5D%20%5D%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Cancel%20the%20request%0A%09%09%09%09abort%3A%20function%28%20statusText%20%29%20%7B%0A%09%09%09%09%09var%20finalText%20%3D%20statusText%20%7C%7C%20strAbort%3B%0A%09%09%09%09%09if%20%28%20transport%20%29%20%7B%0A%09%09%09%09%09%09transport.abort%28%20finalText%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09done%28%200%2C%20finalText%20%29%3B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%0A%09%09//%20Attach%20deferreds%0A%09%09deferred.promise%28%20jqXHR%20%29%3B%0A%0A%09%09//%20Add%20protocol%20if%20not%20provided%20%28prefilters%20might%20expect%20it%29%0A%09%09//%20Handle%20falsy%20url%20in%20the%20settings%20object%20%28%2310093%3A%20consistency%20with%20old%20signature%29%0A%09%09//%20We%20also%20use%20the%20url%20parameter%20if%20available%0A%09%09s.url%20%3D%20%28%20%28%20url%20%7C%7C%20s.url%20%7C%7C%20location.href%20%29%20%2B%20%22%22%20%29%0A%09%09%09.replace%28%20rprotocol%2C%20location.protocol%20%2B%20%22//%22%20%29%3B%0A%0A%09%09//%20Alias%20method%20option%20to%20type%20as%20per%20ticket%20%2312004%0A%09%09s.type%20%3D%20options.method%20%7C%7C%20options.type%20%7C%7C%20s.method%20%7C%7C%20s.type%3B%0A%0A%09%09//%20Extract%20dataTypes%20list%0A%09%09s.dataTypes%20%3D%20%28%20s.dataType%20%7C%7C%20%22%2A%22%20%29.toLowerCase%28%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%0A%09%09//%20A%20cross-domain%20request%20is%20in%20order%20when%20the%20origin%20doesn%27t%20match%20the%20current%20origin.%0A%09%09if%20%28%20s.crossDomain%20%3D%3D%20null%20%29%20%7B%0A%09%09%09urlAnchor%20%3D%20document.createElement%28%20%22a%22%20%29%3B%0A%0A%09%09%09//%20Support%3A%20IE%20%3C%3D8%20-%2011%2C%20Edge%2012%20-%2015%0A%09%09%09//%20IE%20throws%20exception%20on%20accessing%20the%20href%20property%20if%20url%20is%20malformed%2C%0A%09%09%09//%20e.g.%20http%3A//example.com%3A80x/%0A%09%09%09try%20%7B%0A%09%09%09%09urlAnchor.href%20%3D%20s.url%3B%0A%0A%09%09%09%09//%20Support%3A%20IE%20%3C%3D8%20-%2011%20only%0A%09%09%09%09//%20Anchor%27s%20host%20property%20isn%27t%20correctly%20set%20when%20s.url%20is%20relative%0A%09%09%09%09urlAnchor.href%20%3D%20urlAnchor.href%3B%0A%09%09%09%09s.crossDomain%20%3D%20originAnchor.protocol%20%2B%20%22//%22%20%2B%20originAnchor.host%20%21%3D%3D%0A%09%09%09%09%09urlAnchor.protocol%20%2B%20%22//%22%20%2B%20urlAnchor.host%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20If%20there%20is%20an%20error%20parsing%20the%20URL%2C%20assume%20it%20is%20crossDomain%2C%0A%09%09%09%09//%20it%20can%20be%20rejected%20by%20the%20transport%20if%20it%20is%20invalid%0A%09%09%09%09s.crossDomain%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Convert%20data%20if%20not%20already%20a%20string%0A%09%09if%20%28%20s.data%20%26%26%20s.processData%20%26%26%20typeof%20s.data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09s.data%20%3D%20jQuery.param%28%20s.data%2C%20s.traditional%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20prefilters%0A%09%09inspectPrefiltersOrTransports%28%20prefilters%2C%20s%2C%20options%2C%20jqXHR%20%29%3B%0A%0A%09%09//%20If%20request%20was%20aborted%20inside%20a%20prefilter%2C%20stop%20there%0A%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09return%20jqXHR%3B%0A%09%09%7D%0A%0A%09%09//%20We%20can%20fire%20global%20events%20as%20of%20now%20if%20asked%20to%0A%09%09//%20Don%27t%20fire%20events%20if%20jQuery.event%20is%20undefined%20in%20an%20AMD-usage%20scenario%20%28%2315118%29%0A%09%09fireGlobals%20%3D%20jQuery.event%20%26%26%20s.global%3B%0A%0A%09%09//%20Watch%20for%20a%20new%20set%20of%20requests%0A%09%09if%20%28%20fireGlobals%20%26%26%20jQuery.active%2B%2B%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09jQuery.event.trigger%28%20%22ajaxStart%22%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Uppercase%20the%20type%0A%09%09s.type%20%3D%20s.type.toUpperCase%28%29%3B%0A%0A%09%09//%20Determine%20if%20request%20has%20content%0A%09%09s.hasContent%20%3D%20%21rnoContent.test%28%20s.type%20%29%3B%0A%0A%09%09//%20Save%20the%20URL%20in%20case%20we%27re%20toying%20with%20the%20If-Modified-Since%0A%09%09//%20and/or%20If-None-Match%20header%20later%20on%0A%09%09//%20Remove%20hash%20to%20simplify%20url%20manipulation%0A%09%09cacheURL%20%3D%20s.url.replace%28%20rhash%2C%20%22%22%20%29%3B%0A%0A%09%09//%20More%20options%20handling%20for%20requests%20with%20no%20content%0A%09%09if%20%28%20%21s.hasContent%20%29%20%7B%0A%0A%09%09%09//%20Remember%20the%20hash%20so%20we%20can%20put%20it%20back%0A%09%09%09uncached%20%3D%20s.url.slice%28%20cacheURL.length%20%29%3B%0A%0A%09%09%09//%20If%20data%20is%20available%20and%20should%20be%20processed%2C%20append%20data%20to%20url%0A%09%09%09if%20%28%20s.data%20%26%26%20%28%20s.processData%20%7C%7C%20typeof%20s.data%20%3D%3D%3D%20%22string%22%20%29%20%29%20%7B%0A%09%09%09%09cacheURL%20%2B%3D%20%28%20rquery.test%28%20cacheURL%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20s.data%3B%0A%0A%09%09%09%09//%20%239682%3A%20remove%20data%20so%20that%20it%27s%20not%20used%20in%20an%20eventual%20retry%0A%09%09%09%09delete%20s.data%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20or%20update%20anti-cache%20param%20if%20needed%0A%09%09%09if%20%28%20s.cache%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09cacheURL%20%3D%20cacheURL.replace%28%20rantiCache%2C%20%22%241%22%20%29%3B%0A%09%09%09%09uncached%20%3D%20%28%20rquery.test%28%20cacheURL%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20%22_%3D%22%20%2B%20%28%20nonce.guid%2B%2B%20%29%20%2B%0A%09%09%09%09%09uncached%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Put%20hash%20and%20anti-cache%20on%20the%20URL%20that%20will%20be%20requested%20%28gh-1732%29%0A%09%09%09s.url%20%3D%20cacheURL%20%2B%20uncached%3B%0A%0A%09%09//%20Change%20%27%2520%27%20to%20%27%2B%27%20if%20this%20is%20encoded%20form%20body%20content%20%28gh-2658%29%0A%09%09%7D%20else%20if%20%28%20s.data%20%26%26%20s.processData%20%26%26%0A%09%09%09%28%20s.contentType%20%7C%7C%20%22%22%20%29.indexOf%28%20%22application/x-www-form-urlencoded%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09s.data%20%3D%20s.data.replace%28%20r20%2C%20%22%2B%22%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20If-Modified-Since%20and/or%20If-None-Match%20header%2C%20if%20in%20ifModified%20mode.%0A%09%09if%20%28%20s.ifModified%20%29%20%7B%0A%09%09%09if%20%28%20jQuery.lastModified%5B%20cacheURL%20%5D%20%29%20%7B%0A%09%09%09%09jqXHR.setRequestHeader%28%20%22If-Modified-Since%22%2C%20jQuery.lastModified%5B%20cacheURL%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20jQuery.etag%5B%20cacheURL%20%5D%20%29%20%7B%0A%09%09%09%09jqXHR.setRequestHeader%28%20%22If-None-Match%22%2C%20jQuery.etag%5B%20cacheURL%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20correct%20header%2C%20if%20data%20is%20being%20sent%0A%09%09if%20%28%20s.data%20%26%26%20s.hasContent%20%26%26%20s.contentType%20%21%3D%3D%20false%20%7C%7C%20options.contentType%20%29%20%7B%0A%09%09%09jqXHR.setRequestHeader%28%20%22Content-Type%22%2C%20s.contentType%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20Accepts%20header%20for%20the%20server%2C%20depending%20on%20the%20dataType%0A%09%09jqXHR.setRequestHeader%28%0A%09%09%09%22Accept%22%2C%0A%09%09%09s.dataTypes%5B%200%20%5D%20%26%26%20s.accepts%5B%20s.dataTypes%5B%200%20%5D%20%5D%20%3F%0A%09%09%09%09s.accepts%5B%20s.dataTypes%5B%200%20%5D%20%5D%20%2B%0A%09%09%09%09%09%28%20s.dataTypes%5B%200%20%5D%20%21%3D%3D%20%22%2A%22%20%3F%20%22%2C%20%22%20%2B%20allTypes%20%2B%20%22%3B%20q%3D0.01%22%20%3A%20%22%22%20%29%20%3A%0A%09%09%09%09s.accepts%5B%20%22%2A%22%20%5D%0A%09%09%29%3B%0A%0A%09%09//%20Check%20for%20headers%20option%0A%09%09for%20%28%20i%20in%20s.headers%20%29%20%7B%0A%09%09%09jqXHR.setRequestHeader%28%20i%2C%20s.headers%5B%20i%20%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Allow%20custom%20headers/mimetypes%20and%20early%20abort%0A%09%09if%20%28%20s.beforeSend%20%26%26%0A%09%09%09%28%20s.beforeSend.call%28%20callbackContext%2C%20jqXHR%2C%20s%20%29%20%3D%3D%3D%20false%20%7C%7C%20completed%20%29%20%29%20%7B%0A%0A%09%09%09//%20Abort%20if%20not%20done%20already%20and%20return%0A%09%09%09return%20jqXHR.abort%28%29%3B%0A%09%09%7D%0A%0A%09%09//%20Aborting%20is%20no%20longer%20a%20cancellation%0A%09%09strAbort%20%3D%20%22abort%22%3B%0A%0A%09%09//%20Install%20callbacks%20on%20deferreds%0A%09%09completeDeferred.add%28%20s.complete%20%29%3B%0A%09%09jqXHR.done%28%20s.success%20%29%3B%0A%09%09jqXHR.fail%28%20s.error%20%29%3B%0A%0A%09%09//%20Get%20transport%0A%09%09transport%20%3D%20inspectPrefiltersOrTransports%28%20transports%2C%20s%2C%20options%2C%20jqXHR%20%29%3B%0A%0A%09%09//%20If%20no%20transport%2C%20we%20auto-abort%0A%09%09if%20%28%20%21transport%20%29%20%7B%0A%09%09%09done%28%20-1%2C%20%22No%20Transport%22%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09jqXHR.readyState%20%3D%201%3B%0A%0A%09%09%09//%20Send%20global%20event%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20%22ajaxSend%22%2C%20%5B%20jqXHR%2C%20s%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20request%20was%20aborted%20inside%20ajaxSend%2C%20stop%20there%0A%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09return%20jqXHR%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Timeout%0A%09%09%09if%20%28%20s.async%20%26%26%20s.timeout%20%3E%200%20%29%20%7B%0A%09%09%09%09timeoutTimer%20%3D%20window.setTimeout%28%20function%28%29%20%7B%0A%09%09%09%09%09jqXHR.abort%28%20%22timeout%22%20%29%3B%0A%09%09%09%09%7D%2C%20s.timeout%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09try%20%7B%0A%09%09%09%09completed%20%3D%20false%3B%0A%09%09%09%09transport.send%28%20requestHeaders%2C%20done%20%29%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20Rethrow%20post-completion%20exceptions%0A%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09%09throw%20e%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Propagate%20others%20as%20results%0A%09%09%09%09done%28%20-1%2C%20e%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Callback%20for%20when%20everything%20is%20done%0A%09%09function%20done%28%20status%2C%20nativeStatusText%2C%20responses%2C%20headers%20%29%20%7B%0A%09%09%09var%20isSuccess%2C%20success%2C%20error%2C%20response%2C%20modified%2C%0A%09%09%09%09statusText%20%3D%20nativeStatusText%3B%0A%0A%09%09%09//%20Ignore%20repeat%20invocations%0A%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09completed%20%3D%20true%3B%0A%0A%09%09%09//%20Clear%20timeout%20if%20it%20exists%0A%09%09%09if%20%28%20timeoutTimer%20%29%20%7B%0A%09%09%09%09window.clearTimeout%28%20timeoutTimer%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Dereference%20transport%20for%20early%20garbage%20collection%0A%09%09%09//%20%28no%20matter%20how%20long%20the%20jqXHR%20object%20will%20be%20used%29%0A%09%09%09transport%20%3D%20undefined%3B%0A%0A%09%09%09//%20Cache%20response%20headers%0A%09%09%09responseHeadersString%20%3D%20headers%20%7C%7C%20%22%22%3B%0A%0A%09%09%09//%20Set%20readyState%0A%09%09%09jqXHR.readyState%20%3D%20status%20%3E%200%20%3F%204%20%3A%200%3B%0A%0A%09%09%09//%20Determine%20if%20successful%0A%09%09%09isSuccess%20%3D%20status%20%3E%3D%20200%20%26%26%20status%20%3C%20300%20%7C%7C%20status%20%3D%3D%3D%20304%3B%0A%0A%09%09%09//%20Get%20response%20data%0A%09%09%09if%20%28%20responses%20%29%20%7B%0A%09%09%09%09response%20%3D%20ajaxHandleResponses%28%20s%2C%20jqXHR%2C%20responses%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Use%20a%20noop%20converter%20for%20missing%20script%0A%09%09%09if%20%28%20%21isSuccess%20%26%26%20jQuery.inArray%28%20%22script%22%2C%20s.dataTypes%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09s.converters%5B%20%22text%20script%22%20%5D%20%3D%20function%28%29%20%7B%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Convert%20no%20matter%20what%20%28that%20way%20responseXXX%20fields%20are%20always%20set%29%0A%09%09%09response%20%3D%20ajaxConvert%28%20s%2C%20response%2C%20jqXHR%2C%20isSuccess%20%29%3B%0A%0A%09%09%09//%20If%20successful%2C%20handle%20type%20chaining%0A%09%09%09if%20%28%20isSuccess%20%29%20%7B%0A%0A%09%09%09%09//%20Set%20the%20If-Modified-Since%20and/or%20If-None-Match%20header%2C%20if%20in%20ifModified%20mode.%0A%09%09%09%09if%20%28%20s.ifModified%20%29%20%7B%0A%09%09%09%09%09modified%20%3D%20jqXHR.getResponseHeader%28%20%22Last-Modified%22%20%29%3B%0A%09%09%09%09%09if%20%28%20modified%20%29%20%7B%0A%09%09%09%09%09%09jQuery.lastModified%5B%20cacheURL%20%5D%20%3D%20modified%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09modified%20%3D%20jqXHR.getResponseHeader%28%20%22etag%22%20%29%3B%0A%09%09%09%09%09if%20%28%20modified%20%29%20%7B%0A%09%09%09%09%09%09jQuery.etag%5B%20cacheURL%20%5D%20%3D%20modified%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20if%20no%20content%0A%09%09%09%09if%20%28%20status%20%3D%3D%3D%20204%20%7C%7C%20s.type%20%3D%3D%3D%20%22HEAD%22%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22nocontent%22%3B%0A%0A%09%09%09%09//%20if%20not%20modified%0A%09%09%09%09%7D%20else%20if%20%28%20status%20%3D%3D%3D%20304%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22notmodified%22%3B%0A%0A%09%09%09%09//%20If%20we%20have%20data%2C%20let%27s%20convert%20it%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09statusText%20%3D%20response.state%3B%0A%09%09%09%09%09success%20%3D%20response.data%3B%0A%09%09%09%09%09error%20%3D%20response.error%3B%0A%09%09%09%09%09isSuccess%20%3D%20%21error%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Extract%20error%20from%20statusText%20and%20normalize%20for%20non-aborts%0A%09%09%09%09error%20%3D%20statusText%3B%0A%09%09%09%09if%20%28%20status%20%7C%7C%20%21statusText%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22error%22%3B%0A%09%09%09%09%09if%20%28%20status%20%3C%200%20%29%20%7B%0A%09%09%09%09%09%09status%20%3D%200%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Set%20data%20for%20the%20fake%20xhr%20object%0A%09%09%09jqXHR.status%20%3D%20status%3B%0A%09%09%09jqXHR.statusText%20%3D%20%28%20nativeStatusText%20%7C%7C%20statusText%20%29%20%2B%20%22%22%3B%0A%0A%09%09%09//%20Success/Error%0A%09%09%09if%20%28%20isSuccess%20%29%20%7B%0A%09%09%09%09deferred.resolveWith%28%20callbackContext%2C%20%5B%20success%2C%20statusText%2C%20jqXHR%20%5D%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09deferred.rejectWith%28%20callbackContext%2C%20%5B%20jqXHR%2C%20statusText%2C%20error%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09jqXHR.statusCode%28%20statusCode%20%29%3B%0A%09%09%09statusCode%20%3D%20undefined%3B%0A%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20isSuccess%20%3F%20%22ajaxSuccess%22%20%3A%20%22ajaxError%22%2C%0A%09%09%09%09%09%5B%20jqXHR%2C%20s%2C%20isSuccess%20%3F%20success%20%3A%20error%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Complete%0A%09%09%09completeDeferred.fireWith%28%20callbackContext%2C%20%5B%20jqXHR%2C%20statusText%20%5D%20%29%3B%0A%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20%22ajaxComplete%22%2C%20%5B%20jqXHR%2C%20s%20%5D%20%29%3B%0A%0A%09%09%09%09//%20Handle%20the%20global%20AJAX%20counter%0A%09%09%09%09if%20%28%20%21%28%20--jQuery.active%20%29%20%29%20%7B%0A%09%09%09%09%09jQuery.event.trigger%28%20%22ajaxStop%22%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20jqXHR%3B%0A%09%7D%2C%0A%0A%09getJSON%3A%20function%28%20url%2C%20data%2C%20callback%20%29%20%7B%0A%09%09return%20jQuery.get%28%20url%2C%20data%2C%20callback%2C%20%22json%22%20%29%3B%0A%09%7D%2C%0A%0A%09getScript%3A%20function%28%20url%2C%20callback%20%29%20%7B%0A%09%09return%20jQuery.get%28%20url%2C%20undefined%2C%20callback%2C%20%22script%22%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22get%22%2C%20%22post%22%20%5D%2C%20function%28%20_i%2C%20method%20%29%20%7B%0A%09jQuery%5B%20method%20%5D%20%3D%20function%28%20url%2C%20data%2C%20callback%2C%20type%20%29%20%7B%0A%0A%09%09//%20Shift%20arguments%20if%20data%20argument%20was%20omitted%0A%09%09if%20%28%20isFunction%28%20data%20%29%20%29%20%7B%0A%09%09%09type%20%3D%20type%20%7C%7C%20callback%3B%0A%09%09%09callback%20%3D%20data%3B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%0A%0A%09%09//%20The%20url%20can%20be%20an%20options%20object%20%28which%20then%20must%20have%20.url%29%0A%09%09return%20jQuery.ajax%28%20jQuery.extend%28%20%7B%0A%09%09%09url%3A%20url%2C%0A%09%09%09type%3A%20method%2C%0A%09%09%09dataType%3A%20type%2C%0A%09%09%09data%3A%20data%2C%0A%09%09%09success%3A%20callback%0A%09%09%7D%2C%20jQuery.isPlainObject%28%20url%20%29%20%26%26%20url%20%29%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.ajaxPrefilter%28%20function%28%20s%20%29%20%7B%0A%09var%20i%3B%0A%09for%20%28%20i%20in%20s.headers%20%29%20%7B%0A%09%09if%20%28%20i.toLowerCase%28%29%20%3D%3D%3D%20%22content-type%22%20%29%20%7B%0A%09%09%09s.contentType%20%3D%20s.headers%5B%20i%20%5D%20%7C%7C%20%22%22%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery._evalUrl%20%3D%20function%28%20url%2C%20options%2C%20doc%20%29%20%7B%0A%09return%20jQuery.ajax%28%20%7B%0A%09%09url%3A%20url%2C%0A%0A%09%09//%20Make%20this%20explicit%2C%20since%20user%20can%20override%20this%20through%20ajaxSetup%20%28%2311264%29%0A%09%09type%3A%20%22GET%22%2C%0A%09%09dataType%3A%20%22script%22%2C%0A%09%09cache%3A%20true%2C%0A%09%09async%3A%20false%2C%0A%09%09global%3A%20false%2C%0A%0A%09%09//%20Only%20evaluate%20the%20response%20if%20it%20is%20successful%20%28gh-4126%29%0A%09%09//%20dataFilter%20is%20not%20invoked%20for%20failure%20responses%2C%20so%20using%20it%20instead%0A%09%09//%20of%20the%20default%20converter%20is%20kludgy%20but%20it%20works.%0A%09%09converters%3A%20%7B%0A%09%09%09%22text%20script%22%3A%20function%28%29%20%7B%7D%0A%09%09%7D%2C%0A%09%09dataFilter%3A%20function%28%20response%20%29%20%7B%0A%09%09%09jQuery.globalEval%28%20response%2C%20options%2C%20doc%20%29%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0AjQuery.fn.extend%28%20%7B%0A%09wrapAll%3A%20function%28%20html%20%29%20%7B%0A%09%09var%20wrap%3B%0A%0A%09%09if%20%28%20this%5B%200%20%5D%20%29%20%7B%0A%09%09%09if%20%28%20isFunction%28%20html%20%29%20%29%20%7B%0A%09%09%09%09html%20%3D%20html.call%28%20this%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20The%20elements%20to%20wrap%20the%20target%20around%0A%09%09%09wrap%20%3D%20jQuery%28%20html%2C%20this%5B%200%20%5D.ownerDocument%20%29.eq%28%200%20%29.clone%28%20true%20%29%3B%0A%0A%09%09%09if%20%28%20this%5B%200%20%5D.parentNode%20%29%20%7B%0A%09%09%09%09wrap.insertBefore%28%20this%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09wrap.map%28%20function%28%29%20%7B%0A%09%09%09%09var%20elem%20%3D%20this%3B%0A%0A%09%09%09%09while%20%28%20elem.firstElementChild%20%29%20%7B%0A%09%09%09%09%09elem%20%3D%20elem.firstElementChild%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20elem%3B%0A%09%09%09%7D%20%29.append%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09wrapInner%3A%20function%28%20html%20%29%20%7B%0A%09%09if%20%28%20isFunction%28%20html%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.wrapInner%28%20html.call%28%20this%2C%20i%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20self%20%3D%20jQuery%28%20this%20%29%2C%0A%09%09%09%09contents%20%3D%20self.contents%28%29%3B%0A%0A%09%09%09if%20%28%20contents.length%20%29%20%7B%0A%09%09%09%09contents.wrapAll%28%20html%20%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09self.append%28%20html%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09wrap%3A%20function%28%20html%20%29%20%7B%0A%09%09var%20htmlIsFunction%20%3D%20isFunction%28%20html%20%29%3B%0A%0A%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09jQuery%28%20this%20%29.wrapAll%28%20htmlIsFunction%20%3F%20html.call%28%20this%2C%20i%20%29%20%3A%20html%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09unwrap%3A%20function%28%20selector%20%29%20%7B%0A%09%09this.parent%28%20selector%20%29.not%28%20%22body%22%20%29.each%28%20function%28%29%20%7B%0A%09%09%09jQuery%28%20this%20%29.replaceWith%28%20this.childNodes%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%09return%20this%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery.expr.pseudos.hidden%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20%21jQuery.expr.pseudos.visible%28%20elem%20%29%3B%0A%7D%3B%0AjQuery.expr.pseudos.visible%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20%21%21%28%20elem.offsetWidth%20%7C%7C%20elem.offsetHeight%20%7C%7C%20elem.getClientRects%28%29.length%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.ajaxSettings.xhr%20%3D%20function%28%29%20%7B%0A%09try%20%7B%0A%09%09return%20new%20window.XMLHttpRequest%28%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%7D%3B%0A%0Avar%20xhrSuccessStatus%20%3D%20%7B%0A%0A%09%09//%20File%20protocol%20always%20yields%20status%20code%200%2C%20assume%20200%0A%09%090%3A%20200%2C%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09//%20%231450%3A%20sometimes%20IE%20returns%201223%20when%20it%20should%20be%20204%0A%09%091223%3A%20204%0A%09%7D%2C%0A%09xhrSupported%20%3D%20jQuery.ajaxSettings.xhr%28%29%3B%0A%0Asupport.cors%20%3D%20%21%21xhrSupported%20%26%26%20%28%20%22withCredentials%22%20in%20xhrSupported%20%29%3B%0Asupport.ajax%20%3D%20xhrSupported%20%3D%20%21%21xhrSupported%3B%0A%0AjQuery.ajaxTransport%28%20function%28%20options%20%29%20%7B%0A%09var%20callback%2C%20errorCallback%3B%0A%0A%09//%20Cross%20domain%20only%20allowed%20if%20supported%20through%20XMLHttpRequest%0A%09if%20%28%20support.cors%20%7C%7C%20xhrSupported%20%26%26%20%21options.crossDomain%20%29%20%7B%0A%09%09return%20%7B%0A%09%09%09send%3A%20function%28%20headers%2C%20complete%20%29%20%7B%0A%09%09%09%09var%20i%2C%0A%09%09%09%09%09xhr%20%3D%20options.xhr%28%29%3B%0A%0A%09%09%09%09xhr.open%28%0A%09%09%09%09%09options.type%2C%0A%09%09%09%09%09options.url%2C%0A%09%09%09%09%09options.async%2C%0A%09%09%09%09%09options.username%2C%0A%09%09%09%09%09options.password%0A%09%09%09%09%29%3B%0A%0A%09%09%09%09//%20Apply%20custom%20fields%20if%20provided%0A%09%09%09%09if%20%28%20options.xhrFields%20%29%20%7B%0A%09%09%09%09%09for%20%28%20i%20in%20options.xhrFields%20%29%20%7B%0A%09%09%09%09%09%09xhr%5B%20i%20%5D%20%3D%20options.xhrFields%5B%20i%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Override%20mime%20type%20if%20needed%0A%09%09%09%09if%20%28%20options.mimeType%20%26%26%20xhr.overrideMimeType%20%29%20%7B%0A%09%09%09%09%09xhr.overrideMimeType%28%20options.mimeType%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20X-Requested-With%20header%0A%09%09%09%09//%20For%20cross-domain%20requests%2C%20seeing%20as%20conditions%20for%20a%20preflight%20are%0A%09%09%09%09//%20akin%20to%20a%20jigsaw%20puzzle%2C%20we%20simply%20never%20set%20it%20to%20be%20sure.%0A%09%09%09%09//%20%28it%20can%20always%20be%20set%20on%20a%20per-request%20basis%20or%20even%20using%20ajaxSetup%29%0A%09%09%09%09//%20For%20same-domain%20requests%2C%20won%27t%20change%20header%20if%20already%20provided.%0A%09%09%09%09if%20%28%20%21options.crossDomain%20%26%26%20%21headers%5B%20%22X-Requested-With%22%20%5D%20%29%20%7B%0A%09%09%09%09%09headers%5B%20%22X-Requested-With%22%20%5D%20%3D%20%22XMLHttpRequest%22%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Set%20headers%0A%09%09%09%09for%20%28%20i%20in%20headers%20%29%20%7B%0A%09%09%09%09%09xhr.setRequestHeader%28%20i%2C%20headers%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Callback%0A%09%09%09%09callback%20%3D%20function%28%20type%20%29%20%7B%0A%09%09%09%09%09return%20function%28%29%20%7B%0A%09%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09%09callback%20%3D%20errorCallback%20%3D%20xhr.onload%20%3D%0A%09%09%09%09%09%09%09%09xhr.onerror%20%3D%20xhr.onabort%20%3D%20xhr.ontimeout%20%3D%0A%09%09%09%09%09%09%09%09%09xhr.onreadystatechange%20%3D%20null%3B%0A%0A%09%09%09%09%09%09%09if%20%28%20type%20%3D%3D%3D%20%22abort%22%20%29%20%7B%0A%09%09%09%09%09%09%09%09xhr.abort%28%29%3B%0A%09%09%09%09%09%09%09%7D%20else%20if%20%28%20type%20%3D%3D%3D%20%22error%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09%09%09%09//%20On%20a%20manual%20native%20abort%2C%20IE9%20throws%0A%09%09%09%09%09%09%09%09//%20errors%20on%20any%20property%20access%20that%20is%20not%20readyState%0A%09%09%09%09%09%09%09%09if%20%28%20typeof%20xhr.status%20%21%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09complete%28%200%2C%20%22error%22%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09%09complete%28%0A%0A%09%09%09%09%09%09%09%09%09%09//%20File%3A%20protocol%20always%20yields%20status%200%3B%20see%20%238605%2C%20%2314207%0A%09%09%09%09%09%09%09%09%09%09xhr.status%2C%0A%09%09%09%09%09%09%09%09%09%09xhr.statusText%0A%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09complete%28%0A%09%09%09%09%09%09%09%09%09xhrSuccessStatus%5B%20xhr.status%20%5D%20%7C%7C%20xhr.status%2C%0A%09%09%09%09%09%09%09%09%09xhr.statusText%2C%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09%09%09%09%09//%20IE9%20has%20no%20XHR2%20but%20throws%20on%20binary%20%28trac-11426%29%0A%09%09%09%09%09%09%09%09%09//%20For%20XHR2%20non-text%2C%20let%20the%20caller%20handle%20it%20%28gh-2498%29%0A%09%09%09%09%09%09%09%09%09%28%20xhr.responseType%20%7C%7C%20%22text%22%20%29%20%21%3D%3D%20%22text%22%20%20%7C%7C%0A%09%09%09%09%09%09%09%09%09typeof%20xhr.responseText%20%21%3D%3D%20%22string%22%20%3F%0A%09%09%09%09%09%09%09%09%09%09%7B%20binary%3A%20xhr.response%20%7D%20%3A%0A%09%09%09%09%09%09%09%09%09%09%7B%20text%3A%20xhr.responseText%20%7D%2C%0A%09%09%09%09%09%09%09%09%09xhr.getAllResponseHeaders%28%29%0A%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%7D%3B%0A%0A%09%09%09%09//%20Listen%20to%20events%0A%09%09%09%09xhr.onload%20%3D%20callback%28%29%3B%0A%09%09%09%09errorCallback%20%3D%20xhr.onerror%20%3D%20xhr.ontimeout%20%3D%20callback%28%20%22error%22%20%29%3B%0A%0A%09%09%09%09//%20Support%3A%20IE%209%20only%0A%09%09%09%09//%20Use%20onreadystatechange%20to%20replace%20onabort%0A%09%09%09%09//%20to%20handle%20uncaught%20aborts%0A%09%09%09%09if%20%28%20xhr.onabort%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09xhr.onabort%20%3D%20errorCallback%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09xhr.onreadystatechange%20%3D%20function%28%29%20%7B%0A%0A%09%09%09%09%09%09//%20Check%20readyState%20before%20timeout%20as%20it%20changes%0A%09%09%09%09%09%09if%20%28%20xhr.readyState%20%3D%3D%3D%204%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Allow%20onerror%20to%20be%20called%20first%2C%0A%09%09%09%09%09%09%09//%20but%20that%20will%20not%20handle%20a%20native%20abort%0A%09%09%09%09%09%09%09//%20Also%2C%20save%20errorCallback%20to%20a%20variable%0A%09%09%09%09%09%09%09//%20as%20xhr.onerror%20cannot%20be%20accessed%0A%09%09%09%09%09%09%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09errorCallback%28%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Create%20the%20abort%20callback%0A%09%09%09%09callback%20%3D%20callback%28%20%22abort%22%20%29%3B%0A%0A%09%09%09%09try%20%7B%0A%0A%09%09%09%09%09//%20Do%20send%20the%20request%20%28this%20may%20raise%20an%20exception%29%0A%09%09%09%09%09xhr.send%28%20options.hasContent%20%26%26%20options.data%20%7C%7C%20null%20%29%3B%0A%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09%09//%20%2314683%3A%20Only%20rethrow%20if%20this%20hasn%27t%20been%20notified%20as%20an%20error%20yet%0A%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09throw%20e%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%0A%09%09%09abort%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09callback%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Prevent%20auto-execution%20of%20scripts%20when%20no%20explicit%20dataType%20was%20provided%20%28See%20gh-2432%29%0AjQuery.ajaxPrefilter%28%20function%28%20s%20%29%20%7B%0A%09if%20%28%20s.crossDomain%20%29%20%7B%0A%09%09s.contents.script%20%3D%20false%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Install%20script%20dataType%0AjQuery.ajaxSetup%28%20%7B%0A%09accepts%3A%20%7B%0A%09%09script%3A%20%22text/javascript%2C%20application/javascript%2C%20%22%20%2B%0A%09%09%09%22application/ecmascript%2C%20application/x-ecmascript%22%0A%09%7D%2C%0A%09contents%3A%20%7B%0A%09%09script%3A%20/%5Cb%28%3F%3Ajava%7Cecma%29script%5Cb/%0A%09%7D%2C%0A%09converters%3A%20%7B%0A%09%09%22text%20script%22%3A%20function%28%20text%20%29%20%7B%0A%09%09%09jQuery.globalEval%28%20text%20%29%3B%0A%09%09%09return%20text%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Handle%20cache%27s%20special%20case%20and%20crossDomain%0AjQuery.ajaxPrefilter%28%20%22script%22%2C%20function%28%20s%20%29%20%7B%0A%09if%20%28%20s.cache%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09s.cache%20%3D%20false%3B%0A%09%7D%0A%09if%20%28%20s.crossDomain%20%29%20%7B%0A%09%09s.type%20%3D%20%22GET%22%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Bind%20script%20tag%20hack%20transport%0AjQuery.ajaxTransport%28%20%22script%22%2C%20function%28%20s%20%29%20%7B%0A%0A%09//%20This%20transport%20only%20deals%20with%20cross%20domain%20or%20forced-by-attrs%20requests%0A%09if%20%28%20s.crossDomain%20%7C%7C%20s.scriptAttrs%20%29%20%7B%0A%09%09var%20script%2C%20callback%3B%0A%09%09return%20%7B%0A%09%09%09send%3A%20function%28%20_%2C%20complete%20%29%20%7B%0A%09%09%09%09script%20%3D%20jQuery%28%20%22%3Cscript%3E%22%20%29%0A%09%09%09%09%09.attr%28%20s.scriptAttrs%20%7C%7C%20%7B%7D%20%29%0A%09%09%09%09%09.prop%28%20%7B%20charset%3A%20s.scriptCharset%2C%20src%3A%20s.url%20%7D%20%29%0A%09%09%09%09%09.on%28%20%22load%20error%22%2C%20callback%20%3D%20function%28%20evt%20%29%20%7B%0A%09%09%09%09%09%09script.remove%28%29%3B%0A%09%09%09%09%09%09callback%20%3D%20null%3B%0A%09%09%09%09%09%09if%20%28%20evt%20%29%20%7B%0A%09%09%09%09%09%09%09complete%28%20evt.type%20%3D%3D%3D%20%22error%22%20%3F%20404%20%3A%20200%2C%20evt.type%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%20%29%3B%0A%0A%09%09%09%09//%20Use%20native%20DOM%20manipulation%20to%20avoid%20our%20domManip%20AJAX%20trickery%0A%09%09%09%09document.head.appendChild%28%20script%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%2C%0A%09%09%09abort%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09callback%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20oldCallbacks%20%3D%20%5B%5D%2C%0A%09rjsonp%20%3D%20/%28%3D%29%5C%3F%28%3F%3D%26%7C%24%29%7C%5C%3F%5C%3F/%3B%0A%0A//%20Default%20jsonp%20settings%0AjQuery.ajaxSetup%28%20%7B%0A%09jsonp%3A%20%22callback%22%2C%0A%09jsonpCallback%3A%20function%28%29%20%7B%0A%09%09var%20callback%20%3D%20oldCallbacks.pop%28%29%20%7C%7C%20%28%20jQuery.expando%20%2B%20%22_%22%20%2B%20%28%20nonce.guid%2B%2B%20%29%20%29%3B%0A%09%09this%5B%20callback%20%5D%20%3D%20true%3B%0A%09%09return%20callback%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Detect%2C%20normalize%20options%20and%20install%20callbacks%20for%20jsonp%20requests%0AjQuery.ajaxPrefilter%28%20%22json%20jsonp%22%2C%20function%28%20s%2C%20originalSettings%2C%20jqXHR%20%29%20%7B%0A%0A%09var%20callbackName%2C%20overwritten%2C%20responseContainer%2C%0A%09%09jsonProp%20%3D%20s.jsonp%20%21%3D%3D%20false%20%26%26%20%28%20rjsonp.test%28%20s.url%20%29%20%3F%0A%09%09%09%22url%22%20%3A%0A%09%09%09typeof%20s.data%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%28%20s.contentType%20%7C%7C%20%22%22%20%29%0A%09%09%09%09%09.indexOf%28%20%22application/x-www-form-urlencoded%22%20%29%20%3D%3D%3D%200%20%26%26%0A%09%09%09%09rjsonp.test%28%20s.data%20%29%20%26%26%20%22data%22%0A%09%09%29%3B%0A%0A%09//%20Handle%20iff%20the%20expected%20data%20type%20is%20%22jsonp%22%20or%20we%20have%20a%20parameter%20to%20set%0A%09if%20%28%20jsonProp%20%7C%7C%20s.dataTypes%5B%200%20%5D%20%3D%3D%3D%20%22jsonp%22%20%29%20%7B%0A%0A%09%09//%20Get%20callback%20name%2C%20remembering%20preexisting%20value%20associated%20with%20it%0A%09%09callbackName%20%3D%20s.jsonpCallback%20%3D%20isFunction%28%20s.jsonpCallback%20%29%20%3F%0A%09%09%09s.jsonpCallback%28%29%20%3A%0A%09%09%09s.jsonpCallback%3B%0A%0A%09%09//%20Insert%20callback%20into%20url%20or%20form%20data%0A%09%09if%20%28%20jsonProp%20%29%20%7B%0A%09%09%09s%5B%20jsonProp%20%5D%20%3D%20s%5B%20jsonProp%20%5D.replace%28%20rjsonp%2C%20%22%241%22%20%2B%20callbackName%20%29%3B%0A%09%09%7D%20else%20if%20%28%20s.jsonp%20%21%3D%3D%20false%20%29%20%7B%0A%09%09%09s.url%20%2B%3D%20%28%20rquery.test%28%20s.url%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20s.jsonp%20%2B%20%22%3D%22%20%2B%20callbackName%3B%0A%09%09%7D%0A%0A%09%09//%20Use%20data%20converter%20to%20retrieve%20json%20after%20script%20execution%0A%09%09s.converters%5B%20%22script%20json%22%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09if%20%28%20%21responseContainer%20%29%20%7B%0A%09%09%09%09jQuery.error%28%20callbackName%20%2B%20%22%20was%20not%20called%22%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20responseContainer%5B%200%20%5D%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Force%20json%20dataType%0A%09%09s.dataTypes%5B%200%20%5D%20%3D%20%22json%22%3B%0A%0A%09%09//%20Install%20callback%0A%09%09overwritten%20%3D%20window%5B%20callbackName%20%5D%3B%0A%09%09window%5B%20callbackName%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09responseContainer%20%3D%20arguments%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Clean-up%20function%20%28fires%20after%20converters%29%0A%09%09jqXHR.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20If%20previous%20value%20didn%27t%20exist%20-%20remove%20it%0A%09%09%09if%20%28%20overwritten%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09jQuery%28%20window%20%29.removeProp%28%20callbackName%20%29%3B%0A%0A%09%09%09//%20Otherwise%20restore%20preexisting%20value%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09window%5B%20callbackName%20%5D%20%3D%20overwritten%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Save%20back%20as%20free%0A%09%09%09if%20%28%20s%5B%20callbackName%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Make%20sure%20that%20re-using%20the%20options%20doesn%27t%20screw%20things%20around%0A%09%09%09%09s.jsonpCallback%20%3D%20originalSettings.jsonpCallback%3B%0A%0A%09%09%09%09//%20Save%20the%20callback%20name%20for%20future%20use%0A%09%09%09%09oldCallbacks.push%28%20callbackName%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Call%20if%20it%20was%20a%20function%20and%20we%20have%20a%20response%0A%09%09%09if%20%28%20responseContainer%20%26%26%20isFunction%28%20overwritten%20%29%20%29%20%7B%0A%09%09%09%09overwritten%28%20responseContainer%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09responseContainer%20%3D%20overwritten%20%3D%20undefined%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09//%20Delegate%20to%20script%0A%09%09return%20%22script%22%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Support%3A%20Safari%208%20only%0A//%20In%20Safari%208%20documents%20created%20via%20document.implementation.createHTMLDocument%0A//%20collapse%20sibling%20forms%3A%20the%20second%20one%20becomes%20a%20child%20of%20the%20first%20one.%0A//%20Because%20of%20that%2C%20this%20security%20measure%20has%20to%20be%20disabled%20in%20Safari%208.%0A//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D137337%0Asupport.createHTMLDocument%20%3D%20%28%20function%28%29%20%7B%0A%09var%20body%20%3D%20document.implementation.createHTMLDocument%28%20%22%22%20%29.body%3B%0A%09body.innerHTML%20%3D%20%22%3Cform%3E%3C/form%3E%3Cform%3E%3C/form%3E%22%3B%0A%09return%20body.childNodes.length%20%3D%3D%3D%202%3B%0A%7D%20%29%28%29%3B%0A%0A%0A//%20Argument%20%22data%22%20should%20be%20string%20of%20html%0A//%20context%20%28optional%29%3A%20If%20specified%2C%20the%20fragment%20will%20be%20created%20in%20this%20context%2C%0A//%20defaults%20to%20document%0A//%20keepScripts%20%28optional%29%3A%20If%20true%2C%20will%20include%20scripts%20passed%20in%20the%20html%20string%0AjQuery.parseHTML%20%3D%20function%28%20data%2C%20context%2C%20keepScripts%20%29%20%7B%0A%09if%20%28%20typeof%20data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20%5B%5D%3B%0A%09%7D%0A%09if%20%28%20typeof%20context%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09keepScripts%20%3D%20context%3B%0A%09%09context%20%3D%20false%3B%0A%09%7D%0A%0A%09var%20base%2C%20parsed%2C%20scripts%3B%0A%0A%09if%20%28%20%21context%20%29%20%7B%0A%0A%09%09//%20Stop%20scripts%20or%20inline%20event%20handlers%20from%20being%20executed%20immediately%0A%09%09//%20by%20using%20document.implementation%0A%09%09if%20%28%20support.createHTMLDocument%20%29%20%7B%0A%09%09%09context%20%3D%20document.implementation.createHTMLDocument%28%20%22%22%20%29%3B%0A%0A%09%09%09//%20Set%20the%20base%20href%20for%20the%20created%20document%0A%09%09%09//%20so%20any%20parsed%20elements%20with%20URLs%0A%09%09%09//%20are%20based%20on%20the%20document%27s%20URL%20%28gh-2965%29%0A%09%09%09base%20%3D%20context.createElement%28%20%22base%22%20%29%3B%0A%09%09%09base.href%20%3D%20document.location.href%3B%0A%09%09%09context.head.appendChild%28%20base%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09context%20%3D%20document%3B%0A%09%09%7D%0A%09%7D%0A%0A%09parsed%20%3D%20rsingleTag.exec%28%20data%20%29%3B%0A%09scripts%20%3D%20%21keepScripts%20%26%26%20%5B%5D%3B%0A%0A%09//%20Single%20tag%0A%09if%20%28%20parsed%20%29%20%7B%0A%09%09return%20%5B%20context.createElement%28%20parsed%5B%201%20%5D%20%29%20%5D%3B%0A%09%7D%0A%0A%09parsed%20%3D%20buildFragment%28%20%5B%20data%20%5D%2C%20context%2C%20scripts%20%29%3B%0A%0A%09if%20%28%20scripts%20%26%26%20scripts.length%20%29%20%7B%0A%09%09jQuery%28%20scripts%20%29.remove%28%29%3B%0A%09%7D%0A%0A%09return%20jQuery.merge%28%20%5B%5D%2C%20parsed.childNodes%20%29%3B%0A%7D%3B%0A%0A%0A/%2A%2A%0A%20%2A%20Load%20a%20url%20into%20a%20page%0A%20%2A/%0AjQuery.fn.load%20%3D%20function%28%20url%2C%20params%2C%20callback%20%29%20%7B%0A%09var%20selector%2C%20type%2C%20response%2C%0A%09%09self%20%3D%20this%2C%0A%09%09off%20%3D%20url.indexOf%28%20%22%20%22%20%29%3B%0A%0A%09if%20%28%20off%20%3E%20-1%20%29%20%7B%0A%09%09selector%20%3D%20stripAndCollapse%28%20url.slice%28%20off%20%29%20%29%3B%0A%09%09url%20%3D%20url.slice%28%200%2C%20off%20%29%3B%0A%09%7D%0A%0A%09//%20If%20it%27s%20a%20function%0A%09if%20%28%20isFunction%28%20params%20%29%20%29%20%7B%0A%0A%09%09//%20We%20assume%20that%20it%27s%20the%20callback%0A%09%09callback%20%3D%20params%3B%0A%09%09params%20%3D%20undefined%3B%0A%0A%09//%20Otherwise%2C%20build%20a%20param%20string%0A%09%7D%20else%20if%20%28%20params%20%26%26%20typeof%20params%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09type%20%3D%20%22POST%22%3B%0A%09%7D%0A%0A%09//%20If%20we%20have%20elements%20to%20modify%2C%20make%20the%20request%0A%09if%20%28%20self.length%20%3E%200%20%29%20%7B%0A%09%09jQuery.ajax%28%20%7B%0A%09%09%09url%3A%20url%2C%0A%0A%09%09%09//%20If%20%22type%22%20variable%20is%20undefined%2C%20then%20%22GET%22%20method%20will%20be%20used.%0A%09%09%09//%20Make%20value%20of%20this%20field%20explicit%20since%0A%09%09%09//%20user%20can%20override%20it%20through%20ajaxSetup%20method%0A%09%09%09type%3A%20type%20%7C%7C%20%22GET%22%2C%0A%09%09%09dataType%3A%20%22html%22%2C%0A%09%09%09data%3A%20params%0A%09%09%7D%20%29.done%28%20function%28%20responseText%20%29%20%7B%0A%0A%09%09%09//%20Save%20response%20for%20use%20in%20complete%20callback%0A%09%09%09response%20%3D%20arguments%3B%0A%0A%09%09%09self.html%28%20selector%20%3F%0A%0A%09%09%09%09//%20If%20a%20selector%20was%20specified%2C%20locate%20the%20right%20elements%20in%20a%20dummy%20div%0A%09%09%09%09//%20Exclude%20scripts%20to%20avoid%20IE%20%27Permission%20Denied%27%20errors%0A%09%09%09%09jQuery%28%20%22%3Cdiv%3E%22%20%29.append%28%20jQuery.parseHTML%28%20responseText%20%29%20%29.find%28%20selector%20%29%20%3A%0A%0A%09%09%09%09//%20Otherwise%20use%20the%20full%20result%0A%09%09%09%09responseText%20%29%3B%0A%0A%09%09//%20If%20the%20request%20succeeds%2C%20this%20function%20gets%20%22data%22%2C%20%22status%22%2C%20%22jqXHR%22%0A%09%09//%20but%20they%20are%20ignored%20because%20response%20was%20set%20above.%0A%09%09//%20If%20it%20fails%2C%20this%20function%20gets%20%22jqXHR%22%2C%20%22status%22%2C%20%22error%22%0A%09%09%7D%20%29.always%28%20callback%20%26%26%20function%28%20jqXHR%2C%20status%20%29%20%7B%0A%09%09%09self.each%28%20function%28%29%20%7B%0A%09%09%09%09callback.apply%28%20this%2C%20response%20%7C%7C%20%5B%20jqXHR.responseText%2C%20status%2C%20jqXHR%20%5D%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09return%20this%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.expr.pseudos.animated%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20jQuery.grep%28%20jQuery.timers%2C%20function%28%20fn%20%29%20%7B%0A%09%09return%20elem%20%3D%3D%3D%20fn.elem%3B%0A%09%7D%20%29.length%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.offset%20%3D%20%7B%0A%09setOffset%3A%20function%28%20elem%2C%20options%2C%20i%20%29%20%7B%0A%09%09var%20curPosition%2C%20curLeft%2C%20curCSSTop%2C%20curTop%2C%20curOffset%2C%20curCSSLeft%2C%20calculatePosition%2C%0A%09%09%09position%20%3D%20jQuery.css%28%20elem%2C%20%22position%22%20%29%2C%0A%09%09%09curElem%20%3D%20jQuery%28%20elem%20%29%2C%0A%09%09%09props%20%3D%20%7B%7D%3B%0A%0A%09%09//%20Set%20position%20first%2C%20in-case%20top/left%20are%20set%20even%20on%20static%20elem%0A%09%09if%20%28%20position%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%09%09%09elem.style.position%20%3D%20%22relative%22%3B%0A%09%09%7D%0A%0A%09%09curOffset%20%3D%20curElem.offset%28%29%3B%0A%09%09curCSSTop%20%3D%20jQuery.css%28%20elem%2C%20%22top%22%20%29%3B%0A%09%09curCSSLeft%20%3D%20jQuery.css%28%20elem%2C%20%22left%22%20%29%3B%0A%09%09calculatePosition%20%3D%20%28%20position%20%3D%3D%3D%20%22absolute%22%20%7C%7C%20position%20%3D%3D%3D%20%22fixed%22%20%29%20%26%26%0A%09%09%09%28%20curCSSTop%20%2B%20curCSSLeft%20%29.indexOf%28%20%22auto%22%20%29%20%3E%20-1%3B%0A%0A%09%09//%20Need%20to%20be%20able%20to%20calculate%20position%20if%20either%0A%09%09//%20top%20or%20left%20is%20auto%20and%20position%20is%20either%20absolute%20or%20fixed%0A%09%09if%20%28%20calculatePosition%20%29%20%7B%0A%09%09%09curPosition%20%3D%20curElem.position%28%29%3B%0A%09%09%09curTop%20%3D%20curPosition.top%3B%0A%09%09%09curLeft%20%3D%20curPosition.left%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09curTop%20%3D%20parseFloat%28%20curCSSTop%20%29%20%7C%7C%200%3B%0A%09%09%09curLeft%20%3D%20parseFloat%28%20curCSSLeft%20%29%20%7C%7C%200%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20isFunction%28%20options%20%29%20%29%20%7B%0A%0A%09%09%09//%20Use%20jQuery.extend%20here%20to%20allow%20modification%20of%20coordinates%20argument%20%28gh-1848%29%0A%09%09%09options%20%3D%20options.call%28%20elem%2C%20i%2C%20jQuery.extend%28%20%7B%7D%2C%20curOffset%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20options.top%20%21%3D%20null%20%29%20%7B%0A%09%09%09props.top%20%3D%20%28%20options.top%20-%20curOffset.top%20%29%20%2B%20curTop%3B%0A%09%09%7D%0A%09%09if%20%28%20options.left%20%21%3D%20null%20%29%20%7B%0A%09%09%09props.left%20%3D%20%28%20options.left%20-%20curOffset.left%20%29%20%2B%20curLeft%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%22using%22%20in%20options%20%29%20%7B%0A%09%09%09options.using.call%28%20elem%2C%20props%20%29%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28%20typeof%20props.top%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09props.top%20%2B%3D%20%22px%22%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20typeof%20props.left%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09props.left%20%2B%3D%20%22px%22%3B%0A%09%09%09%7D%0A%09%09%09curElem.css%28%20props%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09//%20offset%28%29%20relates%20an%20element%27s%20border%20box%20to%20the%20document%20origin%0A%09offset%3A%20function%28%20options%20%29%20%7B%0A%0A%09%09//%20Preserve%20chaining%20for%20setter%0A%09%09if%20%28%20arguments.length%20%29%20%7B%0A%09%09%09return%20options%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09%09this%20%3A%0A%09%09%09%09this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09%09jQuery.offset.setOffset%28%20this%2C%20options%2C%20i%20%29%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09var%20rect%2C%20win%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%3B%0A%0A%09%09if%20%28%20%21elem%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20zeros%20for%20disconnected%20and%20hidden%20%28display%3A%20none%29%20elements%20%28gh-2310%29%0A%09%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09%09//%20Running%20getBoundingClientRect%20on%20a%0A%09%09//%20disconnected%20node%20in%20IE%20throws%20an%20error%0A%09%09if%20%28%20%21elem.getClientRects%28%29.length%20%29%20%7B%0A%09%09%09return%20%7B%20top%3A%200%2C%20left%3A%200%20%7D%3B%0A%09%09%7D%0A%0A%09%09//%20Get%20document-relative%20position%20by%20adding%20viewport%20scroll%20to%20viewport-relative%20gBCR%0A%09%09rect%20%3D%20elem.getBoundingClientRect%28%29%3B%0A%09%09win%20%3D%20elem.ownerDocument.defaultView%3B%0A%09%09return%20%7B%0A%09%09%09top%3A%20rect.top%20%2B%20win.pageYOffset%2C%0A%09%09%09left%3A%20rect.left%20%2B%20win.pageXOffset%0A%09%09%7D%3B%0A%09%7D%2C%0A%0A%09//%20position%28%29%20relates%20an%20element%27s%20margin%20box%20to%20its%20offset%20parent%27s%20padding%20box%0A%09//%20This%20corresponds%20to%20the%20behavior%20of%20CSS%20absolute%20positioning%0A%09position%3A%20function%28%29%20%7B%0A%09%09if%20%28%20%21this%5B%200%20%5D%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09var%20offsetParent%2C%20offset%2C%20doc%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%2C%0A%09%09%09parentOffset%20%3D%20%7B%20top%3A%200%2C%20left%3A%200%20%7D%3B%0A%0A%09%09//%20position%3Afixed%20elements%20are%20offset%20from%20the%20viewport%2C%20which%20itself%20always%20has%20zero%20offset%0A%09%09if%20%28%20jQuery.css%28%20elem%2C%20%22position%22%20%29%20%3D%3D%3D%20%22fixed%22%20%29%20%7B%0A%0A%09%09%09//%20Assume%20position%3Afixed%20implies%20availability%20of%20getBoundingClientRect%0A%09%09%09offset%20%3D%20elem.getBoundingClientRect%28%29%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09offset%20%3D%20this.offset%28%29%3B%0A%0A%09%09%09//%20Account%20for%20the%20%2Areal%2A%20offset%20parent%2C%20which%20can%20be%20the%20document%20or%20its%20root%20element%0A%09%09%09//%20when%20a%20statically%20positioned%20element%20is%20identified%0A%09%09%09doc%20%3D%20elem.ownerDocument%3B%0A%09%09%09offsetParent%20%3D%20elem.offsetParent%20%7C%7C%20doc.documentElement%3B%0A%09%09%09while%20%28%20offsetParent%20%26%26%0A%09%09%09%09%28%20offsetParent%20%3D%3D%3D%20doc.body%20%7C%7C%20offsetParent%20%3D%3D%3D%20doc.documentElement%20%29%20%26%26%0A%09%09%09%09jQuery.css%28%20offsetParent%2C%20%22position%22%20%29%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%0A%09%09%09%09offsetParent%20%3D%20offsetParent.parentNode%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20offsetParent%20%26%26%20offsetParent%20%21%3D%3D%20elem%20%26%26%20offsetParent.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09//%20Incorporate%20borders%20into%20its%20offset%2C%20since%20they%20are%20outside%20its%20content%20origin%0A%09%09%09%09parentOffset%20%3D%20jQuery%28%20offsetParent%20%29.offset%28%29%3B%0A%09%09%09%09parentOffset.top%20%2B%3D%20jQuery.css%28%20offsetParent%2C%20%22borderTopWidth%22%2C%20true%20%29%3B%0A%09%09%09%09parentOffset.left%20%2B%3D%20jQuery.css%28%20offsetParent%2C%20%22borderLeftWidth%22%2C%20true%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Subtract%20parent%20offsets%20and%20element%20margins%0A%09%09return%20%7B%0A%09%09%09top%3A%20offset.top%20-%20parentOffset.top%20-%20jQuery.css%28%20elem%2C%20%22marginTop%22%2C%20true%20%29%2C%0A%09%09%09left%3A%20offset.left%20-%20parentOffset.left%20-%20jQuery.css%28%20elem%2C%20%22marginLeft%22%2C%20true%20%29%0A%09%09%7D%3B%0A%09%7D%2C%0A%0A%09//%20This%20method%20will%20return%20documentElement%20in%20the%20following%20cases%3A%0A%09//%201%29%20For%20the%20element%20inside%20the%20iframe%20without%20offsetParent%2C%20this%20method%20will%20return%0A%09//%20%20%20%20documentElement%20of%20the%20parent%20window%0A%09//%202%29%20For%20the%20hidden%20or%20detached%20element%0A%09//%203%29%20For%20body%20or%20html%20element%2C%20i.e.%20in%20case%20of%20the%20html%20node%20-%20it%20will%20return%20itself%0A%09//%0A%09//%20but%20those%20exceptions%20were%20never%20presented%20as%20a%20real%20life%20use-cases%0A%09//%20and%20might%20be%20considered%20as%20more%20preferable%20results.%0A%09//%0A%09//%20This%20logic%2C%20however%2C%20is%20not%20guaranteed%20and%20can%20change%20at%20any%20point%20in%20the%20future%0A%09offsetParent%3A%20function%28%29%20%7B%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%09%09%09var%20offsetParent%20%3D%20this.offsetParent%3B%0A%0A%09%09%09while%20%28%20offsetParent%20%26%26%20jQuery.css%28%20offsetParent%2C%20%22position%22%20%29%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%09%09%09%09offsetParent%20%3D%20offsetParent.offsetParent%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20offsetParent%20%7C%7C%20documentElement%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Create%20scrollLeft%20and%20scrollTop%20methods%0AjQuery.each%28%20%7B%20scrollLeft%3A%20%22pageXOffset%22%2C%20scrollTop%3A%20%22pageYOffset%22%20%7D%2C%20function%28%20method%2C%20prop%20%29%20%7B%0A%09var%20top%20%3D%20%22pageYOffset%22%20%3D%3D%3D%20prop%3B%0A%0A%09jQuery.fn%5B%20method%20%5D%20%3D%20function%28%20val%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20method%2C%20val%20%29%20%7B%0A%0A%09%09%09//%20Coalesce%20documents%20and%20windows%0A%09%09%09var%20win%3B%0A%09%09%09if%20%28%20isWindow%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09win%20%3D%20elem%3B%0A%09%09%09%7D%20else%20if%20%28%20elem.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09win%20%3D%20elem.defaultView%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20val%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20win%20%3F%20win%5B%20prop%20%5D%20%3A%20elem%5B%20method%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20win%20%29%20%7B%0A%09%09%09%09win.scrollTo%28%0A%09%09%09%09%09%21top%20%3F%20val%20%3A%20win.pageXOffset%2C%0A%09%09%09%09%09top%20%3F%20val%20%3A%20win.pageYOffset%0A%09%09%09%09%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09elem%5B%20method%20%5D%20%3D%20val%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20method%2C%20val%2C%20arguments.length%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Support%3A%20Safari%20%3C%3D7%20-%209.1%2C%20Chrome%20%3C%3D37%20-%2049%0A//%20Add%20the%20top/left%20cssHooks%20using%20jQuery.fn.position%0A//%20Webkit%20bug%3A%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D29084%0A//%20Blink%20bug%3A%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D589347%0A//%20getComputedStyle%20returns%20percent%20when%20specified%20for%20top/left/bottom/right%3B%0A//%20rather%20than%20make%20the%20css%20module%20depend%20on%20the%20offset%20module%2C%20just%20check%20for%20it%20here%0AjQuery.each%28%20%5B%20%22top%22%2C%20%22left%22%20%5D%2C%20function%28%20_i%2C%20prop%20%29%20%7B%0A%09jQuery.cssHooks%5B%20prop%20%5D%20%3D%20addGetHookIf%28%20support.pixelPosition%2C%0A%09%09function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09%09if%20%28%20computed%20%29%20%7B%0A%09%09%09%09computed%20%3D%20curCSS%28%20elem%2C%20prop%20%29%3B%0A%0A%09%09%09%09//%20If%20curCSS%20returns%20percentage%2C%20fallback%20to%20offset%0A%09%09%09%09return%20rnumnonpx.test%28%20computed%20%29%20%3F%0A%09%09%09%09%09jQuery%28%20elem%20%29.position%28%29%5B%20prop%20%5D%20%2B%20%22px%22%20%3A%0A%09%09%09%09%09computed%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%29%3B%0A%7D%20%29%3B%0A%0A%0A//%20Create%20innerHeight%2C%20innerWidth%2C%20height%2C%20width%2C%20outerHeight%20and%20outerWidth%20methods%0AjQuery.each%28%20%7B%20Height%3A%20%22height%22%2C%20Width%3A%20%22width%22%20%7D%2C%20function%28%20name%2C%20type%20%29%20%7B%0A%09jQuery.each%28%20%7B%20padding%3A%20%22inner%22%20%2B%20name%2C%20content%3A%20type%2C%20%22%22%3A%20%22outer%22%20%2B%20name%20%7D%2C%0A%09%09function%28%20defaultExtra%2C%20funcName%20%29%20%7B%0A%0A%09%09//%20Margin%20is%20only%20for%20outerHeight%2C%20outerWidth%0A%09%09jQuery.fn%5B%20funcName%20%5D%20%3D%20function%28%20margin%2C%20value%20%29%20%7B%0A%09%09%09var%20chainable%20%3D%20arguments.length%20%26%26%20%28%20defaultExtra%20%7C%7C%20typeof%20margin%20%21%3D%3D%20%22boolean%22%20%29%2C%0A%09%09%09%09extra%20%3D%20defaultExtra%20%7C%7C%20%28%20margin%20%3D%3D%3D%20true%20%7C%7C%20value%20%3D%3D%3D%20true%20%3F%20%22margin%22%20%3A%20%22border%22%20%29%3B%0A%0A%09%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20type%2C%20value%20%29%20%7B%0A%09%09%09%09var%20doc%3B%0A%0A%09%09%09%09if%20%28%20isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20%24%28%20window%20%29.outerWidth/Height%20return%20w/h%20including%20scrollbars%20%28gh-1729%29%0A%09%09%09%09%09return%20funcName.indexOf%28%20%22outer%22%20%29%20%3D%3D%3D%200%20%3F%0A%09%09%09%09%09%09elem%5B%20%22inner%22%20%2B%20name%20%5D%20%3A%0A%09%09%09%09%09%09elem.document.documentElement%5B%20%22client%22%20%2B%20name%20%5D%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Get%20document%20width%20or%20height%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09doc%20%3D%20elem.documentElement%3B%0A%0A%09%09%09%09%09//%20Either%20scroll%5BWidth/Height%5D%20or%20offset%5BWidth/Height%5D%20or%20client%5BWidth/Height%5D%2C%0A%09%09%09%09%09//%20whichever%20is%20greatest%0A%09%09%09%09%09return%20Math.max%28%0A%09%09%09%09%09%09elem.body%5B%20%22scroll%22%20%2B%20name%20%5D%2C%20doc%5B%20%22scroll%22%20%2B%20name%20%5D%2C%0A%09%09%09%09%09%09elem.body%5B%20%22offset%22%20%2B%20name%20%5D%2C%20doc%5B%20%22offset%22%20%2B%20name%20%5D%2C%0A%09%09%09%09%09%09doc%5B%20%22client%22%20%2B%20name%20%5D%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20value%20%3D%3D%3D%20undefined%20%3F%0A%0A%09%09%09%09%09//%20Get%20width%20or%20height%20on%20the%20element%2C%20requesting%20but%20not%20forcing%20parseFloat%0A%09%09%09%09%09jQuery.css%28%20elem%2C%20type%2C%20extra%20%29%20%3A%0A%0A%09%09%09%09%09//%20Set%20width%20or%20height%20on%20the%20element%0A%09%09%09%09%09jQuery.style%28%20elem%2C%20type%2C%20value%2C%20extra%20%29%3B%0A%09%09%09%7D%2C%20type%2C%20chainable%20%3F%20margin%20%3A%20undefined%2C%20chainable%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%20%29%3B%0A%0A%0AjQuery.each%28%20%5B%0A%09%22ajaxStart%22%2C%0A%09%22ajaxStop%22%2C%0A%09%22ajaxComplete%22%2C%0A%09%22ajaxError%22%2C%0A%09%22ajaxSuccess%22%2C%0A%09%22ajaxSend%22%0A%5D%2C%20function%28%20_i%2C%20type%20%29%20%7B%0A%09jQuery.fn%5B%20type%20%5D%20%3D%20function%28%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20type%2C%20fn%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09bind%3A%20function%28%20types%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20types%2C%20null%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09unbind%3A%20function%28%20types%2C%20fn%20%29%20%7B%0A%09%09return%20this.off%28%20types%2C%20null%2C%20fn%20%29%3B%0A%09%7D%2C%0A%0A%09delegate%3A%20function%28%20selector%2C%20types%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09undelegate%3A%20function%28%20selector%2C%20types%2C%20fn%20%29%20%7B%0A%0A%09%09//%20%28%20namespace%20%29%20or%20%28%20selector%2C%20types%20%5B%2C%20fn%5D%20%29%0A%09%09return%20arguments.length%20%3D%3D%3D%201%20%3F%0A%09%09%09this.off%28%20selector%2C%20%22%2A%2A%22%20%29%20%3A%0A%09%09%09this.off%28%20types%2C%20selector%20%7C%7C%20%22%2A%2A%22%2C%20fn%20%29%3B%0A%09%7D%2C%0A%0A%09hover%3A%20function%28%20fnOver%2C%20fnOut%20%29%20%7B%0A%09%09return%20this.mouseenter%28%20fnOver%20%29.mouseleave%28%20fnOut%20%7C%7C%20fnOver%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%28%20%22blur%20focus%20focusin%20focusout%20resize%20scroll%20click%20dblclick%20%22%20%2B%0A%09%22mousedown%20mouseup%20mousemove%20mouseover%20mouseout%20mouseenter%20mouseleave%20%22%20%2B%0A%09%22change%20select%20submit%20keydown%20keypress%20keyup%20contextmenu%22%20%29.split%28%20%22%20%22%20%29%2C%0A%09function%28%20_i%2C%20name%20%29%20%7B%0A%0A%09%09//%20Handle%20event%20binding%0A%09%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20data%2C%20fn%20%29%20%7B%0A%09%09%09return%20arguments.length%20%3E%200%20%3F%0A%09%09%09%09this.on%28%20name%2C%20null%2C%20data%2C%20fn%20%29%20%3A%0A%09%09%09%09this.trigger%28%20name%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%0A%0A%0A%0A//%20Support%3A%20Android%20%3C%3D4.0%20only%0A//%20Make%20sure%20we%20trim%20BOM%20and%20NBSP%0Avar%20rtrim%20%3D%20/%5E%5B%5Cs%5CuFEFF%5CxA0%5D%2B%7C%5B%5Cs%5CuFEFF%5CxA0%5D%2B%24/g%3B%0A%0A//%20Bind%20a%20function%20to%20a%20context%2C%20optionally%20partially%20applying%20any%0A//%20arguments.%0A//%20jQuery.proxy%20is%20deprecated%20to%20promote%20standards%20%28specifically%20Function%23bind%29%0A//%20However%2C%20it%20is%20not%20slated%20for%20removal%20any%20time%20soon%0AjQuery.proxy%20%3D%20function%28%20fn%2C%20context%20%29%20%7B%0A%09var%20tmp%2C%20args%2C%20proxy%3B%0A%0A%09if%20%28%20typeof%20context%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09tmp%20%3D%20fn%5B%20context%20%5D%3B%0A%09%09context%20%3D%20fn%3B%0A%09%09fn%20%3D%20tmp%3B%0A%09%7D%0A%0A%09//%20Quick%20check%20to%20determine%20if%20target%20is%20callable%2C%20in%20the%20spec%0A%09//%20this%20throws%20a%20TypeError%2C%20but%20we%20will%20just%20return%20undefined.%0A%09if%20%28%20%21isFunction%28%20fn%20%29%20%29%20%7B%0A%09%09return%20undefined%3B%0A%09%7D%0A%0A%09//%20Simulated%20bind%0A%09args%20%3D%20slice.call%28%20arguments%2C%202%20%29%3B%0A%09proxy%20%3D%20function%28%29%20%7B%0A%09%09return%20fn.apply%28%20context%20%7C%7C%20this%2C%20args.concat%28%20slice.call%28%20arguments%20%29%20%29%20%29%3B%0A%09%7D%3B%0A%0A%09//%20Set%20the%20guid%20of%20unique%20handler%20to%20the%20same%20of%20original%20handler%2C%20so%20it%20can%20be%20removed%0A%09proxy.guid%20%3D%20fn.guid%20%3D%20fn.guid%20%7C%7C%20jQuery.guid%2B%2B%3B%0A%0A%09return%20proxy%3B%0A%7D%3B%0A%0AjQuery.holdReady%20%3D%20function%28%20hold%20%29%20%7B%0A%09if%20%28%20hold%20%29%20%7B%0A%09%09jQuery.readyWait%2B%2B%3B%0A%09%7D%20else%20%7B%0A%09%09jQuery.ready%28%20true%20%29%3B%0A%09%7D%0A%7D%3B%0AjQuery.isArray%20%3D%20Array.isArray%3B%0AjQuery.parseJSON%20%3D%20JSON.parse%3B%0AjQuery.nodeName%20%3D%20nodeName%3B%0AjQuery.isFunction%20%3D%20isFunction%3B%0AjQuery.isWindow%20%3D%20isWindow%3B%0AjQuery.camelCase%20%3D%20camelCase%3B%0AjQuery.type%20%3D%20toType%3B%0A%0AjQuery.now%20%3D%20Date.now%3B%0A%0AjQuery.isNumeric%20%3D%20function%28%20obj%20%29%20%7B%0A%0A%09//%20As%20of%20jQuery%203.0%2C%20isNumeric%20is%20limited%20to%0A%09//%20strings%20and%20numbers%20%28primitives%20or%20objects%29%0A%09//%20that%20can%20be%20coerced%20to%20finite%20numbers%20%28gh-2662%29%0A%09var%20type%20%3D%20jQuery.type%28%20obj%20%29%3B%0A%09return%20%28%20type%20%3D%3D%3D%20%22number%22%20%7C%7C%20type%20%3D%3D%3D%20%22string%22%20%29%20%26%26%0A%0A%09%09//%20parseFloat%20NaNs%20numeric-cast%20false%20positives%20%28%22%22%29%0A%09%09//%20...but%20misinterprets%20leading-number%20strings%2C%20particularly%20hex%20literals%20%28%220x...%22%29%0A%09%09//%20subtraction%20forces%20infinities%20to%20NaN%0A%09%09%21isNaN%28%20obj%20-%20parseFloat%28%20obj%20%29%20%29%3B%0A%7D%3B%0A%0AjQuery.trim%20%3D%20function%28%20text%20%29%20%7B%0A%09return%20text%20%3D%3D%20null%20%3F%0A%09%09%22%22%20%3A%0A%09%09%28%20text%20%2B%20%22%22%20%29.replace%28%20rtrim%2C%20%22%22%20%29%3B%0A%7D%3B%0A%0A%0A%0A//%20Register%20as%20a%20named%20AMD%20module%2C%20since%20jQuery%20can%20be%20concatenated%20with%20other%0A//%20files%20that%20may%20use%20define%2C%20but%20not%20via%20a%20proper%20concatenation%20script%20that%0A//%20understands%20anonymous%20AMD%20modules.%20A%20named%20AMD%20is%20safest%20and%20most%20robust%0A//%20way%20to%20register.%20Lowercase%20jquery%20is%20used%20because%20AMD%20module%20names%20are%0A//%20derived%20from%20file%20names%2C%20and%20jQuery%20is%20normally%20delivered%20in%20a%20lowercase%0A//%20file%20name.%20Do%20this%20after%20creating%20the%20global%20so%20that%20if%20an%20AMD%20module%20wants%0A//%20to%20call%20noConflict%20to%20hide%20this%20version%20of%20jQuery%2C%20it%20will%20work.%0A%0A//%20Note%20that%20for%20maximum%20portability%2C%20libraries%20that%20are%20not%20jQuery%20should%0A//%20declare%20themselves%20as%20anonymous%20modules%2C%20and%20avoid%20setting%20a%20global%20if%20an%0A//%20AMD%20loader%20is%20present.%20jQuery%20is%20a%20special%20case.%20For%20more%20information%2C%20see%0A//%20https%3A//github.com/jrburke/requirejs/wiki/Updating-existing-libraries%23wiki-anon%0A%0Aif%20%28%20typeof%20define%20%3D%3D%3D%20%22function%22%20%26%26%20define.amd%20%29%20%7B%0A%09define%28%20%22jquery%22%2C%20%5B%5D%2C%20function%28%29%20%7B%0A%09%09return%20jQuery%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A%0A%0A%0Avar%0A%0A%09//%20Map%20over%20jQuery%20in%20case%20of%20overwrite%0A%09_jQuery%20%3D%20window.jQuery%2C%0A%0A%09//%20Map%20over%20the%20%24%20in%20case%20of%20overwrite%0A%09_%24%20%3D%20window.%24%3B%0A%0AjQuery.noConflict%20%3D%20function%28%20deep%20%29%20%7B%0A%09if%20%28%20window.%24%20%3D%3D%3D%20jQuery%20%29%20%7B%0A%09%09window.%24%20%3D%20_%24%3B%0A%09%7D%0A%0A%09if%20%28%20deep%20%26%26%20window.jQuery%20%3D%3D%3D%20jQuery%20%29%20%7B%0A%09%09window.jQuery%20%3D%20_jQuery%3B%0A%09%7D%0A%0A%09return%20jQuery%3B%0A%7D%3B%0A%0A//%20Expose%20jQuery%20and%20%24%20identifiers%2C%20even%20in%20AMD%0A//%20%28%237102%23comment%3A10%2C%20https%3A//github.com/jquery/jquery/pull/557%29%0A//%20and%20CommonJS%20for%20browser%20emulators%20%28%2313566%29%0Aif%20%28%20typeof%20noGlobal%20%3D%3D%3D%20%22undefined%22%20%29%20%7B%0A%09window.jQuery%20%3D%20window.%24%20%3D%20jQuery%3B%0A%7D%0A%0A%0A%0A%0Areturn%20jQuery%3B%0A%7D%20%29%3B%0A"></script><!--URL:_static/jquery.js-->
-<script src="data:application/javascript,//%20%20%20%20%20Underscore.js%201.9.1%0A//%20%20%20%20%20http%3A//underscorejs.org%0A//%20%20%20%20%20%28c%29%202009-2018%20Jeremy%20Ashkenas%2C%20DocumentCloud%20and%20Investigative%20Reporters%20%26%20Editors%0A//%20%20%20%20%20Underscore%20may%20be%20freely%20distributed%20under%20the%20MIT%20license.%0A%0A%28function%28%29%20%7B%0A%0A%20%20//%20Baseline%20setup%0A%20%20//%20--------------%0A%0A%20%20//%20Establish%20the%20root%20object%2C%20%60window%60%20%28%60self%60%29%20in%20the%20browser%2C%20%60global%60%0A%20%20//%20on%20the%20server%2C%20or%20%60this%60%20in%20some%20virtual%20machines.%20We%20use%20%60self%60%0A%20%20//%20instead%20of%20%60window%60%20for%20%60WebWorker%60%20support.%0A%20%20var%20root%20%3D%20typeof%20self%20%3D%3D%20%27object%27%20%26%26%20self.self%20%3D%3D%3D%20self%20%26%26%20self%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20typeof%20global%20%3D%3D%20%27object%27%20%26%26%20global.global%20%3D%3D%3D%20global%20%26%26%20global%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20this%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%7D%3B%0A%0A%20%20//%20Save%20the%20previous%20value%20of%20the%20%60_%60%20variable.%0A%20%20var%20previousUnderscore%20%3D%20root._%3B%0A%0A%20%20//%20Save%20bytes%20in%20the%20minified%20%28but%20not%20gzipped%29%20version%3A%0A%20%20var%20ArrayProto%20%3D%20Array.prototype%2C%20ObjProto%20%3D%20Object.prototype%3B%0A%20%20var%20SymbolProto%20%3D%20typeof%20Symbol%20%21%3D%3D%20%27undefined%27%20%3F%20Symbol.prototype%20%3A%20null%3B%0A%0A%20%20//%20Create%20quick%20reference%20variables%20for%20speed%20access%20to%20core%20prototypes.%0A%20%20var%20push%20%3D%20ArrayProto.push%2C%0A%20%20%20%20%20%20slice%20%3D%20ArrayProto.slice%2C%0A%20%20%20%20%20%20toString%20%3D%20ObjProto.toString%2C%0A%20%20%20%20%20%20hasOwnProperty%20%3D%20ObjProto.hasOwnProperty%3B%0A%0A%20%20//%20All%20%2A%2AECMAScript%205%2A%2A%20native%20function%20implementations%20that%20we%20hope%20to%20use%0A%20%20//%20are%20declared%20here.%0A%20%20var%20nativeIsArray%20%3D%20Array.isArray%2C%0A%20%20%20%20%20%20nativeKeys%20%3D%20Object.keys%2C%0A%20%20%20%20%20%20nativeCreate%20%3D%20Object.create%3B%0A%0A%20%20//%20Naked%20function%20reference%20for%20surrogate-prototype-swapping.%0A%20%20var%20Ctor%20%3D%20function%28%29%7B%7D%3B%0A%0A%20%20//%20Create%20a%20safe%20reference%20to%20the%20Underscore%20object%20for%20use%20below.%0A%20%20var%20_%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20instanceof%20_%29%20return%20obj%3B%0A%20%20%20%20if%20%28%21%28this%20instanceof%20_%29%29%20return%20new%20_%28obj%29%3B%0A%20%20%20%20this._wrapped%20%3D%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Export%20the%20Underscore%20object%20for%20%2A%2ANode.js%2A%2A%2C%20with%0A%20%20//%20backwards-compatibility%20for%20their%20old%20module%20API.%20If%20we%27re%20in%0A%20%20//%20the%20browser%2C%20add%20%60_%60%20as%20a%20global%20object.%0A%20%20//%20%28%60nodeType%60%20is%20checked%20to%20ensure%20that%20%60module%60%0A%20%20//%20and%20%60exports%60%20are%20not%20HTML%20elements.%29%0A%20%20if%20%28typeof%20exports%20%21%3D%20%27undefined%27%20%26%26%20%21exports.nodeType%29%20%7B%0A%20%20%20%20if%20%28typeof%20module%20%21%3D%20%27undefined%27%20%26%26%20%21module.nodeType%20%26%26%20module.exports%29%20%7B%0A%20%20%20%20%20%20exports%20%3D%20module.exports%20%3D%20_%3B%0A%20%20%20%20%7D%0A%20%20%20%20exports._%20%3D%20_%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20root._%20%3D%20_%3B%0A%20%20%7D%0A%0A%20%20//%20Current%20version.%0A%20%20_.VERSION%20%3D%20%271.9.1%27%3B%0A%0A%20%20//%20Internal%20function%20that%20returns%20an%20efficient%20%28for%20current%20engines%29%20version%0A%20%20//%20of%20the%20passed-in%20callback%2C%20to%20be%20repeatedly%20applied%20in%20other%20Underscore%0A%20%20//%20functions.%0A%20%20var%20optimizeCb%20%3D%20function%28func%2C%20context%2C%20argCount%29%20%7B%0A%20%20%20%20if%20%28context%20%3D%3D%3D%20void%200%29%20return%20func%3B%0A%20%20%20%20switch%20%28argCount%20%3D%3D%20null%20%3F%203%20%3A%20argCount%29%20%7B%0A%20%20%20%20%20%20case%201%3A%20return%20function%28value%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20value%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20//%20The%202-argument%20case%20is%20omitted%20because%20we%E2%80%99re%20not%20using%20it.%0A%20%20%20%20%20%20case%203%3A%20return%20function%28value%2C%20index%2C%20collection%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20value%2C%20index%2C%20collection%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20case%204%3A%20return%20function%28accumulator%2C%20value%2C%20index%2C%20collection%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20accumulator%2C%20value%2C%20index%2C%20collection%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20func.apply%28context%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20var%20builtinIteratee%3B%0A%0A%20%20//%20An%20internal%20function%20to%20generate%20callbacks%20that%20can%20be%20applied%20to%20each%0A%20%20//%20element%20in%20a%20collection%2C%20returning%20the%20desired%20result%20%E2%80%94%20either%20%60identity%60%2C%0A%20%20//%20an%20arbitrary%20callback%2C%20a%20property%20matcher%2C%20or%20a%20property%20accessor.%0A%20%20var%20cb%20%3D%20function%28value%2C%20context%2C%20argCount%29%20%7B%0A%20%20%20%20if%20%28_.iteratee%20%21%3D%3D%20builtinIteratee%29%20return%20_.iteratee%28value%2C%20context%29%3B%0A%20%20%20%20if%20%28value%20%3D%3D%20null%29%20return%20_.identity%3B%0A%20%20%20%20if%20%28_.isFunction%28value%29%29%20return%20optimizeCb%28value%2C%20context%2C%20argCount%29%3B%0A%20%20%20%20if%20%28_.isObject%28value%29%20%26%26%20%21_.isArray%28value%29%29%20return%20_.matcher%28value%29%3B%0A%20%20%20%20return%20_.property%28value%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20External%20wrapper%20for%20our%20callback%20generator.%20Users%20may%20customize%0A%20%20//%20%60_.iteratee%60%20if%20they%20want%20additional%20predicate/iteratee%20shorthand%20styles.%0A%20%20//%20This%20abstraction%20hides%20the%20internal-only%20argCount%20argument.%0A%20%20_.iteratee%20%3D%20builtinIteratee%20%3D%20function%28value%2C%20context%29%20%7B%0A%20%20%20%20return%20cb%28value%2C%20context%2C%20Infinity%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Some%20functions%20take%20a%20variable%20number%20of%20arguments%2C%20or%20a%20few%20expected%0A%20%20//%20arguments%20at%20the%20beginning%20and%20then%20a%20variable%20number%20of%20values%20to%20operate%0A%20%20//%20on.%20This%20helper%20accumulates%20all%20remaining%20arguments%20past%20the%20function%E2%80%99s%0A%20%20//%20argument%20length%20%28or%20an%20explicit%20%60startIndex%60%29%2C%20into%20an%20array%20that%20becomes%0A%20%20//%20the%20last%20argument.%20Similar%20to%20ES6%E2%80%99s%20%22rest%20parameter%22.%0A%20%20var%20restArguments%20%3D%20function%28func%2C%20startIndex%29%20%7B%0A%20%20%20%20startIndex%20%3D%20startIndex%20%3D%3D%20null%20%3F%20func.length%20-%201%20%3A%20%2BstartIndex%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20length%20%3D%20Math.max%28arguments.length%20-%20startIndex%2C%200%29%2C%0A%20%20%20%20%20%20%20%20%20%20rest%20%3D%20Array%28length%29%2C%0A%20%20%20%20%20%20%20%20%20%20index%20%3D%200%3B%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20rest%5Bindex%5D%20%3D%20arguments%5Bindex%20%2B%20startIndex%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20switch%20%28startIndex%29%20%7B%0A%20%20%20%20%20%20%20%20case%200%3A%20return%20func.call%28this%2C%20rest%29%3B%0A%20%20%20%20%20%20%20%20case%201%3A%20return%20func.call%28this%2C%20arguments%5B0%5D%2C%20rest%29%3B%0A%20%20%20%20%20%20%20%20case%202%3A%20return%20func.call%28this%2C%20arguments%5B0%5D%2C%20arguments%5B1%5D%2C%20rest%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20args%20%3D%20Array%28startIndex%20%2B%201%29%3B%0A%20%20%20%20%20%20for%20%28index%20%3D%200%3B%20index%20%3C%20startIndex%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20args%5Bindex%5D%20%3D%20arguments%5Bindex%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20args%5BstartIndex%5D%20%3D%20rest%3B%0A%20%20%20%20%20%20return%20func.apply%28this%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20for%20creating%20a%20new%20object%20that%20inherits%20from%20another.%0A%20%20var%20baseCreate%20%3D%20function%28prototype%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28prototype%29%29%20return%20%7B%7D%3B%0A%20%20%20%20if%20%28nativeCreate%29%20return%20nativeCreate%28prototype%29%3B%0A%20%20%20%20Ctor.prototype%20%3D%20prototype%3B%0A%20%20%20%20var%20result%20%3D%20new%20Ctor%3B%0A%20%20%20%20Ctor.prototype%20%3D%20null%3B%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20var%20shallowProperty%20%3D%20function%28key%29%20%7B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20obj%20%3D%3D%20null%20%3F%20void%200%20%3A%20obj%5Bkey%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20var%20has%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20return%20obj%20%21%3D%20null%20%26%26%20hasOwnProperty.call%28obj%2C%20path%29%3B%0A%20%20%7D%0A%0A%20%20var%20deepGet%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20void%200%3B%0A%20%20%20%20%20%20obj%20%3D%20obj%5Bpath%5Bi%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20length%20%3F%20obj%20%3A%20void%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Helper%20for%20collection%20methods%20to%20determine%20whether%20a%20collection%0A%20%20//%20should%20be%20iterated%20as%20an%20array%20or%20as%20an%20object.%0A%20%20//%20Related%3A%20http%3A//people.mozilla.org/~jorendorff/es6-draft.html%23sec-tolength%0A%20%20//%20Avoids%20a%20very%20nasty%20iOS%208%20JIT%20bug%20on%20ARM-64.%20%232094%0A%20%20var%20MAX_ARRAY_INDEX%20%3D%20Math.pow%282%2C%2053%29%20-%201%3B%0A%20%20var%20getLength%20%3D%20shallowProperty%28%27length%27%29%3B%0A%20%20var%20isArrayLike%20%3D%20function%28collection%29%20%7B%0A%20%20%20%20var%20length%20%3D%20getLength%28collection%29%3B%0A%20%20%20%20return%20typeof%20length%20%3D%3D%20%27number%27%20%26%26%20length%20%3E%3D%200%20%26%26%20length%20%3C%3D%20MAX_ARRAY_INDEX%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Collection%20Functions%0A%20%20//%20--------------------%0A%0A%20%20//%20The%20cornerstone%2C%20an%20%60each%60%20implementation%2C%20aka%20%60forEach%60.%0A%20%20//%20Handles%20raw%20objects%20in%20addition%20to%20array-likes.%20Treats%20all%0A%20%20//%20sparse%20array-likes%20as%20if%20they%20were%20dense.%0A%20%20_.each%20%3D%20_.forEach%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20i%2C%20length%3B%0A%20%20%20%20if%20%28isArrayLike%28obj%29%29%20%7B%0A%20%20%20%20%20%20for%20%28i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20iteratee%28obj%5Bi%5D%2C%20i%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20%20%20for%20%28i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20iteratee%28obj%5Bkeys%5Bi%5D%5D%2C%20keys%5Bi%5D%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20results%20of%20applying%20the%20iteratee%20to%20each%20element.%0A%20%20_.map%20%3D%20_.collect%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%2C%0A%20%20%20%20%20%20%20%20results%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20results%5Bindex%5D%20%3D%20iteratee%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20reducing%20function%20iterating%20left%20or%20right.%0A%20%20var%20createReduce%20%3D%20function%28dir%29%20%7B%0A%20%20%20%20//%20Wrap%20code%20that%20reassigns%20argument%20variables%20in%20a%20separate%20function%20than%0A%20%20%20%20//%20the%20one%20that%20accesses%20%60arguments.length%60%20to%20avoid%20a%20perf%20hit.%20%28%231991%29%0A%20%20%20%20var%20reducer%20%3D%20function%28obj%2C%20iteratee%2C%20memo%2C%20initial%29%20%7B%0A%20%20%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%2C%0A%20%20%20%20%20%20%20%20%20%20index%20%3D%20dir%20%3E%200%20%3F%200%20%3A%20length%20-%201%3B%0A%20%20%20%20%20%20if%20%28%21initial%29%20%7B%0A%20%20%20%20%20%20%20%20memo%20%3D%20obj%5Bkeys%20%3F%20keys%5Bindex%5D%20%3A%20index%5D%3B%0A%20%20%20%20%20%20%20%20index%20%2B%3D%20dir%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3E%3D%200%20%26%26%20index%20%3C%20length%3B%20index%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20%20%20memo%20%3D%20iteratee%28memo%2C%20obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20memo%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20function%28obj%2C%20iteratee%2C%20memo%2C%20context%29%20%7B%0A%20%20%20%20%20%20var%20initial%20%3D%20arguments.length%20%3E%3D%203%3B%0A%20%20%20%20%20%20return%20reducer%28obj%2C%20optimizeCb%28iteratee%2C%20context%2C%204%29%2C%20memo%2C%20initial%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20%2A%2AReduce%2A%2A%20builds%20up%20a%20single%20result%20from%20a%20list%20of%20values%2C%20aka%20%60inject%60%2C%0A%20%20//%20or%20%60foldl%60.%0A%20%20_.reduce%20%3D%20_.foldl%20%3D%20_.inject%20%3D%20createReduce%281%29%3B%0A%0A%20%20//%20The%20right-associative%20version%20of%20reduce%2C%20also%20known%20as%20%60foldr%60.%0A%20%20_.reduceRight%20%3D%20_.foldr%20%3D%20createReduce%28-1%29%3B%0A%0A%20%20//%20Return%20the%20first%20value%20which%20passes%20a%20truth%20test.%20Aliased%20as%20%60detect%60.%0A%20%20_.find%20%3D%20_.detect%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20var%20keyFinder%20%3D%20isArrayLike%28obj%29%20%3F%20_.findIndex%20%3A%20_.findKey%3B%0A%20%20%20%20var%20key%20%3D%20keyFinder%28obj%2C%20predicate%2C%20context%29%3B%0A%20%20%20%20if%20%28key%20%21%3D%3D%20void%200%20%26%26%20key%20%21%3D%3D%20-1%29%20return%20obj%5Bkey%5D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20all%20the%20elements%20that%20pass%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60select%60.%0A%20%20_.filter%20%3D%20_.select%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20_.each%28obj%2C%20function%28value%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20if%20%28predicate%28value%2C%20index%2C%20list%29%29%20results.push%28value%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20all%20the%20elements%20for%20which%20a%20truth%20test%20fails.%0A%20%20_.reject%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20return%20_.filter%28obj%2C%20_.negate%28cb%28predicate%29%29%2C%20context%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20whether%20all%20of%20the%20elements%20match%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60all%60.%0A%20%20_.every%20%3D%20_.all%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20if%20%28%21predicate%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%29%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20if%20at%20least%20one%20element%20in%20the%20object%20matches%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60any%60.%0A%20%20_.some%20%3D%20_.any%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20if%20%28predicate%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%29%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20if%20the%20array%20or%20object%20contains%20a%20given%20item%20%28using%20%60%3D%3D%3D%60%29.%0A%20%20//%20Aliased%20as%20%60includes%60%20and%20%60include%60.%0A%20%20_.contains%20%3D%20_.includes%20%3D%20_.include%20%3D%20function%28obj%2C%20item%2C%20fromIndex%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28%21isArrayLike%28obj%29%29%20obj%20%3D%20_.values%28obj%29%3B%0A%20%20%20%20if%20%28typeof%20fromIndex%20%21%3D%20%27number%27%20%7C%7C%20guard%29%20fromIndex%20%3D%200%3B%0A%20%20%20%20return%20_.indexOf%28obj%2C%20item%2C%20fromIndex%29%20%3E%3D%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invoke%20a%20method%20%28with%20arguments%29%20on%20every%20item%20in%20a%20collection.%0A%20%20_.invoke%20%3D%20restArguments%28function%28obj%2C%20path%2C%20args%29%20%7B%0A%20%20%20%20var%20contextPath%2C%20func%3B%0A%20%20%20%20if%20%28_.isFunction%28path%29%29%20%7B%0A%20%20%20%20%20%20func%20%3D%20path%3B%0A%20%20%20%20%7D%20else%20if%20%28_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20contextPath%20%3D%20path.slice%280%2C%20-1%29%3B%0A%20%20%20%20%20%20path%20%3D%20path%5Bpath.length%20-%201%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20_.map%28obj%2C%20function%28context%29%20%7B%0A%20%20%20%20%20%20var%20method%20%3D%20func%3B%0A%20%20%20%20%20%20if%20%28%21method%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28contextPath%20%26%26%20contextPath.length%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20context%20%3D%20deepGet%28context%2C%20contextPath%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28context%20%3D%3D%20null%29%20return%20void%200%3B%0A%20%20%20%20%20%20%20%20method%20%3D%20context%5Bpath%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20method%20%3D%3D%20null%20%3F%20method%20%3A%20method.apply%28context%2C%20args%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60map%60%3A%20fetching%20a%20property.%0A%20%20_.pluck%20%3D%20function%28obj%2C%20key%29%20%7B%0A%20%20%20%20return%20_.map%28obj%2C%20_.property%28key%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60filter%60%3A%20selecting%20only%20objects%0A%20%20//%20containing%20specific%20%60key%3Avalue%60%20pairs.%0A%20%20_.where%20%3D%20function%28obj%2C%20attrs%29%20%7B%0A%20%20%20%20return%20_.filter%28obj%2C%20_.matcher%28attrs%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60find%60%3A%20getting%20the%20first%20object%0A%20%20//%20containing%20specific%20%60key%3Avalue%60%20pairs.%0A%20%20_.findWhere%20%3D%20function%28obj%2C%20attrs%29%20%7B%0A%20%20%20%20return%20_.find%28obj%2C%20_.matcher%28attrs%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20maximum%20element%20%28or%20element-based%20computation%29.%0A%20%20_.max%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20result%20%3D%20-Infinity%2C%20lastComputed%20%3D%20-Infinity%2C%0A%20%20%20%20%20%20%20%20value%2C%20computed%3B%0A%20%20%20%20if%20%28iteratee%20%3D%3D%20null%20%7C%7C%20typeof%20iteratee%20%3D%3D%20%27number%27%20%26%26%20typeof%20obj%5B0%5D%20%21%3D%20%27object%27%20%26%26%20obj%20%21%3D%20null%29%20%7B%0A%20%20%20%20%20%20obj%20%3D%20isArrayLike%28obj%29%20%3F%20obj%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20obj%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28value%20%21%3D%20null%20%26%26%20value%20%3E%20result%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28v%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%28v%2C%20index%2C%20list%29%3B%0A%20%20%20%20%20%20%20%20if%20%28computed%20%3E%20lastComputed%20%7C%7C%20computed%20%3D%3D%3D%20-Infinity%20%26%26%20result%20%3D%3D%3D%20-Infinity%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20v%3B%0A%20%20%20%20%20%20%20%20%20%20lastComputed%20%3D%20computed%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20minimum%20element%20%28or%20element-based%20computation%29.%0A%20%20_.min%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20result%20%3D%20Infinity%2C%20lastComputed%20%3D%20Infinity%2C%0A%20%20%20%20%20%20%20%20value%2C%20computed%3B%0A%20%20%20%20if%20%28iteratee%20%3D%3D%20null%20%7C%7C%20typeof%20iteratee%20%3D%3D%20%27number%27%20%26%26%20typeof%20obj%5B0%5D%20%21%3D%20%27object%27%20%26%26%20obj%20%21%3D%20null%29%20%7B%0A%20%20%20%20%20%20obj%20%3D%20isArrayLike%28obj%29%20%3F%20obj%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20obj%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28value%20%21%3D%20null%20%26%26%20value%20%3C%20result%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28v%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%28v%2C%20index%2C%20list%29%3B%0A%20%20%20%20%20%20%20%20if%20%28computed%20%3C%20lastComputed%20%7C%7C%20computed%20%3D%3D%3D%20Infinity%20%26%26%20result%20%3D%3D%3D%20Infinity%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20v%3B%0A%20%20%20%20%20%20%20%20%20%20lastComputed%20%3D%20computed%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Shuffle%20a%20collection.%0A%20%20_.shuffle%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20_.sample%28obj%2C%20Infinity%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Sample%20%2A%2An%2A%2A%20random%20values%20from%20a%20collection%20using%20the%20modern%20version%20of%20the%0A%20%20//%20%5BFisher-Yates%20shuffle%5D%28http%3A//en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle%29.%0A%20%20//%20If%20%2A%2An%2A%2A%20is%20not%20specified%2C%20returns%20a%20single%20random%20element.%0A%20%20//%20The%20internal%20%60guard%60%20argument%20allows%20it%20to%20work%20with%20%60map%60.%0A%20%20_.sample%20%3D%20function%28obj%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20%7B%0A%20%20%20%20%20%20if%20%28%21isArrayLike%28obj%29%29%20obj%20%3D%20_.values%28obj%29%3B%0A%20%20%20%20%20%20return%20obj%5B_.random%28obj.length%20-%201%29%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20sample%20%3D%20isArrayLike%28obj%29%20%3F%20_.clone%28obj%29%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20getLength%28sample%29%3B%0A%20%20%20%20n%20%3D%20Math.max%28Math.min%28n%2C%20length%29%2C%200%29%3B%0A%20%20%20%20var%20last%20%3D%20length%20-%201%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20n%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20rand%20%3D%20_.random%28index%2C%20last%29%3B%0A%20%20%20%20%20%20var%20temp%20%3D%20sample%5Bindex%5D%3B%0A%20%20%20%20%20%20sample%5Bindex%5D%20%3D%20sample%5Brand%5D%3B%0A%20%20%20%20%20%20sample%5Brand%5D%20%3D%20temp%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20sample.slice%280%2C%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Sort%20the%20object%27s%20values%20by%20a%20criterion%20produced%20by%20an%20iteratee.%0A%20%20_.sortBy%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20index%20%3D%200%3B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20return%20_.pluck%28_.map%28obj%2C%20function%28value%2C%20key%2C%20list%29%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20value%3A%20value%2C%0A%20%20%20%20%20%20%20%20index%3A%20index%2B%2B%2C%0A%20%20%20%20%20%20%20%20criteria%3A%20iteratee%28value%2C%20key%2C%20list%29%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29.sort%28function%28left%2C%20right%29%20%7B%0A%20%20%20%20%20%20var%20a%20%3D%20left.criteria%3B%0A%20%20%20%20%20%20var%20b%20%3D%20right.criteria%3B%0A%20%20%20%20%20%20if%20%28a%20%21%3D%3D%20b%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28a%20%3E%20b%20%7C%7C%20a%20%3D%3D%3D%20void%200%29%20return%201%3B%0A%20%20%20%20%20%20%20%20if%20%28a%20%3C%20b%20%7C%7C%20b%20%3D%3D%3D%20void%200%29%20return%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20left.index%20-%20right.index%3B%0A%20%20%20%20%7D%29%2C%20%27value%27%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20used%20for%20aggregate%20%22group%20by%22%20operations.%0A%20%20var%20group%20%3D%20function%28behavior%2C%20partition%29%20%7B%0A%20%20%20%20return%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20%20%20var%20result%20%3D%20partition%20%3F%20%5B%5B%5D%2C%20%5B%5D%5D%20%3A%20%7B%7D%3B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28value%2C%20index%29%20%7B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20iteratee%28value%2C%20index%2C%20obj%29%3B%0A%20%20%20%20%20%20%20%20behavior%28result%2C%20value%2C%20key%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Groups%20the%20object%27s%20values%20by%20a%20criterion.%20Pass%20either%20a%20string%20attribute%0A%20%20//%20to%20group%20by%2C%20or%20a%20function%20that%20returns%20the%20criterion.%0A%20%20_.groupBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20if%20%28has%28result%2C%20key%29%29%20result%5Bkey%5D.push%28value%29%3B%20else%20result%5Bkey%5D%20%3D%20%5Bvalue%5D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Indexes%20the%20object%27s%20values%20by%20a%20criterion%2C%20similar%20to%20%60groupBy%60%2C%20but%20for%0A%20%20//%20when%20you%20know%20that%20your%20index%20values%20will%20be%20unique.%0A%20%20_.indexBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20result%5Bkey%5D%20%3D%20value%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Counts%20instances%20of%20an%20object%20that%20group%20by%20a%20certain%20criterion.%20Pass%0A%20%20//%20either%20a%20string%20attribute%20to%20count%20by%2C%20or%20a%20function%20that%20returns%20the%0A%20%20//%20criterion.%0A%20%20_.countBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20if%20%28has%28result%2C%20key%29%29%20result%5Bkey%5D%2B%2B%3B%20else%20result%5Bkey%5D%20%3D%201%3B%0A%20%20%7D%29%3B%0A%0A%20%20var%20reStrSymbol%20%3D%20/%5B%5E%5Cud800-%5Cudfff%5D%7C%5B%5Cud800-%5Cudbff%5D%5B%5Cudc00-%5Cudfff%5D%7C%5B%5Cud800-%5Cudfff%5D/g%3B%0A%20%20//%20Safely%20create%20a%20real%2C%20live%20array%20from%20anything%20iterable.%0A%20%20_.toArray%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21obj%29%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28_.isArray%28obj%29%29%20return%20slice.call%28obj%29%3B%0A%20%20%20%20if%20%28_.isString%28obj%29%29%20%7B%0A%20%20%20%20%20%20//%20Keep%20surrogate%20pair%20characters%20together%0A%20%20%20%20%20%20return%20obj.match%28reStrSymbol%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28isArrayLike%28obj%29%29%20return%20_.map%28obj%2C%20_.identity%29%3B%0A%20%20%20%20return%20_.values%28obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20number%20of%20elements%20in%20an%20object.%0A%20%20_.size%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%200%3B%0A%20%20%20%20return%20isArrayLike%28obj%29%20%3F%20obj.length%20%3A%20_.keys%28obj%29.length%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Split%20a%20collection%20into%20two%20arrays%3A%20one%20whose%20elements%20all%20satisfy%20the%20given%0A%20%20//%20predicate%2C%20and%20one%20whose%20elements%20all%20do%20not%20satisfy%20the%20predicate.%0A%20%20_.partition%20%3D%20group%28function%28result%2C%20value%2C%20pass%29%20%7B%0A%20%20%20%20result%5Bpass%20%3F%200%20%3A%201%5D.push%28value%29%3B%0A%20%20%7D%2C%20true%29%3B%0A%0A%20%20//%20Array%20Functions%0A%20%20//%20---------------%0A%0A%20%20//%20Get%20the%20first%20element%20of%20an%20array.%20Passing%20%2A%2An%2A%2A%20will%20return%20the%20first%20N%0A%20%20//%20values%20in%20the%20array.%20Aliased%20as%20%60head%60%20and%20%60take%60.%20The%20%2A%2Aguard%2A%2A%20check%0A%20%20//%20allows%20it%20to%20work%20with%20%60_.map%60.%0A%20%20_.first%20%3D%20_.head%20%3D%20_.take%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28array%20%3D%3D%20null%20%7C%7C%20array.length%20%3C%201%29%20return%20n%20%3D%3D%20null%20%3F%20void%200%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20return%20array%5B0%5D%3B%0A%20%20%20%20return%20_.initial%28array%2C%20array.length%20-%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20everything%20but%20the%20last%20entry%20of%20the%20array.%20Especially%20useful%20on%0A%20%20//%20the%20arguments%20object.%20Passing%20%2A%2An%2A%2A%20will%20return%20all%20the%20values%20in%0A%20%20//%20the%20array%2C%20excluding%20the%20last%20N.%0A%20%20_.initial%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20return%20slice.call%28array%2C%200%2C%20Math.max%280%2C%20array.length%20-%20%28n%20%3D%3D%20null%20%7C%7C%20guard%20%3F%201%20%3A%20n%29%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Get%20the%20last%20element%20of%20an%20array.%20Passing%20%2A%2An%2A%2A%20will%20return%20the%20last%20N%0A%20%20//%20values%20in%20the%20array.%0A%20%20_.last%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28array%20%3D%3D%20null%20%7C%7C%20array.length%20%3C%201%29%20return%20n%20%3D%3D%20null%20%3F%20void%200%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20return%20array%5Barray.length%20-%201%5D%3B%0A%20%20%20%20return%20_.rest%28array%2C%20Math.max%280%2C%20array.length%20-%20n%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20everything%20but%20the%20first%20entry%20of%20the%20array.%20Aliased%20as%20%60tail%60%20and%20%60drop%60.%0A%20%20//%20Especially%20useful%20on%20the%20arguments%20object.%20Passing%20an%20%2A%2An%2A%2A%20will%20return%0A%20%20//%20the%20rest%20N%20values%20in%20the%20array.%0A%20%20_.rest%20%3D%20_.tail%20%3D%20_.drop%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20return%20slice.call%28array%2C%20n%20%3D%3D%20null%20%7C%7C%20guard%20%3F%201%20%3A%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Trim%20out%20all%20falsy%20values%20from%20an%20array.%0A%20%20_.compact%20%3D%20function%28array%29%20%7B%0A%20%20%20%20return%20_.filter%28array%2C%20Boolean%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20implementation%20of%20a%20recursive%20%60flatten%60%20function.%0A%20%20var%20flatten%20%3D%20function%28input%2C%20shallow%2C%20strict%2C%20output%29%20%7B%0A%20%20%20%20output%20%3D%20output%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20idx%20%3D%20output.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28input%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20input%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28isArrayLike%28value%29%20%26%26%20%28_.isArray%28value%29%20%7C%7C%20_.isArguments%28value%29%29%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Flatten%20current%20level%20of%20array%20or%20arguments%20object.%0A%20%20%20%20%20%20%20%20if%20%28shallow%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20j%20%3D%200%2C%20len%20%3D%20value.length%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28j%20%3C%20len%29%20output%5Bidx%2B%2B%5D%20%3D%20value%5Bj%2B%2B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20flatten%28value%2C%20shallow%2C%20strict%2C%20output%29%3B%0A%20%20%20%20%20%20%20%20%20%20idx%20%3D%20output.length%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21strict%29%20%7B%0A%20%20%20%20%20%20%20%20output%5Bidx%2B%2B%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20output%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Flatten%20out%20an%20array%2C%20either%20recursively%20%28by%20default%29%2C%20or%20just%20one%20level.%0A%20%20_.flatten%20%3D%20function%28array%2C%20shallow%29%20%7B%0A%20%20%20%20return%20flatten%28array%2C%20shallow%2C%20false%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20version%20of%20the%20array%20that%20does%20not%20contain%20the%20specified%20value%28s%29.%0A%20%20_.without%20%3D%20restArguments%28function%28array%2C%20otherArrays%29%20%7B%0A%20%20%20%20return%20_.difference%28array%2C%20otherArrays%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Produce%20a%20duplicate-free%20version%20of%20the%20array.%20If%20the%20array%20has%20already%0A%20%20//%20been%20sorted%2C%20you%20have%20the%20option%20of%20using%20a%20faster%20algorithm.%0A%20%20//%20The%20faster%20algorithm%20will%20not%20work%20with%20an%20iteratee%20if%20the%20iteratee%0A%20%20//%20is%20not%20a%20one-to-one%20function%2C%20so%20providing%20an%20iteratee%20will%20disable%0A%20%20//%20the%20faster%20algorithm.%0A%20%20//%20Aliased%20as%20%60unique%60.%0A%20%20_.uniq%20%3D%20_.unique%20%3D%20function%28array%2C%20isSorted%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20if%20%28%21_.isBoolean%28isSorted%29%29%20%7B%0A%20%20%20%20%20%20context%20%3D%20iteratee%3B%0A%20%20%20%20%20%20iteratee%20%3D%20isSorted%3B%0A%20%20%20%20%20%20isSorted%20%3D%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28iteratee%20%21%3D%20null%29%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20seen%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20array%5Bi%5D%2C%0A%20%20%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%20%3F%20iteratee%28value%2C%20i%2C%20array%29%20%3A%20value%3B%0A%20%20%20%20%20%20if%20%28isSorted%20%26%26%20%21iteratee%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21i%20%7C%7C%20seen%20%21%3D%3D%20computed%29%20result.push%28value%29%3B%0A%20%20%20%20%20%20%20%20seen%20%3D%20computed%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28iteratee%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21_.contains%28seen%2C%20computed%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20seen.push%28computed%29%3B%0A%20%20%20%20%20%20%20%20%20%20result.push%28value%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21_.contains%28result%2C%20value%29%29%20%7B%0A%20%20%20%20%20%20%20%20result.push%28value%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Produce%20an%20array%20that%20contains%20the%20union%3A%20each%20distinct%20element%20from%20all%20of%0A%20%20//%20the%20passed-in%20arrays.%0A%20%20_.union%20%3D%20restArguments%28function%28arrays%29%20%7B%0A%20%20%20%20return%20_.uniq%28flatten%28arrays%2C%20true%2C%20true%29%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Produce%20an%20array%20that%20contains%20every%20item%20shared%20between%20all%20the%0A%20%20//%20passed-in%20arrays.%0A%20%20_.intersection%20%3D%20function%28array%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20argsLength%20%3D%20arguments.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20item%20%3D%20array%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28_.contains%28result%2C%20item%29%29%20continue%3B%0A%20%20%20%20%20%20var%20j%3B%0A%20%20%20%20%20%20for%20%28j%20%3D%201%3B%20j%20%3C%20argsLength%3B%20j%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21_.contains%28arguments%5Bj%5D%2C%20item%29%29%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28j%20%3D%3D%3D%20argsLength%29%20result.push%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Take%20the%20difference%20between%20one%20array%20and%20a%20number%20of%20other%20arrays.%0A%20%20//%20Only%20the%20elements%20present%20in%20just%20the%20first%20array%20will%20remain.%0A%20%20_.difference%20%3D%20restArguments%28function%28array%2C%20rest%29%20%7B%0A%20%20%20%20rest%20%3D%20flatten%28rest%2C%20true%2C%20true%29%3B%0A%20%20%20%20return%20_.filter%28array%2C%20function%28value%29%7B%0A%20%20%20%20%20%20return%20%21_.contains%28rest%2C%20value%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Complement%20of%20_.zip.%20Unzip%20accepts%20an%20array%20of%20arrays%20and%20groups%0A%20%20//%20each%20array%27s%20elements%20on%20shared%20indices.%0A%20%20_.unzip%20%3D%20function%28array%29%20%7B%0A%20%20%20%20var%20length%20%3D%20array%20%26%26%20_.max%28array%2C%20getLength%29.length%20%7C%7C%200%3B%0A%20%20%20%20var%20result%20%3D%20Array%28length%29%3B%0A%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20result%5Bindex%5D%20%3D%20_.pluck%28array%2C%20index%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Zip%20together%20multiple%20lists%20into%20a%20single%20array%20--%20elements%20that%20share%0A%20%20//%20an%20index%20go%20together.%0A%20%20_.zip%20%3D%20restArguments%28_.unzip%29%3B%0A%0A%20%20//%20Converts%20lists%20into%20objects.%20Pass%20either%20a%20single%20array%20of%20%60%5Bkey%2C%20value%5D%60%0A%20%20//%20pairs%2C%20or%20two%20parallel%20arrays%20of%20the%20same%20length%20--%20one%20of%20keys%2C%20and%20one%20of%0A%20%20//%20the%20corresponding%20values.%20Passing%20by%20pairs%20is%20the%20reverse%20of%20_.pairs.%0A%20%20_.object%20%3D%20function%28list%2C%20values%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28list%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28values%29%20%7B%0A%20%20%20%20%20%20%20%20result%5Blist%5Bi%5D%5D%20%3D%20values%5Bi%5D%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20result%5Blist%5Bi%5D%5B0%5D%5D%20%3D%20list%5Bi%5D%5B1%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generator%20function%20to%20create%20the%20findIndex%20and%20findLastIndex%20functions.%0A%20%20var%20createPredicateIndexFinder%20%3D%20function%28dir%29%20%7B%0A%20%20%20%20return%20function%28array%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20%20%20var%20length%20%3D%20getLength%28array%29%3B%0A%20%20%20%20%20%20var%20index%20%3D%20dir%20%3E%200%20%3F%200%20%3A%20length%20-%201%3B%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3E%3D%200%20%26%26%20index%20%3C%20length%3B%20index%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28predicate%28array%5Bindex%5D%2C%20index%2C%20array%29%29%20return%20index%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20-1%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20first%20index%20on%20an%20array-like%20that%20passes%20a%20predicate%20test.%0A%20%20_.findIndex%20%3D%20createPredicateIndexFinder%281%29%3B%0A%20%20_.findLastIndex%20%3D%20createPredicateIndexFinder%28-1%29%3B%0A%0A%20%20//%20Use%20a%20comparator%20function%20to%20figure%20out%20the%20smallest%20index%20at%20which%0A%20%20//%20an%20object%20should%20be%20inserted%20so%20as%20to%20maintain%20order.%20Uses%20binary%20search.%0A%20%20_.sortedIndex%20%3D%20function%28array%2C%20obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%2C%201%29%3B%0A%20%20%20%20var%20value%20%3D%20iteratee%28obj%29%3B%0A%20%20%20%20var%20low%20%3D%200%2C%20high%20%3D%20getLength%28array%29%3B%0A%20%20%20%20while%20%28low%20%3C%20high%29%20%7B%0A%20%20%20%20%20%20var%20mid%20%3D%20Math.floor%28%28low%20%2B%20high%29%20/%202%29%3B%0A%20%20%20%20%20%20if%20%28iteratee%28array%5Bmid%5D%29%20%3C%20value%29%20low%20%3D%20mid%20%2B%201%3B%20else%20high%20%3D%20mid%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20low%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generator%20function%20to%20create%20the%20indexOf%20and%20lastIndexOf%20functions.%0A%20%20var%20createIndexFinder%20%3D%20function%28dir%2C%20predicateFind%2C%20sortedIndex%29%20%7B%0A%20%20%20%20return%20function%28array%2C%20item%2C%20idx%29%20%7B%0A%20%20%20%20%20%20var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%0A%20%20%20%20%20%20if%20%28typeof%20idx%20%3D%3D%20%27number%27%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28dir%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20i%20%3D%20idx%20%3E%3D%200%20%3F%20idx%20%3A%20Math.max%28idx%20%2B%20length%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20length%20%3D%20idx%20%3E%3D%200%20%3F%20Math.min%28idx%20%2B%201%2C%20length%29%20%3A%20idx%20%2B%20length%20%2B%201%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28sortedIndex%20%26%26%20idx%20%26%26%20length%29%20%7B%0A%20%20%20%20%20%20%20%20idx%20%3D%20sortedIndex%28array%2C%20item%29%3B%0A%20%20%20%20%20%20%20%20return%20array%5Bidx%5D%20%3D%3D%3D%20item%20%3F%20idx%20%3A%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28item%20%21%3D%3D%20item%29%20%7B%0A%20%20%20%20%20%20%20%20idx%20%3D%20predicateFind%28slice.call%28array%2C%20i%2C%20length%29%2C%20_.isNaN%29%3B%0A%20%20%20%20%20%20%20%20return%20idx%20%3E%3D%200%20%3F%20idx%20%2B%20i%20%3A%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20for%20%28idx%20%3D%20dir%20%3E%200%20%3F%20i%20%3A%20length%20-%201%3B%20idx%20%3E%3D%200%20%26%26%20idx%20%3C%20length%3B%20idx%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28array%5Bidx%5D%20%3D%3D%3D%20item%29%20return%20idx%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20-1%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20position%20of%20the%20first%20occurrence%20of%20an%20item%20in%20an%20array%2C%0A%20%20//%20or%20-1%20if%20the%20item%20is%20not%20included%20in%20the%20array.%0A%20%20//%20If%20the%20array%20is%20large%20and%20already%20in%20sort%20order%2C%20pass%20%60true%60%0A%20%20//%20for%20%2A%2AisSorted%2A%2A%20to%20use%20binary%20search.%0A%20%20_.indexOf%20%3D%20createIndexFinder%281%2C%20_.findIndex%2C%20_.sortedIndex%29%3B%0A%20%20_.lastIndexOf%20%3D%20createIndexFinder%28-1%2C%20_.findLastIndex%29%3B%0A%0A%20%20//%20Generate%20an%20integer%20Array%20containing%20an%20arithmetic%20progression.%20A%20port%20of%0A%20%20//%20the%20native%20Python%20%60range%28%29%60%20function.%20See%0A%20%20//%20%5Bthe%20Python%20documentation%5D%28http%3A//docs.python.org/library/functions.html%23range%29.%0A%20%20_.range%20%3D%20function%28start%2C%20stop%2C%20step%29%20%7B%0A%20%20%20%20if%20%28stop%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20stop%20%3D%20start%20%7C%7C%200%3B%0A%20%20%20%20%20%20start%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21step%29%20%7B%0A%20%20%20%20%20%20step%20%3D%20stop%20%3C%20start%20%3F%20-1%20%3A%201%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20length%20%3D%20Math.max%28Math.ceil%28%28stop%20-%20start%29%20/%20step%29%2C%200%29%3B%0A%20%20%20%20var%20range%20%3D%20Array%28length%29%3B%0A%0A%20%20%20%20for%20%28var%20idx%20%3D%200%3B%20idx%20%3C%20length%3B%20idx%2B%2B%2C%20start%20%2B%3D%20step%29%20%7B%0A%20%20%20%20%20%20range%5Bidx%5D%20%3D%20start%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20range%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Chunk%20a%20single%20array%20into%20multiple%20arrays%2C%20each%20containing%20%60count%60%20or%20fewer%0A%20%20//%20items.%0A%20%20_.chunk%20%3D%20function%28array%2C%20count%29%20%7B%0A%20%20%20%20if%20%28count%20%3D%3D%20null%20%7C%7C%20count%20%3C%201%29%20return%20%5B%5D%3B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20i%20%3D%200%2C%20length%20%3D%20array.length%3B%0A%20%20%20%20while%20%28i%20%3C%20length%29%20%7B%0A%20%20%20%20%20%20result.push%28slice.call%28array%2C%20i%2C%20i%20%2B%3D%20count%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Function%20%28ahem%29%20Functions%0A%20%20//%20------------------%0A%0A%20%20//%20Determines%20whether%20to%20execute%20a%20function%20as%20a%20constructor%0A%20%20//%20or%20a%20normal%20function%20with%20the%20provided%20arguments.%0A%20%20var%20executeBound%20%3D%20function%28sourceFunc%2C%20boundFunc%2C%20context%2C%20callingContext%2C%20args%29%20%7B%0A%20%20%20%20if%20%28%21%28callingContext%20instanceof%20boundFunc%29%29%20return%20sourceFunc.apply%28context%2C%20args%29%3B%0A%20%20%20%20var%20self%20%3D%20baseCreate%28sourceFunc.prototype%29%3B%0A%20%20%20%20var%20result%20%3D%20sourceFunc.apply%28self%2C%20args%29%3B%0A%20%20%20%20if%20%28_.isObject%28result%29%29%20return%20result%3B%0A%20%20%20%20return%20self%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20function%20bound%20to%20a%20given%20object%20%28assigning%20%60this%60%2C%20and%20arguments%2C%0A%20%20//%20optionally%29.%20Delegates%20to%20%2A%2AECMAScript%205%2A%2A%27s%20native%20%60Function.bind%60%20if%0A%20%20//%20available.%0A%20%20_.bind%20%3D%20restArguments%28function%28func%2C%20context%2C%20args%29%20%7B%0A%20%20%20%20if%20%28%21_.isFunction%28func%29%29%20throw%20new%20TypeError%28%27Bind%20must%20be%20called%20on%20a%20function%27%29%3B%0A%20%20%20%20var%20bound%20%3D%20restArguments%28function%28callArgs%29%20%7B%0A%20%20%20%20%20%20return%20executeBound%28func%2C%20bound%2C%20context%2C%20this%2C%20args.concat%28callArgs%29%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20bound%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Partially%20apply%20a%20function%20by%20creating%20a%20version%20that%20has%20had%20some%20of%20its%0A%20%20//%20arguments%20pre-filled%2C%20without%20changing%20its%20dynamic%20%60this%60%20context.%20_%20acts%0A%20%20//%20as%20a%20placeholder%20by%20default%2C%20allowing%20any%20combination%20of%20arguments%20to%20be%0A%20%20//%20pre-filled.%20Set%20%60_.partial.placeholder%60%20for%20a%20custom%20placeholder%20argument.%0A%20%20_.partial%20%3D%20restArguments%28function%28func%2C%20boundArgs%29%20%7B%0A%20%20%20%20var%20placeholder%20%3D%20_.partial.placeholder%3B%0A%20%20%20%20var%20bound%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20position%20%3D%200%2C%20length%20%3D%20boundArgs.length%3B%0A%20%20%20%20%20%20var%20args%20%3D%20Array%28length%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20args%5Bi%5D%20%3D%20boundArgs%5Bi%5D%20%3D%3D%3D%20placeholder%20%3F%20arguments%5Bposition%2B%2B%5D%20%3A%20boundArgs%5Bi%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20while%20%28position%20%3C%20arguments.length%29%20args.push%28arguments%5Bposition%2B%2B%5D%29%3B%0A%20%20%20%20%20%20return%20executeBound%28func%2C%20bound%2C%20this%2C%20this%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20bound%3B%0A%20%20%7D%29%3B%0A%0A%20%20_.partial.placeholder%20%3D%20_%3B%0A%0A%20%20//%20Bind%20a%20number%20of%20an%20object%27s%20methods%20to%20that%20object.%20Remaining%20arguments%0A%20%20//%20are%20the%20method%20names%20to%20be%20bound.%20Useful%20for%20ensuring%20that%20all%20callbacks%0A%20%20//%20defined%20on%20an%20object%20belong%20to%20it.%0A%20%20_.bindAll%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20keys%20%3D%20flatten%28keys%2C%20false%2C%20false%29%3B%0A%20%20%20%20var%20index%20%3D%20keys.length%3B%0A%20%20%20%20if%20%28index%20%3C%201%29%20throw%20new%20Error%28%27bindAll%20must%20be%20passed%20function%20names%27%29%3B%0A%20%20%20%20while%20%28index--%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bindex%5D%3B%0A%20%20%20%20%20%20obj%5Bkey%5D%20%3D%20_.bind%28obj%5Bkey%5D%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%3B%0A%0A%20%20//%20Memoize%20an%20expensive%20function%20by%20storing%20its%20results.%0A%20%20_.memoize%20%3D%20function%28func%2C%20hasher%29%20%7B%0A%20%20%20%20var%20memoize%20%3D%20function%28key%29%20%7B%0A%20%20%20%20%20%20var%20cache%20%3D%20memoize.cache%3B%0A%20%20%20%20%20%20var%20address%20%3D%20%27%27%20%2B%20%28hasher%20%3F%20hasher.apply%28this%2C%20arguments%29%20%3A%20key%29%3B%0A%20%20%20%20%20%20if%20%28%21has%28cache%2C%20address%29%29%20cache%5Baddress%5D%20%3D%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20return%20cache%5Baddress%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20memoize.cache%20%3D%20%7B%7D%3B%0A%20%20%20%20return%20memoize%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Delays%20a%20function%20for%20the%20given%20number%20of%20milliseconds%2C%20and%20then%20calls%0A%20%20//%20it%20with%20the%20arguments%20supplied.%0A%20%20_.delay%20%3D%20restArguments%28function%28func%2C%20wait%2C%20args%29%20%7B%0A%20%20%20%20return%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20return%20func.apply%28null%2C%20args%29%3B%0A%20%20%20%20%7D%2C%20wait%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Defers%20a%20function%2C%20scheduling%20it%20to%20run%20after%20the%20current%20call%20stack%20has%0A%20%20//%20cleared.%0A%20%20_.defer%20%3D%20_.partial%28_.delay%2C%20_%2C%201%29%3B%0A%0A%20%20//%20Returns%20a%20function%2C%20that%2C%20when%20invoked%2C%20will%20only%20be%20triggered%20at%20most%20once%0A%20%20//%20during%20a%20given%20window%20of%20time.%20Normally%2C%20the%20throttled%20function%20will%20run%0A%20%20//%20as%20much%20as%20it%20can%2C%20without%20ever%20going%20more%20than%20once%20per%20%60wait%60%20duration%3B%0A%20%20//%20but%20if%20you%27d%20like%20to%20disable%20the%20execution%20on%20the%20leading%20edge%2C%20pass%0A%20%20//%20%60%7Bleading%3A%20false%7D%60.%20To%20disable%20execution%20on%20the%20trailing%20edge%2C%20ditto.%0A%20%20_.throttle%20%3D%20function%28func%2C%20wait%2C%20options%29%20%7B%0A%20%20%20%20var%20timeout%2C%20context%2C%20args%2C%20result%3B%0A%20%20%20%20var%20previous%20%3D%200%3B%0A%20%20%20%20if%20%28%21options%29%20options%20%3D%20%7B%7D%3B%0A%0A%20%20%20%20var%20later%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20previous%20%3D%20options.leading%20%3D%3D%3D%20false%20%3F%200%20%3A%20_.now%28%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20throttled%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20now%20%3D%20_.now%28%29%3B%0A%20%20%20%20%20%20if%20%28%21previous%20%26%26%20options.leading%20%3D%3D%3D%20false%29%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20var%20remaining%20%3D%20wait%20-%20%28now%20-%20previous%29%3B%0A%20%20%20%20%20%20context%20%3D%20this%3B%0A%20%20%20%20%20%20args%20%3D%20arguments%3B%0A%20%20%20%20%20%20if%20%28remaining%20%3C%3D%200%20%7C%7C%20remaining%20%3E%20wait%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28timeout%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20%20%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21timeout%20%26%26%20options.trailing%20%21%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20remaining%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20throttled.cancel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20previous%20%3D%200%3B%0A%20%20%20%20%20%20timeout%20%3D%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20throttled%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%2C%20that%2C%20as%20long%20as%20it%20continues%20to%20be%20invoked%2C%20will%20not%0A%20%20//%20be%20triggered.%20The%20function%20will%20be%20called%20after%20it%20stops%20being%20called%20for%0A%20%20//%20N%20milliseconds.%20If%20%60immediate%60%20is%20passed%2C%20trigger%20the%20function%20on%20the%0A%20%20//%20leading%20edge%2C%20instead%20of%20the%20trailing.%0A%20%20_.debounce%20%3D%20function%28func%2C%20wait%2C%20immediate%29%20%7B%0A%20%20%20%20var%20timeout%2C%20result%3B%0A%0A%20%20%20%20var%20later%20%3D%20function%28context%2C%20args%29%20%7B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20if%20%28args%29%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20debounced%20%3D%20restArguments%28function%28args%29%20%7B%0A%20%20%20%20%20%20if%20%28timeout%29%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20if%20%28immediate%29%20%7B%0A%20%20%20%20%20%20%20%20var%20callNow%20%3D%20%21timeout%3B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20wait%29%3B%0A%20%20%20%20%20%20%20%20if%20%28callNow%29%20result%20%3D%20func.apply%28this%2C%20args%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20_.delay%28later%2C%20wait%2C%20this%2C%20args%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20debounced.cancel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20debounced%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20first%20function%20passed%20as%20an%20argument%20to%20the%20second%2C%0A%20%20//%20allowing%20you%20to%20adjust%20arguments%2C%20run%20code%20before%20and%20after%2C%20and%0A%20%20//%20conditionally%20execute%20the%20original%20function.%0A%20%20_.wrap%20%3D%20function%28func%2C%20wrapper%29%20%7B%0A%20%20%20%20return%20_.partial%28wrapper%2C%20func%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20negated%20version%20of%20the%20passed-in%20predicate.%0A%20%20_.negate%20%3D%20function%28predicate%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20%21predicate.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20is%20the%20composition%20of%20a%20list%20of%20functions%2C%20each%0A%20%20//%20consuming%20the%20return%20value%20of%20the%20function%20that%20follows.%0A%20%20_.compose%20%3D%20function%28%29%20%7B%0A%20%20%20%20var%20args%20%3D%20arguments%3B%0A%20%20%20%20var%20start%20%3D%20args.length%20-%201%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20i%20%3D%20start%3B%0A%20%20%20%20%20%20var%20result%20%3D%20args%5Bstart%5D.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20while%20%28i--%29%20result%20%3D%20args%5Bi%5D.call%28this%2C%20result%29%3B%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20only%20be%20executed%20on%20and%20after%20the%20Nth%20call.%0A%20%20_.after%20%3D%20function%28times%2C%20func%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28--times%20%3C%201%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20only%20be%20executed%20up%20to%20%28but%20not%20including%29%20the%20Nth%20call.%0A%20%20_.before%20%3D%20function%28times%2C%20func%29%20%7B%0A%20%20%20%20var%20memo%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28--times%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20memo%20%3D%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28times%20%3C%3D%201%29%20func%20%3D%20null%3B%0A%20%20%20%20%20%20return%20memo%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20be%20executed%20at%20most%20one%20time%2C%20no%20matter%20how%0A%20%20//%20often%20you%20call%20it.%20Useful%20for%20lazy%20initialization.%0A%20%20_.once%20%3D%20_.partial%28_.before%2C%202%29%3B%0A%0A%20%20_.restArguments%20%3D%20restArguments%3B%0A%0A%20%20//%20Object%20Functions%0A%20%20//%20----------------%0A%0A%20%20//%20Keys%20in%20IE%20%3C%209%20that%20won%27t%20be%20iterated%20by%20%60for%20key%20in%20...%60%20and%20thus%20missed.%0A%20%20var%20hasEnumBug%20%3D%20%21%7BtoString%3A%20null%7D.propertyIsEnumerable%28%27toString%27%29%3B%0A%20%20var%20nonEnumerableProps%20%3D%20%5B%27valueOf%27%2C%20%27isPrototypeOf%27%2C%20%27toString%27%2C%0A%20%20%20%20%27propertyIsEnumerable%27%2C%20%27hasOwnProperty%27%2C%20%27toLocaleString%27%5D%3B%0A%0A%20%20var%20collectNonEnumProps%20%3D%20function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20nonEnumIdx%20%3D%20nonEnumerableProps.length%3B%0A%20%20%20%20var%20constructor%20%3D%20obj.constructor%3B%0A%20%20%20%20var%20proto%20%3D%20_.isFunction%28constructor%29%20%26%26%20constructor.prototype%20%7C%7C%20ObjProto%3B%0A%0A%20%20%20%20//%20Constructor%20is%20a%20special%20case.%0A%20%20%20%20var%20prop%20%3D%20%27constructor%27%3B%0A%20%20%20%20if%20%28has%28obj%2C%20prop%29%20%26%26%20%21_.contains%28keys%2C%20prop%29%29%20keys.push%28prop%29%3B%0A%0A%20%20%20%20while%20%28nonEnumIdx--%29%20%7B%0A%20%20%20%20%20%20prop%20%3D%20nonEnumerableProps%5BnonEnumIdx%5D%3B%0A%20%20%20%20%20%20if%20%28prop%20in%20obj%20%26%26%20obj%5Bprop%5D%20%21%3D%3D%20proto%5Bprop%5D%20%26%26%20%21_.contains%28keys%2C%20prop%29%29%20%7B%0A%20%20%20%20%20%20%20%20keys.push%28prop%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20the%20names%20of%20an%20object%27s%20own%20properties.%0A%20%20//%20Delegates%20to%20%2A%2AECMAScript%205%2A%2A%27s%20native%20%60Object.keys%60.%0A%20%20_.keys%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28nativeKeys%29%20return%20nativeKeys%28obj%29%3B%0A%20%20%20%20var%20keys%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20if%20%28has%28obj%2C%20key%29%29%20keys.push%28key%29%3B%0A%20%20%20%20//%20Ahem%2C%20IE%20%3C%209.%0A%20%20%20%20if%20%28hasEnumBug%29%20collectNonEnumProps%28obj%2C%20keys%29%3B%0A%20%20%20%20return%20keys%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20all%20the%20property%20names%20of%20an%20object.%0A%20%20_.allKeys%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20%5B%5D%3B%0A%20%20%20%20var%20keys%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20keys.push%28key%29%3B%0A%20%20%20%20//%20Ahem%2C%20IE%20%3C%209.%0A%20%20%20%20if%20%28hasEnumBug%29%20collectNonEnumProps%28obj%2C%20keys%29%3B%0A%20%20%20%20return%20keys%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20the%20values%20of%20an%20object%27s%20properties.%0A%20%20_.values%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20keys.length%3B%0A%20%20%20%20var%20values%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20values%5Bi%5D%20%3D%20obj%5Bkeys%5Bi%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20values%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20results%20of%20applying%20the%20iteratee%20to%20each%20element%20of%20the%20object.%0A%20%20//%20In%20contrast%20to%20_.map%20it%20returns%20an%20object.%0A%20%20_.mapObject%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20keys.length%2C%0A%20%20%20%20%20%20%20%20results%20%3D%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%5Bindex%5D%3B%0A%20%20%20%20%20%20results%5BcurrentKey%5D%20%3D%20iteratee%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convert%20an%20object%20into%20a%20list%20of%20%60%5Bkey%2C%20value%5D%60%20pairs.%0A%20%20//%20The%20opposite%20of%20_.object.%0A%20%20_.pairs%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20keys.length%3B%0A%20%20%20%20var%20pairs%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20pairs%5Bi%5D%20%3D%20%5Bkeys%5Bi%5D%2C%20obj%5Bkeys%5Bi%5D%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20pairs%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invert%20the%20keys%20and%20values%20of%20an%20object.%20The%20values%20must%20be%20serializable.%0A%20%20_.invert%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20result%5Bobj%5Bkeys%5Bi%5D%5D%5D%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20sorted%20list%20of%20the%20function%20names%20available%20on%20the%20object.%0A%20%20//%20Aliased%20as%20%60methods%60.%0A%20%20_.functions%20%3D%20_.methods%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20names%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20%7B%0A%20%20%20%20%20%20if%20%28_.isFunction%28obj%5Bkey%5D%29%29%20names.push%28key%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20names.sort%28%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20for%20creating%20assigner%20functions.%0A%20%20var%20createAssigner%20%3D%20function%28keysFunc%2C%20defaults%29%20%7B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20var%20length%20%3D%20arguments.length%3B%0A%20%20%20%20%20%20if%20%28defaults%29%20obj%20%3D%20Object%28obj%29%3B%0A%20%20%20%20%20%20if%20%28length%20%3C%202%20%7C%7C%20obj%20%3D%3D%20null%29%20return%20obj%3B%0A%20%20%20%20%20%20for%20%28var%20index%20%3D%201%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20var%20source%20%3D%20arguments%5Bindex%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20keys%20%3D%20keysFunc%28source%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20l%20%3D%20keys.length%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20l%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21defaults%20%7C%7C%20obj%5Bkey%5D%20%3D%3D%3D%20void%200%29%20obj%5Bkey%5D%20%3D%20source%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20obj%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Extend%20a%20given%20object%20with%20all%20the%20properties%20in%20passed-in%20object%28s%29.%0A%20%20_.extend%20%3D%20createAssigner%28_.allKeys%29%3B%0A%0A%20%20//%20Assigns%20a%20given%20object%20with%20all%20the%20own%20properties%20in%20the%20passed-in%20object%28s%29.%0A%20%20//%20%28https%3A//developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign%29%0A%20%20_.extendOwn%20%3D%20_.assign%20%3D%20createAssigner%28_.keys%29%3B%0A%0A%20%20//%20Returns%20the%20first%20key%20on%20an%20object%20that%20passes%20a%20predicate%20test.%0A%20%20_.findKey%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%2C%20key%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28predicate%28obj%5Bkey%5D%2C%20key%2C%20obj%29%29%20return%20key%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20pick%20helper%20function%20to%20determine%20if%20%60obj%60%20has%20key%20%60key%60.%0A%20%20var%20keyInObj%20%3D%20function%28value%2C%20key%2C%20obj%29%20%7B%0A%20%20%20%20return%20key%20in%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20copy%20of%20the%20object%20only%20containing%20the%20whitelisted%20properties.%0A%20%20_.pick%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%2C%20iteratee%20%3D%20keys%5B0%5D%3B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20result%3B%0A%20%20%20%20if%20%28_.isFunction%28iteratee%29%29%20%7B%0A%20%20%20%20%20%20if%20%28keys.length%20%3E%201%29%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20keys%5B1%5D%29%3B%0A%20%20%20%20%20%20keys%20%3D%20_.allKeys%28obj%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20keyInObj%3B%0A%20%20%20%20%20%20keys%20%3D%20flatten%28keys%2C%20false%2C%20false%29%3B%0A%20%20%20%20%20%20obj%20%3D%20Object%28obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20var%20value%20%3D%20obj%5Bkey%5D%3B%0A%20%20%20%20%20%20if%20%28iteratee%28value%2C%20key%2C%20obj%29%29%20result%5Bkey%5D%20%3D%20value%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Return%20a%20copy%20of%20the%20object%20without%20the%20blacklisted%20properties.%0A%20%20_.omit%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20iteratee%20%3D%20keys%5B0%5D%2C%20context%3B%0A%20%20%20%20if%20%28_.isFunction%28iteratee%29%29%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20_.negate%28iteratee%29%3B%0A%20%20%20%20%20%20if%20%28keys.length%20%3E%201%29%20context%20%3D%20keys%5B1%5D%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20keys%20%3D%20_.map%28flatten%28keys%2C%20false%2C%20false%29%2C%20String%29%3B%0A%20%20%20%20%20%20iteratee%20%3D%20function%28value%2C%20key%29%20%7B%0A%20%20%20%20%20%20%20%20return%20%21_.contains%28keys%2C%20key%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20_.pick%28obj%2C%20iteratee%2C%20context%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Fill%20in%20a%20given%20object%20with%20default%20properties.%0A%20%20_.defaults%20%3D%20createAssigner%28_.allKeys%2C%20true%29%3B%0A%0A%20%20//%20Creates%20an%20object%20that%20inherits%20from%20the%20given%20prototype%20object.%0A%20%20//%20If%20additional%20properties%20are%20provided%20then%20they%20will%20be%20added%20to%20the%0A%20%20//%20created%20object.%0A%20%20_.create%20%3D%20function%28prototype%2C%20props%29%20%7B%0A%20%20%20%20var%20result%20%3D%20baseCreate%28prototype%29%3B%0A%20%20%20%20if%20%28props%29%20_.extendOwn%28result%2C%20props%29%3B%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20%28shallow-cloned%29%20duplicate%20of%20an%20object.%0A%20%20_.clone%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20obj%3B%0A%20%20%20%20return%20_.isArray%28obj%29%20%3F%20obj.slice%28%29%20%3A%20_.extend%28%7B%7D%2C%20obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invokes%20interceptor%20with%20the%20obj%2C%20and%20then%20returns%20obj.%0A%20%20//%20The%20primary%20purpose%20of%20this%20method%20is%20to%20%22tap%20into%22%20a%20method%20chain%2C%20in%0A%20%20//%20order%20to%20perform%20operations%20on%20intermediate%20results%20within%20the%20chain.%0A%20%20_.tap%20%3D%20function%28obj%2C%20interceptor%29%20%7B%0A%20%20%20%20interceptor%28obj%29%3B%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20whether%20an%20object%20has%20a%20given%20set%20of%20%60key%3Avalue%60%20pairs.%0A%20%20_.isMatch%20%3D%20function%28object%2C%20attrs%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28attrs%29%2C%20length%20%3D%20keys.length%3B%0A%20%20%20%20if%20%28object%20%3D%3D%20null%29%20return%20%21length%3B%0A%20%20%20%20var%20obj%20%3D%20Object%28object%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28attrs%5Bkey%5D%20%21%3D%3D%20obj%5Bkey%5D%20%7C%7C%20%21%28key%20in%20obj%29%29%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%0A%20%20//%20Internal%20recursive%20comparison%20function%20for%20%60isEqual%60.%0A%20%20var%20eq%2C%20deepEq%3B%0A%20%20eq%20%3D%20function%28a%2C%20b%2C%20aStack%2C%20bStack%29%20%7B%0A%20%20%20%20//%20Identical%20objects%20are%20equal.%20%600%20%3D%3D%3D%20-0%60%2C%20but%20they%20aren%27t%20identical.%0A%20%20%20%20//%20See%20the%20%5BHarmony%20%60egal%60%20proposal%5D%28http%3A//wiki.ecmascript.org/doku.php%3Fid%3Dharmony%3Aegal%29.%0A%20%20%20%20if%20%28a%20%3D%3D%3D%20b%29%20return%20a%20%21%3D%3D%200%20%7C%7C%201%20/%20a%20%3D%3D%3D%201%20/%20b%3B%0A%20%20%20%20//%20%60null%60%20or%20%60undefined%60%20only%20equal%20to%20itself%20%28strict%20comparison%29.%0A%20%20%20%20if%20%28a%20%3D%3D%20null%20%7C%7C%20b%20%3D%3D%20null%29%20return%20false%3B%0A%20%20%20%20//%20%60NaN%60s%20are%20equivalent%2C%20but%20non-reflexive.%0A%20%20%20%20if%20%28a%20%21%3D%3D%20a%29%20return%20b%20%21%3D%3D%20b%3B%0A%20%20%20%20//%20Exhaust%20primitive%20checks%0A%20%20%20%20var%20type%20%3D%20typeof%20a%3B%0A%20%20%20%20if%20%28type%20%21%3D%3D%20%27function%27%20%26%26%20type%20%21%3D%3D%20%27object%27%20%26%26%20typeof%20b%20%21%3D%20%27object%27%29%20return%20false%3B%0A%20%20%20%20return%20deepEq%28a%2C%20b%2C%20aStack%2C%20bStack%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20recursive%20comparison%20function%20for%20%60isEqual%60.%0A%20%20deepEq%20%3D%20function%28a%2C%20b%2C%20aStack%2C%20bStack%29%20%7B%0A%20%20%20%20//%20Unwrap%20any%20wrapped%20objects.%0A%20%20%20%20if%20%28a%20instanceof%20_%29%20a%20%3D%20a._wrapped%3B%0A%20%20%20%20if%20%28b%20instanceof%20_%29%20b%20%3D%20b._wrapped%3B%0A%20%20%20%20//%20Compare%20%60%5B%5BClass%5D%5D%60%20names.%0A%20%20%20%20var%20className%20%3D%20toString.call%28a%29%3B%0A%20%20%20%20if%20%28className%20%21%3D%3D%20toString.call%28b%29%29%20return%20false%3B%0A%20%20%20%20switch%20%28className%29%20%7B%0A%20%20%20%20%20%20//%20Strings%2C%20numbers%2C%20regular%20expressions%2C%20dates%2C%20and%20booleans%20are%20compared%20by%20value.%0A%20%20%20%20%20%20case%20%27%5Bobject%20RegExp%5D%27%3A%0A%20%20%20%20%20%20//%20RegExps%20are%20coerced%20to%20strings%20for%20comparison%20%28Note%3A%20%27%27%20%2B%20/a/i%20%3D%3D%3D%20%27/a/i%27%29%0A%20%20%20%20%20%20case%20%27%5Bobject%20String%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20Primitives%20and%20their%20corresponding%20object%20wrappers%20are%20equivalent%3B%20thus%2C%20%60%225%22%60%20is%0A%20%20%20%20%20%20%20%20//%20equivalent%20to%20%60new%20String%28%225%22%29%60.%0A%20%20%20%20%20%20%20%20return%20%27%27%20%2B%20a%20%3D%3D%3D%20%27%27%20%2B%20b%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Number%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20%60NaN%60s%20are%20equivalent%2C%20but%20non-reflexive.%0A%20%20%20%20%20%20%20%20//%20Object%28NaN%29%20is%20equivalent%20to%20NaN.%0A%20%20%20%20%20%20%20%20if%20%28%2Ba%20%21%3D%3D%20%2Ba%29%20return%20%2Bb%20%21%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20%20%20//%20An%20%60egal%60%20comparison%20is%20performed%20for%20other%20numeric%20values.%0A%20%20%20%20%20%20%20%20return%20%2Ba%20%3D%3D%3D%200%20%3F%201%20/%20%2Ba%20%3D%3D%3D%201%20/%20b%20%3A%20%2Ba%20%3D%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Date%5D%27%3A%0A%20%20%20%20%20%20case%20%27%5Bobject%20Boolean%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20Coerce%20dates%20and%20booleans%20to%20numeric%20primitive%20values.%20Dates%20are%20compared%20by%20their%0A%20%20%20%20%20%20%20%20//%20millisecond%20representations.%20Note%20that%20invalid%20dates%20with%20millisecond%20representations%0A%20%20%20%20%20%20%20%20//%20of%20%60NaN%60%20are%20not%20equivalent.%0A%20%20%20%20%20%20%20%20return%20%2Ba%20%3D%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Symbol%5D%27%3A%0A%20%20%20%20%20%20%20%20return%20SymbolProto.valueOf.call%28a%29%20%3D%3D%3D%20SymbolProto.valueOf.call%28b%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20areArrays%20%3D%20className%20%3D%3D%3D%20%27%5Bobject%20Array%5D%27%3B%0A%20%20%20%20if%20%28%21areArrays%29%20%7B%0A%20%20%20%20%20%20if%20%28typeof%20a%20%21%3D%20%27object%27%20%7C%7C%20typeof%20b%20%21%3D%20%27object%27%29%20return%20false%3B%0A%0A%20%20%20%20%20%20//%20Objects%20with%20different%20constructors%20are%20not%20equivalent%2C%20but%20%60Object%60s%20or%20%60Array%60s%0A%20%20%20%20%20%20//%20from%20different%20frames%20are.%0A%20%20%20%20%20%20var%20aCtor%20%3D%20a.constructor%2C%20bCtor%20%3D%20b.constructor%3B%0A%20%20%20%20%20%20if%20%28aCtor%20%21%3D%3D%20bCtor%20%26%26%20%21%28_.isFunction%28aCtor%29%20%26%26%20aCtor%20instanceof%20aCtor%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_.isFunction%28bCtor%29%20%26%26%20bCtor%20instanceof%20bCtor%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20%28%27constructor%27%20in%20a%20%26%26%20%27constructor%27%20in%20b%29%29%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20Assume%20equality%20for%20cyclic%20structures.%20The%20algorithm%20for%20detecting%20cyclic%0A%20%20%20%20//%20structures%20is%20adapted%20from%20ES%205.1%20section%2015.12.3%2C%20abstract%20operation%20%60JO%60.%0A%0A%20%20%20%20//%20Initializing%20stack%20of%20traversed%20objects.%0A%20%20%20%20//%20It%27s%20done%20here%20since%20we%20only%20need%20them%20for%20objects%20and%20arrays%20comparison.%0A%20%20%20%20aStack%20%3D%20aStack%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20bStack%20%3D%20bStack%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20length%20%3D%20aStack.length%3B%0A%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20//%20Linear%20search.%20Performance%20is%20inversely%20proportional%20to%20the%20number%20of%0A%20%20%20%20%20%20//%20unique%20nested%20structures.%0A%20%20%20%20%20%20if%20%28aStack%5Blength%5D%20%3D%3D%3D%20a%29%20return%20bStack%5Blength%5D%20%3D%3D%3D%20b%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20Add%20the%20first%20object%20to%20the%20stack%20of%20traversed%20objects.%0A%20%20%20%20aStack.push%28a%29%3B%0A%20%20%20%20bStack.push%28b%29%3B%0A%0A%20%20%20%20//%20Recursively%20compare%20objects%20and%20arrays.%0A%20%20%20%20if%20%28areArrays%29%20%7B%0A%20%20%20%20%20%20//%20Compare%20array%20lengths%20to%20determine%20if%20a%20deep%20comparison%20is%20necessary.%0A%20%20%20%20%20%20length%20%3D%20a.length%3B%0A%20%20%20%20%20%20if%20%28length%20%21%3D%3D%20b.length%29%20return%20false%3B%0A%20%20%20%20%20%20//%20Deep%20compare%20the%20contents%2C%20ignoring%20non-numeric%20properties.%0A%20%20%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21eq%28a%5Blength%5D%2C%20b%5Blength%5D%2C%20aStack%2C%20bStack%29%29%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20//%20Deep%20compare%20objects.%0A%20%20%20%20%20%20var%20keys%20%3D%20_.keys%28a%29%2C%20key%3B%0A%20%20%20%20%20%20length%20%3D%20keys.length%3B%0A%20%20%20%20%20%20//%20Ensure%20that%20both%20objects%20contain%20the%20same%20number%20of%20properties%20before%20comparing%20deep%20equality.%0A%20%20%20%20%20%20if%20%28_.keys%28b%29.length%20%21%3D%3D%20length%29%20return%20false%3B%0A%20%20%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Deep%20compare%20each%20member%0A%20%20%20%20%20%20%20%20key%20%3D%20keys%5Blength%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28%21%28has%28b%2C%20key%29%20%26%26%20eq%28a%5Bkey%5D%2C%20b%5Bkey%5D%2C%20aStack%2C%20bStack%29%29%29%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20Remove%20the%20first%20object%20from%20the%20stack%20of%20traversed%20objects.%0A%20%20%20%20aStack.pop%28%29%3B%0A%20%20%20%20bStack.pop%28%29%3B%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Perform%20a%20deep%20comparison%20to%20check%20if%20two%20objects%20are%20equal.%0A%20%20_.isEqual%20%3D%20function%28a%2C%20b%29%20%7B%0A%20%20%20%20return%20eq%28a%2C%20b%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20array%2C%20string%2C%20or%20object%20empty%3F%0A%20%20//%20An%20%22empty%22%20object%20has%20no%20enumerable%20own-properties.%0A%20%20_.isEmpty%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20true%3B%0A%20%20%20%20if%20%28isArrayLike%28obj%29%20%26%26%20%28_.isArray%28obj%29%20%7C%7C%20_.isString%28obj%29%20%7C%7C%20_.isArguments%28obj%29%29%29%20return%20obj.length%20%3D%3D%3D%200%3B%0A%20%20%20%20return%20_.keys%28obj%29.length%20%3D%3D%3D%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20a%20DOM%20element%3F%0A%20%20_.isElement%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20%21%21%28obj%20%26%26%20obj.nodeType%20%3D%3D%3D%201%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20an%20array%3F%0A%20%20//%20Delegates%20to%20ECMA5%27s%20native%20Array.isArray%0A%20%20_.isArray%20%3D%20nativeIsArray%20%7C%7C%20function%28obj%29%20%7B%0A%20%20%20%20return%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20Array%5D%27%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20variable%20an%20object%3F%0A%20%20_.isObject%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20type%20%3D%20typeof%20obj%3B%0A%20%20%20%20return%20type%20%3D%3D%3D%20%27function%27%20%7C%7C%20type%20%3D%3D%3D%20%27object%27%20%26%26%20%21%21obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20some%20isType%20methods%3A%20isArguments%2C%20isFunction%2C%20isString%2C%20isNumber%2C%20isDate%2C%20isRegExp%2C%20isError%2C%20isMap%2C%20isWeakMap%2C%20isSet%2C%20isWeakSet.%0A%20%20_.each%28%5B%27Arguments%27%2C%20%27Function%27%2C%20%27String%27%2C%20%27Number%27%2C%20%27Date%27%2C%20%27RegExp%27%2C%20%27Error%27%2C%20%27Symbol%27%2C%20%27Map%27%2C%20%27WeakMap%27%2C%20%27Set%27%2C%20%27WeakSet%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20_%5B%27is%27%20%2B%20name%5D%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20%27%20%2B%20name%20%2B%20%27%5D%27%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Define%20a%20fallback%20version%20of%20the%20method%20in%20browsers%20%28ahem%2C%20IE%20%3C%209%29%2C%20where%0A%20%20//%20there%20isn%27t%20any%20inspectable%20%22Arguments%22%20type.%0A%20%20if%20%28%21_.isArguments%28arguments%29%29%20%7B%0A%20%20%20%20_.isArguments%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20has%28obj%2C%20%27callee%27%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20//%20Optimize%20%60isFunction%60%20if%20appropriate.%20Work%20around%20some%20typeof%20bugs%20in%20old%20v8%2C%0A%20%20//%20IE%2011%20%28%231621%29%2C%20Safari%208%20%28%231929%29%2C%20and%20PhantomJS%20%28%232236%29.%0A%20%20var%20nodelist%20%3D%20root.document%20%26%26%20root.document.childNodes%3B%0A%20%20if%20%28typeof%20/./%20%21%3D%20%27function%27%20%26%26%20typeof%20Int8Array%20%21%3D%20%27object%27%20%26%26%20typeof%20nodelist%20%21%3D%20%27function%27%29%20%7B%0A%20%20%20%20_.isFunction%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20typeof%20obj%20%3D%3D%20%27function%27%20%7C%7C%20false%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20//%20Is%20a%20given%20object%20a%20finite%20number%3F%0A%20%20_.isFinite%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20%21_.isSymbol%28obj%29%20%26%26%20isFinite%28obj%29%20%26%26%20%21isNaN%28parseFloat%28obj%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20the%20given%20value%20%60NaN%60%3F%0A%20%20_.isNaN%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20_.isNumber%28obj%29%20%26%26%20isNaN%28obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20a%20boolean%3F%0A%20%20_.isBoolean%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20true%20%7C%7C%20obj%20%3D%3D%3D%20false%20%7C%7C%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20Boolean%5D%27%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20equal%20to%20null%3F%0A%20%20_.isNull%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20null%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20variable%20undefined%3F%0A%20%20_.isUndefined%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20void%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Shortcut%20function%20for%20checking%20if%20an%20object%20has%20a%20given%20property%20directly%0A%20%20//%20on%20itself%20%28in%20other%20words%2C%20not%20on%20a%20prototype%29.%0A%20%20_.has%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20return%20has%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20path%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28obj%20%3D%3D%20null%20%7C%7C%20%21hasOwnProperty.call%28obj%2C%20key%29%29%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20obj%20%3D%20obj%5Bkey%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20%21%21length%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Utility%20Functions%0A%20%20//%20-----------------%0A%0A%20%20//%20Run%20Underscore.js%20in%20%2AnoConflict%2A%20mode%2C%20returning%20the%20%60_%60%20variable%20to%20its%0A%20%20//%20previous%20owner.%20Returns%20a%20reference%20to%20the%20Underscore%20object.%0A%20%20_.noConflict%20%3D%20function%28%29%20%7B%0A%20%20%20%20root._%20%3D%20previousUnderscore%3B%0A%20%20%20%20return%20this%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Keep%20the%20identity%20function%20around%20for%20default%20iteratees.%0A%20%20_.identity%20%3D%20function%28value%29%20%7B%0A%20%20%20%20return%20value%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Predicate-generating%20functions.%20Often%20useful%20outside%20of%20Underscore.%0A%20%20_.constant%20%3D%20function%28value%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20_.noop%20%3D%20function%28%29%7B%7D%3B%0A%0A%20%20//%20Creates%20a%20function%20that%2C%20when%20passed%20an%20object%2C%20will%20traverse%20that%20object%E2%80%99s%0A%20%20//%20properties%20down%20the%20given%20%60path%60%2C%20specified%20as%20an%20array%20of%20keys%20or%20indexes.%0A%20%20_.property%20%3D%20function%28path%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20return%20shallowProperty%28path%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20deepGet%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generates%20a%20function%20for%20a%20given%20object%20that%20returns%20a%20given%20property.%0A%20%20_.propertyOf%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20return%20function%28%29%7B%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28path%29%20%7B%0A%20%20%20%20%20%20return%20%21_.isArray%28path%29%20%3F%20obj%5Bpath%5D%20%3A%20deepGet%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20predicate%20for%20checking%20whether%20an%20object%20has%20a%20given%20set%20of%0A%20%20//%20%60key%3Avalue%60%20pairs.%0A%20%20_.matcher%20%3D%20_.matches%20%3D%20function%28attrs%29%20%7B%0A%20%20%20%20attrs%20%3D%20_.extendOwn%28%7B%7D%2C%20attrs%29%3B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20_.isMatch%28obj%2C%20attrs%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Run%20a%20function%20%2A%2An%2A%2A%20times.%0A%20%20_.times%20%3D%20function%28n%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20accum%20%3D%20Array%28Math.max%280%2C%20n%29%29%3B%0A%20%20%20%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20context%2C%201%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20n%3B%20i%2B%2B%29%20accum%5Bi%5D%20%3D%20iteratee%28i%29%3B%0A%20%20%20%20return%20accum%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20random%20integer%20between%20min%20and%20max%20%28inclusive%29.%0A%20%20_.random%20%3D%20function%28min%2C%20max%29%20%7B%0A%20%20%20%20if%20%28max%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20max%20%3D%20min%3B%0A%20%20%20%20%20%20min%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20min%20%2B%20Math.floor%28Math.random%28%29%20%2A%20%28max%20-%20min%20%2B%201%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20A%20%28possibly%20faster%29%20way%20to%20get%20the%20current%20timestamp%20as%20an%20integer.%0A%20%20_.now%20%3D%20Date.now%20%7C%7C%20function%28%29%20%7B%0A%20%20%20%20return%20new%20Date%28%29.getTime%28%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20List%20of%20HTML%20entities%20for%20escaping.%0A%20%20var%20escapeMap%20%3D%20%7B%0A%20%20%20%20%27%26%27%3A%20%27%26amp%3B%27%2C%0A%20%20%20%20%27%3C%27%3A%20%27%26lt%3B%27%2C%0A%20%20%20%20%27%3E%27%3A%20%27%26gt%3B%27%2C%0A%20%20%20%20%27%22%27%3A%20%27%26quot%3B%27%2C%0A%20%20%20%20%22%27%22%3A%20%27%26%23x27%3B%27%2C%0A%20%20%20%20%27%60%27%3A%20%27%26%23x60%3B%27%0A%20%20%7D%3B%0A%20%20var%20unescapeMap%20%3D%20_.invert%28escapeMap%29%3B%0A%0A%20%20//%20Functions%20for%20escaping%20and%20unescaping%20strings%20to/from%20HTML%20interpolation.%0A%20%20var%20createEscaper%20%3D%20function%28map%29%20%7B%0A%20%20%20%20var%20escaper%20%3D%20function%28match%29%20%7B%0A%20%20%20%20%20%20return%20map%5Bmatch%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20//%20Regexes%20for%20identifying%20a%20key%20that%20needs%20to%20be%20escaped.%0A%20%20%20%20var%20source%20%3D%20%27%28%3F%3A%27%20%2B%20_.keys%28map%29.join%28%27%7C%27%29%20%2B%20%27%29%27%3B%0A%20%20%20%20var%20testRegexp%20%3D%20RegExp%28source%29%3B%0A%20%20%20%20var%20replaceRegexp%20%3D%20RegExp%28source%2C%20%27g%27%29%3B%0A%20%20%20%20return%20function%28string%29%20%7B%0A%20%20%20%20%20%20string%20%3D%20string%20%3D%3D%20null%20%3F%20%27%27%20%3A%20%27%27%20%2B%20string%3B%0A%20%20%20%20%20%20return%20testRegexp.test%28string%29%20%3F%20string.replace%28replaceRegexp%2C%20escaper%29%20%3A%20string%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%20%20_.escape%20%3D%20createEscaper%28escapeMap%29%3B%0A%20%20_.unescape%20%3D%20createEscaper%28unescapeMap%29%3B%0A%0A%20%20//%20Traverses%20the%20children%20of%20%60obj%60%20along%20%60path%60.%20If%20a%20child%20is%20a%20function%2C%20it%0A%20%20//%20is%20invoked%20with%20its%20parent%20as%20context.%20Returns%20the%20value%20of%20the%20final%0A%20%20//%20child%2C%20or%20%60fallback%60%20if%20any%20child%20is%20undefined.%0A%20%20_.result%20%3D%20function%28obj%2C%20path%2C%20fallback%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20path%20%3D%20%5Bpath%5D%3B%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20if%20%28%21length%29%20%7B%0A%20%20%20%20%20%20return%20_.isFunction%28fallback%29%20%3F%20fallback.call%28obj%29%20%3A%20fallback%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20prop%20%3D%20obj%20%3D%3D%20null%20%3F%20void%200%20%3A%20obj%5Bpath%5Bi%5D%5D%3B%0A%20%20%20%20%20%20if%20%28prop%20%3D%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20prop%20%3D%20fallback%3B%0A%20%20%20%20%20%20%20%20i%20%3D%20length%3B%20//%20Ensure%20we%20don%27t%20continue%20iterating.%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20obj%20%3D%20_.isFunction%28prop%29%20%3F%20prop.call%28obj%29%20%3A%20prop%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generate%20a%20unique%20integer%20id%20%28unique%20within%20the%20entire%20client%20session%29.%0A%20%20//%20Useful%20for%20temporary%20DOM%20ids.%0A%20%20var%20idCounter%20%3D%200%3B%0A%20%20_.uniqueId%20%3D%20function%28prefix%29%20%7B%0A%20%20%20%20var%20id%20%3D%20%2B%2BidCounter%20%2B%20%27%27%3B%0A%20%20%20%20return%20prefix%20%3F%20prefix%20%2B%20id%20%3A%20id%3B%0A%20%20%7D%3B%0A%0A%20%20//%20By%20default%2C%20Underscore%20uses%20ERB-style%20template%20delimiters%2C%20change%20the%0A%20%20//%20following%20template%20settings%20to%20use%20alternative%20delimiters.%0A%20%20_.templateSettings%20%3D%20%7B%0A%20%20%20%20evaluate%3A%20/%3C%25%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%2C%0A%20%20%20%20interpolate%3A%20/%3C%25%3D%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%2C%0A%20%20%20%20escape%3A%20/%3C%25-%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%0A%20%20%7D%3B%0A%0A%20%20//%20When%20customizing%20%60templateSettings%60%2C%20if%20you%20don%27t%20want%20to%20define%20an%0A%20%20//%20interpolation%2C%20evaluation%20or%20escaping%20regex%2C%20we%20need%20one%20that%20is%0A%20%20//%20guaranteed%20not%20to%20match.%0A%20%20var%20noMatch%20%3D%20/%28.%29%5E/%3B%0A%0A%20%20//%20Certain%20characters%20need%20to%20be%20escaped%20so%20that%20they%20can%20be%20put%20into%20a%0A%20%20//%20string%20literal.%0A%20%20var%20escapes%20%3D%20%7B%0A%20%20%20%20%22%27%22%3A%20%22%27%22%2C%0A%20%20%20%20%27%5C%5C%27%3A%20%27%5C%5C%27%2C%0A%20%20%20%20%27%5Cr%27%3A%20%27r%27%2C%0A%20%20%20%20%27%5Cn%27%3A%20%27n%27%2C%0A%20%20%20%20%27%5Cu2028%27%3A%20%27u2028%27%2C%0A%20%20%20%20%27%5Cu2029%27%3A%20%27u2029%27%0A%20%20%7D%3B%0A%0A%20%20var%20escapeRegExp%20%3D%20/%5C%5C%7C%27%7C%5Cr%7C%5Cn%7C%5Cu2028%7C%5Cu2029/g%3B%0A%0A%20%20var%20escapeChar%20%3D%20function%28match%29%20%7B%0A%20%20%20%20return%20%27%5C%5C%27%20%2B%20escapes%5Bmatch%5D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20In%20order%20to%20prevent%20third-party%20code%20injection%20through%0A%20%20//%20%60_.templateSettings.variable%60%2C%20we%20test%20it%20against%20the%20following%20regular%0A%20%20//%20expression.%20It%20is%20intentionally%20a%20bit%20more%20liberal%20than%20just%20matching%20valid%0A%20%20//%20identifiers%2C%20but%20still%20prevents%20possible%20loopholes%20through%20defaults%20or%0A%20%20//%20destructuring%20assignment.%0A%20%20var%20bareIdentifier%20%3D%20/%5E%5Cs%2A%28%5Cw%7C%5C%24%29%2B%5Cs%2A%24/%3B%0A%0A%20%20//%20JavaScript%20micro-templating%2C%20similar%20to%20John%20Resig%27s%20implementation.%0A%20%20//%20Underscore%20templating%20handles%20arbitrary%20delimiters%2C%20preserves%20whitespace%2C%0A%20%20//%20and%20correctly%20escapes%20quotes%20within%20interpolated%20code.%0A%20%20//%20NB%3A%20%60oldSettings%60%20only%20exists%20for%20backwards%20compatibility.%0A%20%20_.template%20%3D%20function%28text%2C%20settings%2C%20oldSettings%29%20%7B%0A%20%20%20%20if%20%28%21settings%20%26%26%20oldSettings%29%20settings%20%3D%20oldSettings%3B%0A%20%20%20%20settings%20%3D%20_.defaults%28%7B%7D%2C%20settings%2C%20_.templateSettings%29%3B%0A%0A%20%20%20%20//%20Combine%20delimiters%20into%20one%20regular%20expression%20via%20alternation.%0A%20%20%20%20var%20matcher%20%3D%20RegExp%28%5B%0A%20%20%20%20%20%20%28settings.escape%20%7C%7C%20noMatch%29.source%2C%0A%20%20%20%20%20%20%28settings.interpolate%20%7C%7C%20noMatch%29.source%2C%0A%20%20%20%20%20%20%28settings.evaluate%20%7C%7C%20noMatch%29.source%0A%20%20%20%20%5D.join%28%27%7C%27%29%20%2B%20%27%7C%24%27%2C%20%27g%27%29%3B%0A%0A%20%20%20%20//%20Compile%20the%20template%20source%2C%20escaping%20string%20literals%20appropriately.%0A%20%20%20%20var%20index%20%3D%200%3B%0A%20%20%20%20var%20source%20%3D%20%22__p%2B%3D%27%22%3B%0A%20%20%20%20text.replace%28matcher%2C%20function%28match%2C%20escape%2C%20interpolate%2C%20evaluate%2C%20offset%29%20%7B%0A%20%20%20%20%20%20source%20%2B%3D%20text.slice%28index%2C%20offset%29.replace%28escapeRegExp%2C%20escapeChar%29%3B%0A%20%20%20%20%20%20index%20%3D%20offset%20%2B%20match.length%3B%0A%0A%20%20%20%20%20%20if%20%28escape%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%2B%5Cn%28%28__t%3D%28%22%20%2B%20escape%20%2B%20%22%29%29%3D%3Dnull%3F%27%27%3A_.escape%28__t%29%29%2B%5Cn%27%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28interpolate%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%2B%5Cn%28%28__t%3D%28%22%20%2B%20interpolate%20%2B%20%22%29%29%3D%3Dnull%3F%27%27%3A__t%29%2B%5Cn%27%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28evaluate%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%3B%5Cn%22%20%2B%20evaluate%20%2B%20%22%5Cn__p%2B%3D%27%22%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%20Adobe%20VMs%20need%20the%20match%20returned%20to%20produce%20the%20correct%20offset.%0A%20%20%20%20%20%20return%20match%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20source%20%2B%3D%20%22%27%3B%5Cn%22%3B%0A%0A%20%20%20%20var%20argument%20%3D%20settings.variable%3B%0A%20%20%20%20if%20%28argument%29%20%7B%0A%20%20%20%20%20%20//%20Insure%20against%20third-party%20code%20injection.%0A%20%20%20%20%20%20if%20%28%21bareIdentifier.test%28argument%29%29%20throw%20new%20Error%28%0A%20%20%20%20%20%20%20%20%27variable%20is%20not%20a%20bare%20identifier%3A%20%27%20%2B%20argument%0A%20%20%20%20%20%20%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20//%20If%20a%20variable%20is%20not%20specified%2C%20place%20data%20values%20in%20local%20scope.%0A%20%20%20%20%20%20source%20%3D%20%27with%28obj%7C%7C%7B%7D%29%7B%5Cn%27%20%2B%20source%20%2B%20%27%7D%5Cn%27%3B%0A%20%20%20%20%20%20argument%20%3D%20%27obj%27%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20source%20%3D%20%22var%20__t%2C__p%3D%27%27%2C__j%3DArray.prototype.join%2C%22%20%2B%0A%20%20%20%20%20%20%22print%3Dfunction%28%29%7B__p%2B%3D__j.call%28arguments%2C%27%27%29%3B%7D%3B%5Cn%22%20%2B%0A%20%20%20%20%20%20source%20%2B%20%27return%20__p%3B%5Cn%27%3B%0A%0A%20%20%20%20var%20render%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20render%20%3D%20new%20Function%28argument%2C%20%27_%27%2C%20source%29%3B%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%0A%20%20%20%20%20%20e.source%20%3D%20source%3B%0A%20%20%20%20%20%20throw%20e%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20template%20%3D%20function%28data%29%20%7B%0A%20%20%20%20%20%20return%20render.call%28this%2C%20data%2C%20_%29%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20//%20Provide%20the%20compiled%20source%20as%20a%20convenience%20for%20precompilation.%0A%20%20%20%20template.source%20%3D%20%27function%28%27%20%2B%20argument%20%2B%20%27%29%7B%5Cn%27%20%2B%20source%20%2B%20%27%7D%27%3B%0A%0A%20%20%20%20return%20template%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20a%20%22chain%22%20function.%20Start%20chaining%20a%20wrapped%20Underscore%20object.%0A%20%20_.chain%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20instance%20%3D%20_%28obj%29%3B%0A%20%20%20%20instance._chain%20%3D%20true%3B%0A%20%20%20%20return%20instance%3B%0A%20%20%7D%3B%0A%0A%20%20//%20OOP%0A%20%20//%20---------------%0A%20%20//%20If%20Underscore%20is%20called%20as%20a%20function%2C%20it%20returns%20a%20wrapped%20object%20that%0A%20%20//%20can%20be%20used%20OO-style.%20This%20wrapper%20holds%20altered%20versions%20of%20all%20the%0A%20%20//%20underscore%20functions.%20Wrapped%20objects%20may%20be%20chained.%0A%0A%20%20//%20Helper%20function%20to%20continue%20chaining%20intermediate%20results.%0A%20%20var%20chainResult%20%3D%20function%28instance%2C%20obj%29%20%7B%0A%20%20%20%20return%20instance._chain%20%3F%20_%28obj%29.chain%28%29%20%3A%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20your%20own%20custom%20functions%20to%20the%20Underscore%20object.%0A%20%20_.mixin%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20_.each%28_.functions%28obj%29%2C%20function%28name%29%20%7B%0A%20%20%20%20%20%20var%20func%20%3D%20_%5Bname%5D%20%3D%20obj%5Bname%5D%3B%0A%20%20%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20args%20%3D%20%5Bthis._wrapped%5D%3B%0A%20%20%20%20%20%20%20%20push.apply%28args%2C%20arguments%29%3B%0A%20%20%20%20%20%20%20%20return%20chainResult%28this%2C%20func.apply%28_%2C%20args%29%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20_%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20all%20of%20the%20Underscore%20functions%20to%20the%20wrapper%20object.%0A%20%20_.mixin%28_%29%3B%0A%0A%20%20//%20Add%20all%20mutator%20Array%20functions%20to%20the%20wrapper.%0A%20%20_.each%28%5B%27pop%27%2C%20%27push%27%2C%20%27reverse%27%2C%20%27shift%27%2C%20%27sort%27%2C%20%27splice%27%2C%20%27unshift%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20var%20method%20%3D%20ArrayProto%5Bname%5D%3B%0A%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20obj%20%3D%20this._wrapped%3B%0A%20%20%20%20%20%20method.apply%28obj%2C%20arguments%29%3B%0A%20%20%20%20%20%20if%20%28%28name%20%3D%3D%3D%20%27shift%27%20%7C%7C%20name%20%3D%3D%3D%20%27splice%27%29%20%26%26%20obj.length%20%3D%3D%3D%200%29%20delete%20obj%5B0%5D%3B%0A%20%20%20%20%20%20return%20chainResult%28this%2C%20obj%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Add%20all%20accessor%20Array%20functions%20to%20the%20wrapper.%0A%20%20_.each%28%5B%27concat%27%2C%20%27join%27%2C%20%27slice%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20var%20method%20%3D%20ArrayProto%5Bname%5D%3B%0A%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20chainResult%28this%2C%20method.apply%28this._wrapped%2C%20arguments%29%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Extracts%20the%20result%20from%20a%20wrapped%20and%20chained%20object.%0A%20%20_.prototype.value%20%3D%20function%28%29%20%7B%0A%20%20%20%20return%20this._wrapped%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Provide%20unwrapping%20proxy%20for%20some%20methods%20used%20in%20engine%20operations%0A%20%20//%20such%20as%20arithmetic%20and%20JSON%20stringification.%0A%20%20_.prototype.valueOf%20%3D%20_.prototype.toJSON%20%3D%20_.prototype.value%3B%0A%0A%20%20_.prototype.toString%20%3D%20function%28%29%20%7B%0A%20%20%20%20return%20String%28this._wrapped%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20AMD%20registration%20happens%20at%20the%20end%20for%20compatibility%20with%20AMD%20loaders%0A%20%20//%20that%20may%20not%20enforce%20next-turn%20semantics%20on%20modules.%20Even%20though%20general%0A%20%20//%20practice%20for%20AMD%20registration%20is%20to%20be%20anonymous%2C%20underscore%20registers%0A%20%20//%20as%20a%20named%20module%20because%2C%20like%20jQuery%2C%20it%20is%20a%20base%20library%20that%20is%0A%20%20//%20popular%20enough%20to%20be%20bundled%20in%20a%20third%20party%20lib%2C%20but%20not%20be%20part%20of%0A%20%20//%20an%20AMD%20load%20request.%20Those%20cases%20could%20generate%20an%20error%20when%20an%0A%20%20//%20anonymous%20define%28%29%20is%20called%20outside%20of%20a%20loader%20request.%0A%20%20if%20%28typeof%20define%20%3D%3D%20%27function%27%20%26%26%20define.amd%29%20%7B%0A%20%20%20%20define%28%27underscore%27%2C%20%5B%5D%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20_%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%7D%28%29%29%3B%0A"></script><!--URL:_static/underscore.js-->
-<script src="data:application/javascript,/%2A%0A%20%2A%20doctools.js%0A%20%2A%20~~~~~~~~~~~%0A%20%2A%0A%20%2A%20Sphinx%20JavaScript%20utilities%20for%20all%20documentation.%0A%20%2A%0A%20%2A%20%3Acopyright%3A%20Copyright%202007-2021%20by%20the%20Sphinx%20team%2C%20see%20AUTHORS.%0A%20%2A%20%3Alicense%3A%20BSD%2C%20see%20LICENSE%20for%20details.%0A%20%2A%0A%20%2A/%0A%0A/%2A%2A%0A%20%2A%20select%20a%20different%20prefix%20for%20underscore%0A%20%2A/%0A%24u%20%3D%20_.noConflict%28%29%3B%0A%0A/%2A%2A%0A%20%2A%20make%20the%20code%20below%20compatible%20with%20browsers%20without%0A%20%2A%20an%20installed%20firebug%20like%20debugger%0Aif%20%28%21window.console%20%7C%7C%20%21console.firebug%29%20%7B%0A%20%20var%20names%20%3D%20%5B%22log%22%2C%20%22debug%22%2C%20%22info%22%2C%20%22warn%22%2C%20%22error%22%2C%20%22assert%22%2C%20%22dir%22%2C%0A%20%20%20%20%22dirxml%22%2C%20%22group%22%2C%20%22groupEnd%22%2C%20%22time%22%2C%20%22timeEnd%22%2C%20%22count%22%2C%20%22trace%22%2C%0A%20%20%20%20%22profile%22%2C%20%22profileEnd%22%5D%3B%0A%20%20window.console%20%3D%20%7B%7D%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20names.length%3B%20%2B%2Bi%29%0A%20%20%20%20window.console%5Bnames%5Bi%5D%5D%20%3D%20function%28%29%20%7B%7D%3B%0A%7D%0A%20%2A/%0A%0A/%2A%2A%0A%20%2A%20small%20helper%20function%20to%20urldecode%20strings%0A%20%2A/%0AjQuery.urldecode%20%3D%20function%28x%29%20%7B%0A%20%20return%20decodeURIComponent%28x%29.replace%28/%5C%2B/g%2C%20%27%20%27%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20small%20helper%20function%20to%20urlencode%20strings%0A%20%2A/%0AjQuery.urlencode%20%3D%20encodeURIComponent%3B%0A%0A/%2A%2A%0A%20%2A%20This%20function%20returns%20the%20parsed%20url%20parameters%20of%20the%0A%20%2A%20current%20request.%20Multiple%20values%20per%20key%20are%20supported%2C%0A%20%2A%20it%20will%20always%20return%20arrays%20of%20strings%20for%20the%20value%20parts.%0A%20%2A/%0AjQuery.getQueryParameters%20%3D%20function%28s%29%20%7B%0A%20%20if%20%28typeof%20s%20%3D%3D%3D%20%27undefined%27%29%0A%20%20%20%20s%20%3D%20document.location.search%3B%0A%20%20var%20parts%20%3D%20s.substr%28s.indexOf%28%27%3F%27%29%20%2B%201%29.split%28%27%26%27%29%3B%0A%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20parts.length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20var%20tmp%20%3D%20parts%5Bi%5D.split%28%27%3D%27%2C%202%29%3B%0A%20%20%20%20var%20key%20%3D%20jQuery.urldecode%28tmp%5B0%5D%29%3B%0A%20%20%20%20var%20value%20%3D%20jQuery.urldecode%28tmp%5B1%5D%29%3B%0A%20%20%20%20if%20%28key%20in%20result%29%0A%20%20%20%20%20%20result%5Bkey%5D.push%28value%29%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20result%5Bkey%5D%20%3D%20%5Bvalue%5D%3B%0A%20%20%7D%0A%20%20return%20result%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20highlight%20a%20given%20string%20on%20a%20jquery%20object%20by%20wrapping%20it%20in%0A%20%2A%20span%20elements%20with%20the%20given%20class%20name.%0A%20%2A/%0AjQuery.fn.highlightText%20%3D%20function%28text%2C%20className%29%20%7B%0A%20%20function%20highlight%28node%2C%20addItems%29%20%7B%0A%20%20%20%20if%20%28node.nodeType%20%3D%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20var%20val%20%3D%20node.nodeValue%3B%0A%20%20%20%20%20%20var%20pos%20%3D%20val.toLowerCase%28%29.indexOf%28text%29%3B%0A%20%20%20%20%20%20if%20%28pos%20%3E%3D%200%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%21jQuery%28node.parentNode%29.hasClass%28className%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%21jQuery%28node.parentNode%29.hasClass%28%22nohighlight%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20var%20span%3B%0A%20%20%20%20%20%20%20%20var%20isInSVG%20%3D%20jQuery%28node%29.closest%28%22body%2C%20svg%2C%20foreignObject%22%29.is%28%22svg%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28isInSVG%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20span%20%3D%20document.createElementNS%28%22http%3A//www.w3.org/2000/svg%22%2C%20%22tspan%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20span%20%3D%20document.createElement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20span.className%20%3D%20className%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20span.appendChild%28document.createTextNode%28val.substr%28pos%2C%20text.length%29%29%29%3B%0A%20%20%20%20%20%20%20%20node.parentNode.insertBefore%28span%2C%20node.parentNode.insertBefore%28%0A%20%20%20%20%20%20%20%20%20%20document.createTextNode%28val.substr%28pos%20%2B%20text.length%29%29%2C%0A%20%20%20%20%20%20%20%20%20%20node.nextSibling%29%29%3B%0A%20%20%20%20%20%20%20%20node.nodeValue%20%3D%20val.substr%280%2C%20pos%29%3B%0A%20%20%20%20%20%20%20%20if%20%28isInSVG%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20rect%20%3D%20document.createElementNS%28%22http%3A//www.w3.org/2000/svg%22%2C%20%22rect%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20bbox%20%3D%20node.parentElement.getBBox%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20rect.x.baseVal.value%20%3D%20bbox.x%3B%0A%20%20%20%20%20%20%20%20%20%20rect.y.baseVal.value%20%3D%20bbox.y%3B%0A%20%20%20%20%20%20%20%20%20%20rect.width.baseVal.value%20%3D%20bbox.width%3B%0A%20%20%20%20%20%20%20%20%20%20rect.height.baseVal.value%20%3D%20bbox.height%3B%0A%20%20%20%20%20%20%20%20%20%20rect.setAttribute%28%27class%27%2C%20className%29%3B%0A%20%20%20%20%20%20%20%20%20%20addItems.push%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22parent%22%3A%20node.parentNode%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22target%22%3A%20rect%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28%21jQuery%28node%29.is%28%22button%2C%20select%2C%20textarea%22%29%29%20%7B%0A%20%20%20%20%20%20jQuery.each%28node.childNodes%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20highlight%28this%2C%20addItems%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20var%20addItems%20%3D%20%5B%5D%3B%0A%20%20var%20result%20%3D%20this.each%28function%28%29%20%7B%0A%20%20%20%20highlight%28this%2C%20addItems%29%3B%0A%20%20%7D%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20addItems.length%3B%20%2B%2Bi%29%20%7B%0A%20%20%20%20jQuery%28addItems%5Bi%5D.parent%29.before%28addItems%5Bi%5D.target%29%3B%0A%20%20%7D%0A%20%20return%20result%3B%0A%7D%3B%0A%0A/%2A%0A%20%2A%20backward%20compatibility%20for%20jQuery.browser%0A%20%2A%20This%20will%20be%20supported%20until%20firefox%20bug%20is%20fixed.%0A%20%2A/%0Aif%20%28%21jQuery.browser%29%20%7B%0A%20%20jQuery.uaMatch%20%3D%20function%28ua%29%20%7B%0A%20%20%20%20ua%20%3D%20ua.toLowerCase%28%29%3B%0A%0A%20%20%20%20var%20match%20%3D%20/%28chrome%29%5B%20%5C/%5D%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20/%28webkit%29%5B%20%5C/%5D%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20/%28opera%29%28%3F%3A.%2Aversion%7C%29%5B%20%5C/%5D%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20/%28msie%29%20%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20ua.indexOf%28%22compatible%22%29%20%3C%200%20%26%26%20/%28mozilla%29%28%3F%3A.%2A%3F%20rv%3A%28%5B%5Cw.%5D%2B%29%7C%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20%5B%5D%3B%0A%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20browser%3A%20match%5B%201%20%5D%20%7C%7C%20%22%22%2C%0A%20%20%20%20%20%20version%3A%20match%5B%202%20%5D%20%7C%7C%20%220%22%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%20%20jQuery.browser%20%3D%20%7B%7D%3B%0A%20%20jQuery.browser%5BjQuery.uaMatch%28navigator.userAgent%29.browser%5D%20%3D%20true%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Small%20JavaScript%20module%20for%20the%20documentation.%0A%20%2A/%0Avar%20Documentation%20%3D%20%7B%0A%0A%20%20init%20%3A%20function%28%29%20%7B%0A%20%20%20%20this.fixFirefoxAnchorBug%28%29%3B%0A%20%20%20%20this.highlightSearchWords%28%29%3B%0A%20%20%20%20this.initIndexTable%28%29%3B%0A%20%20%20%20if%20%28DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS%29%20%7B%0A%20%20%20%20%20%20this.initOnKeyListeners%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20i18n%20support%0A%20%20%20%2A/%0A%20%20TRANSLATIONS%20%3A%20%7B%7D%2C%0A%20%20PLURAL_EXPR%20%3A%20function%28n%29%20%7B%20return%20n%20%3D%3D%3D%201%20%3F%200%20%3A%201%3B%20%7D%2C%0A%20%20LOCALE%20%3A%20%27unknown%27%2C%0A%0A%20%20//%20gettext%20and%20ngettext%20don%27t%20access%20this%20so%20that%20the%20functions%0A%20%20//%20can%20safely%20bound%20to%20a%20different%20name%20%28_%20%3D%20Documentation.gettext%29%0A%20%20gettext%20%3A%20function%28string%29%20%7B%0A%20%20%20%20var%20translated%20%3D%20Documentation.TRANSLATIONS%5Bstring%5D%3B%0A%20%20%20%20if%20%28typeof%20translated%20%3D%3D%3D%20%27undefined%27%29%0A%20%20%20%20%20%20return%20string%3B%0A%20%20%20%20return%20%28typeof%20translated%20%3D%3D%3D%20%27string%27%29%20%3F%20translated%20%3A%20translated%5B0%5D%3B%0A%20%20%7D%2C%0A%0A%20%20ngettext%20%3A%20function%28singular%2C%20plural%2C%20n%29%20%7B%0A%20%20%20%20var%20translated%20%3D%20Documentation.TRANSLATIONS%5Bsingular%5D%3B%0A%20%20%20%20if%20%28typeof%20translated%20%3D%3D%3D%20%27undefined%27%29%0A%20%20%20%20%20%20return%20%28n%20%3D%3D%201%29%20%3F%20singular%20%3A%20plural%3B%0A%20%20%20%20return%20translated%5BDocumentation.PLURALEXPR%28n%29%5D%3B%0A%20%20%7D%2C%0A%0A%20%20addTranslations%20%3A%20function%28catalog%29%20%7B%0A%20%20%20%20for%20%28var%20key%20in%20catalog.messages%29%0A%20%20%20%20%20%20this.TRANSLATIONS%5Bkey%5D%20%3D%20catalog.messages%5Bkey%5D%3B%0A%20%20%20%20this.PLURAL_EXPR%20%3D%20new%20Function%28%27n%27%2C%20%27return%20%2B%28%27%20%2B%20catalog.plural_expr%20%2B%20%27%29%27%29%3B%0A%20%20%20%20this.LOCALE%20%3D%20catalog.locale%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20add%20context%20elements%20like%20header%20anchor%20links%0A%20%20%20%2A/%0A%20%20addContextElements%20%3A%20function%28%29%20%7B%0A%20%20%20%20%24%28%27div%5Bid%5D%20%3E%20%3Aheader%3Afirst%27%29.each%28function%28%29%20%7B%0A%20%20%20%20%20%20%24%28%27%3Ca%20class%3D%22headerlink%22%3E%5Cu00B6%3C/a%3E%27%29.%0A%20%20%20%20%20%20attr%28%27href%27%2C%20%27%23%27%20%2B%20this.id%29.%0A%20%20%20%20%20%20attr%28%27title%27%2C%20_%28%27Permalink%20to%20this%20headline%27%29%29.%0A%20%20%20%20%20%20appendTo%28this%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20%24%28%27dt%5Bid%5D%27%29.each%28function%28%29%20%7B%0A%20%20%20%20%20%20%24%28%27%3Ca%20class%3D%22headerlink%22%3E%5Cu00B6%3C/a%3E%27%29.%0A%20%20%20%20%20%20attr%28%27href%27%2C%20%27%23%27%20%2B%20this.id%29.%0A%20%20%20%20%20%20attr%28%27title%27%2C%20_%28%27Permalink%20to%20this%20definition%27%29%29.%0A%20%20%20%20%20%20appendTo%28this%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20workaround%20a%20firefox%20stupidity%0A%20%20%20%2A%20see%3A%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D645075%0A%20%20%20%2A/%0A%20%20fixFirefoxAnchorBug%20%3A%20function%28%29%20%7B%0A%20%20%20%20if%20%28document.location.hash%20%26%26%20%24.browser.mozilla%29%0A%20%20%20%20%20%20window.setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20document.location.href%20%2B%3D%20%27%27%3B%0A%20%20%20%20%20%20%7D%2C%2010%29%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20highlight%20the%20search%20words%20provided%20in%20the%20url%20in%20the%20text%0A%20%20%20%2A/%0A%20%20highlightSearchWords%20%3A%20function%28%29%20%7B%0A%20%20%20%20var%20params%20%3D%20%24.getQueryParameters%28%29%3B%0A%20%20%20%20var%20terms%20%3D%20%28params.highlight%29%20%3F%20params.highlight%5B0%5D.split%28/%5Cs%2B/%29%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28terms.length%29%20%7B%0A%20%20%20%20%20%20var%20body%20%3D%20%24%28%27div.body%27%29%3B%0A%20%20%20%20%20%20if%20%28%21body.length%29%20%7B%0A%20%20%20%20%20%20%20%20body%20%3D%20%24%28%27body%27%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20window.setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%24.each%28terms%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20body.highlightText%28this.toLowerCase%28%29%2C%20%27highlighted%27%29%3B%0A%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%7D%2C%2010%29%3B%0A%20%20%20%20%20%20%24%28%27%3Cp%20class%3D%22highlight-link%22%3E%3Ca%20href%3D%22javascript%3ADocumentation.%27%20%2B%0A%20%20%20%20%20%20%20%20%27hideSearchWords%28%29%22%3E%27%20%2B%20_%28%27Hide%20Search%20Matches%27%29%20%2B%20%27%3C/a%3E%3C/p%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20.appendTo%28%24%28%27%23searchbox%27%29%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20init%20the%20domain%20index%20toggle%20buttons%0A%20%20%20%2A/%0A%20%20initIndexTable%20%3A%20function%28%29%20%7B%0A%20%20%20%20var%20togglers%20%3D%20%24%28%27img.toggler%27%29.click%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20src%20%3D%20%24%28this%29.attr%28%27src%27%29%3B%0A%20%20%20%20%20%20var%20idnum%20%3D%20%24%28this%29.attr%28%27id%27%29.substr%287%29%3B%0A%20%20%20%20%20%20%24%28%27tr.cg-%27%20%2B%20idnum%29.toggle%28%29%3B%0A%20%20%20%20%20%20if%20%28src.substr%28-9%29%20%3D%3D%3D%20%27minus.png%27%29%0A%20%20%20%20%20%20%20%20%24%28this%29.attr%28%27src%27%2C%20src.substr%280%2C%20src.length-9%29%20%2B%20%27plus.png%27%29%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%24%28this%29.attr%28%27src%27%2C%20src.substr%280%2C%20src.length-8%29%20%2B%20%27minus.png%27%29%3B%0A%20%20%20%20%7D%29.css%28%27display%27%2C%20%27%27%29%3B%0A%20%20%20%20if%20%28DOCUMENTATION_OPTIONS.COLLAPSE_INDEX%29%20%7B%0A%20%20%20%20%20%20%20%20togglers.click%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20helper%20function%20to%20hide%20the%20search%20marks%20again%0A%20%20%20%2A/%0A%20%20hideSearchWords%20%3A%20function%28%29%20%7B%0A%20%20%20%20%24%28%27%23searchbox%20.highlight-link%27%29.fadeOut%28300%29%3B%0A%20%20%20%20%24%28%27span.highlighted%27%29.removeClass%28%27highlighted%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20make%20the%20url%20absolute%0A%20%20%20%2A/%0A%20%20makeURL%20%3A%20function%28relativeURL%29%20%7B%0A%20%20%20%20return%20DOCUMENTATION_OPTIONS.URL_ROOT%20%2B%20%27/%27%20%2B%20relativeURL%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20get%20the%20current%20relative%20url%0A%20%20%20%2A/%0A%20%20getCurrentURL%20%3A%20function%28%29%20%7B%0A%20%20%20%20var%20path%20%3D%20document.location.pathname%3B%0A%20%20%20%20var%20parts%20%3D%20path.split%28/%5C//%29%3B%0A%20%20%20%20%24.each%28DOCUMENTATION_OPTIONS.URL_ROOT.split%28/%5C//%29%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28this%20%3D%3D%3D%20%27..%27%29%0A%20%20%20%20%20%20%20%20parts.pop%28%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20var%20url%20%3D%20parts.join%28%27/%27%29%3B%0A%20%20%20%20return%20path.substring%28url.lastIndexOf%28%27/%27%29%20%2B%201%2C%20path.length%20-%201%29%3B%0A%20%20%7D%2C%0A%0A%20%20initOnKeyListeners%3A%20function%28%29%20%7B%0A%20%20%20%20%24%28document%29.keydown%28function%28event%29%20%7B%0A%20%20%20%20%20%20var%20activeElementType%20%3D%20document.activeElement.tagName%3B%0A%20%20%20%20%20%20//%20don%27t%20navigate%20when%20in%20search%20box%2C%20textarea%2C%20dropdown%20or%20button%0A%20%20%20%20%20%20if%20%28activeElementType%20%21%3D%3D%20%27TEXTAREA%27%20%26%26%20activeElementType%20%21%3D%3D%20%27INPUT%27%20%26%26%20activeElementType%20%21%3D%3D%20%27SELECT%27%0A%20%20%20%20%20%20%20%20%20%20%26%26%20activeElementType%20%21%3D%3D%20%27BUTTON%27%20%26%26%20%21event.altKey%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.metaKey%0A%20%20%20%20%20%20%20%20%20%20%26%26%20%21event.shiftKey%29%20%7B%0A%20%20%20%20%20%20%20%20switch%20%28event.keyCode%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%2037%3A%20//%20left%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20prevHref%20%3D%20%24%28%27link%5Brel%3D%22prev%22%5D%27%29.prop%28%27href%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28prevHref%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.location.href%20%3D%20prevHref%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20case%2039%3A%20//%20right%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20nextHref%20%3D%20%24%28%27link%5Brel%3D%22next%22%5D%27%29.prop%28%27href%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28nextHref%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.location.href%20%3D%20nextHref%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%7D%3B%0A%0A//%20quick%20alias%20for%20translations%0A_%20%3D%20Documentation.gettext%3B%0A%0A%24%28document%29.ready%28function%28%29%20%7B%0A%20%20Documentation.init%28%29%3B%0A%7D%29%3B%0A"></script><!--URL:_static/doctools.js-->
-</head><body>
-<div class="document">
-<div class="documentwrapper">
-<div class="bodywrapper">
-<div class="body" role="main">
-<div class="section" id="privacy-policy">
-<h1>Privacy Policy<a class="headerlink" href="#privacy-policy" title="Permalink to this headline">¶</a></h1>
-<p>Last Updated: 11.12.2019</p>
-<p>This Privacy Policy describes the policies and procedures of Taler Systems SA
-(“we,” “our,” or “us”) pertaining to the collection, use, and disclosure of
-your information on our sites and related mobile applications and products we
-offer (the “Services” or “Taler Wallet”). This Privacy Statement applies to
-your personal data when you use our Services, and does not apply to online
-websites or services that we do not own or control.</p>
-<div class="section" id="overview">
-<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
-<p>Your privacy is important to us. We follow a few fundamental principles: We
-don’t ask you for personally identifiable information (defined below). That
-being said, your contact information, such as your phone number, social media
-handle, or email address (depending on how you contact us), may be collected
-when you communicate with us, for example to report a bug or other error
-related to the Taler Wallet. We don’t share your information with third
-parties except when strictly required to deliver you our Services and
-products, or to comply with the law. If you have any questions or concerns
-about this policy, please reach out to us at <a class="reference external" href="mailto:privacy%40taler-systems.net">privacy<span>@</span>taler-systems<span>.</span>net</a>.</p>
-</div>
-<div class="section" id="how-you-accept-this-policy">
-<h2>How you accept this policy<a class="headerlink" href="#how-you-accept-this-policy" title="Permalink to this headline">¶</a></h2>
-<p>By using our Services or visiting our sites, you agree to the use, disclosure,
-and procedures outlined in this Privacy Policy.</p>
-</div>
-<div class="section" id="what-personal-information-do-we-collect-from-our-users">
-<h2>What personal information do we collect from our users?<a class="headerlink" href="#what-personal-information-do-we-collect-from-our-users" title="Permalink to this headline">¶</a></h2>
-<p>The information we collect from you falls into two categories: (i) personally
-identifiable information (i.e., data that could potentially identify you as an
-individual) (“Personal Information”), and (ii) non-personally identifiable
-information (i.e., information that cannot be used to identify who you are)
-(“Non-Personal Information”). This Privacy Policy covers both categories and
-will tell you how we might collect and use each type.</p>
-<p>We do our best to not collect any Personal Information from Taler Wallet
-users. We believe that the Taler Wallet never transmits personal information
-to our services without at least clear implied consent, and we only process
-and retain information with a strict business need. That being said, when
-using our Services, we inherently have to collect the following information:</p>
-<blockquote>
-<div><ul class="simple">
-<li><p>Bank account details necessary when receiving funds from you to top-up your wallet or to transfer funds to you when you are being paid via Taler. At the current experimental stage, only the pseudonym and password you entered in the bank demonstrator is stored.</p></li>
-<li><p>The amounts being withdrawn or deposited, with associated unique transaction identifiers and cryptographic signatures authorizing the transaction. Note that for purchases, we cannot identify the buyer from the collected data, so when you spend money, we only receive non-personal information.</p></li>
-<li><p>When you contact us. We may collect certain information if you choose to contact us, for example to report a bug or other error with the Taler Wallet. This may include contact information such as your name, email address or phone number depending on the method you choose to contact us.</p></li>
-</ul>
-</div></blockquote>
-</div>
-<div class="section" id="how-we-collect-and-process-information">
-<h2>How we collect and process information<a class="headerlink" href="#how-we-collect-and-process-information" title="Permalink to this headline">¶</a></h2>
-<p>We may process your information for the following reasons:</p>
-<blockquote>
-<div><ul class="simple">
-<li><p>to transfer money as specified by our users (Taler transactions);</p></li>
-<li><p>to assist government entities in linking income to the underlying contract as required by law and local regulations</p></li>
-<li><p>to support you using the Taler Wallet or to improve our Services</p></li>
-</ul>
-</div></blockquote>
-</div>
-<div class="section" id="how-we-share-and-use-the-information-we-gather">
-<h2>How we share and use the information we gather<a class="headerlink" href="#how-we-share-and-use-the-information-we-gather" title="Permalink to this headline">¶</a></h2>
-<p>We may share your Personal Data or other information about you only if you are
-a merchant receiving income, with your bank, to the degree necessary to
-execute the payment.</p>
-<p>We retain Personal Data to transfer funds to the accounts designated by our
-users. We may retain Personal Data only for as long as mandated by law and
-required for the wire transfers.</p>
-<p>We primarily use the limited information we receive directly from you to
-enhance the Taler Wallet. Some ways we may use your Personal Information are
-to: Contact you when necessary to respond to your comments, answer your
-questions, or obtain additional information on issues related to bugs or
-errors with the Taler Wallet that you reported.</p>
-</div>
-<div class="section" id="agents-or-third-party-partners">
-<h2>Agents or third party partners<a class="headerlink" href="#agents-or-third-party-partners" title="Permalink to this headline">¶</a></h2>
-<p>We may provide your Personal Information to our employees, contractors,
-agents, service providers, and designees (“Agents”) to enable them to perform
-certain services for us exclusively, including: improvement and maintenance of
-our software and Services.</p>
-</div>
-<div class="section" id="protection-of-us-and-others">
-<h2>Protection of us and others<a class="headerlink" href="#protection-of-us-and-others" title="Permalink to this headline">¶</a></h2>
-<p>We reserve the right to access, read, preserve, and disclose any information
-that we reasonably believe is necessary to comply with the law or a court
-order.</p>
-</div>
-<div class="section" id="what-personal-information-can-i-access-or-change">
-<h2>What personal information can I access or change?<a class="headerlink" href="#what-personal-information-can-i-access-or-change" title="Permalink to this headline">¶</a></h2>
-<p>You can request access to the information we have collected from you. You can
-do this by contacting us at <a class="reference external" href="mailto:privacy%40taler-systems.net">privacy<span>@</span>taler-systems<span>.</span>net</a>. We will make sure to
-provide you with a copy of the data we process about you. To comply with your
-request, we may ask you to verify your identity. We will fulfill your request
-by sending your copy electronically. For any subsequent access request, we may
-charge you with an administrative fee. If you believe that the information we
-have collected is incorrect, you are welcome to contact us so we can update it
-and keep your data accurate. Any data that is no longer needed for purposes
-specified in the “How We Use the Information We Gather” section will be
-deleted after ninety (90) days.</p>
-</div>
-<div class="section" id="what-are-your-data-protection-rights">
-<h2>What are your data protection rights?<a class="headerlink" href="#what-are-your-data-protection-rights" title="Permalink to this headline">¶</a></h2>
-<p>Anastasis would like to make sure you are fully aware of all of your
-data protection rights. Every user is entitled to the following:</p>
-<dl class="simple">
-<dt><strong>The right to access</strong>: You have the right to request Anastasis for</dt><dd><p>copies of your personal data. We may charge you a small fee for this
-service.</p>
-</dd>
-</dl>
-<p><strong>The right to rectification</strong>: You have the right to request that
-Anastasis correct any information you believe is inaccurate. You also
-have the right to request Anastasis to complete information you
-believe is incomplete. The right to erasure - You have the right to
-request that Anastasis erase your personal data, under certain
-conditions.</p>
-<dl class="simple">
-<dt><strong>The right to restrict processing</strong>: You have the right to request</dt><dd><p>that Anastasis restrict the processing of your personal data, under
-certain conditions.</p>
-</dd>
-<dt><strong>The right to object to processing</strong>: You have the right to object to</dt><dd><p>Anastasis’s processing of your personal data, under certain
-conditions.</p>
-</dd>
-<dt><strong>The right to data portability</strong>: You have the right to request that</dt><dd><p>Anastasis transfer the data that we have collected to another
-organization, or directly to you, under certain conditions.</p>
-</dd>
-</dl>
-<p>If you make a request, we have one month to respond to you. If you
-would like to exercise any of these rights, please contact us at our
-email: <a class="reference external" href="mailto:privacy%40taler-systems.com">privacy<span>@</span>taler-systems<span>.</span>com</a></p>
-<p>You can always contact your local data protection authority to enforce
-your rights.</p>
-</div>
-<div class="section" id="data-retention">
-<h2>Data retention<a class="headerlink" href="#data-retention" title="Permalink to this headline">¶</a></h2>
-<p>If you uninstall the Taler Wallet mobile applications from your device, or
-request that your information be deleted, we still may retain some information
-that you have provided to us to maintain the Taler Wallet or to comply with
-relevant laws.</p>
-</div>
-<div class="section" id="data-security">
-<h2>Data security<a class="headerlink" href="#data-security" title="Permalink to this headline">¶</a></h2>
-<p>We are committed to making sure your information is protected. We employ
-several physical and electronic safeguards to keep your information safe,
-including encrypted user passwords, two factor verification and authentication
-on passwords where possible, and securing connections with industry standard
-transport layer security. You are also welcome to contact us using GnuPG
-encrypted e-mail. Even with all these precautions, we cannot fully guarantee
-against the access, disclosure, alteration, or deletion of data through
-events, including but not limited to hardware or software failure or
-unauthorized use. Any information that you provide to us is done so entirely
-at your own risk.</p>
-</div>
-<div class="section" id="changes-and-updates-to-privacy-policy">
-<h2>Changes and updates to privacy policy<a class="headerlink" href="#changes-and-updates-to-privacy-policy" title="Permalink to this headline">¶</a></h2>
-<p>We reserve the right to update and revise this privacy policy at any time. We
-occasionally review this Privacy Policy to make sure it complies with
-applicable laws and conforms to changes in our business. We may need to update
-this Privacy Policy, and we reserve the right to do so at any time. If we do
-revise this Privacy Policy, we will update the “Effective Date” at the bottom
-of this page so that you can tell if it has changed since your last visit. As
-we generally do not collect contact information and also do not track your
-visits, we will not be able to notify you directly. However, the Taler Wallet
-may inform you about a change in the privacy policy once it detects that the
-policy has changed. Please review this Privacy Policy regularly to ensure that
-you are aware of its terms. Any use of our Services after an amendment to our
-Privacy Policy constitutes your acceptance to the revised or amended
-agreement.</p>
-</div>
-<div class="section" id="international-users-and-visitors">
-<h2>International users and visitors<a class="headerlink" href="#international-users-and-visitors" title="Permalink to this headline">¶</a></h2>
-<p>Our Services are hosted in Switzerland. If you are a user accessing the
-Services from the European Union, Asia, US, or any other region with laws or
-regulations governing personal data collection, use, and disclosure that
-differ from Swiss laws, please be advised that through your continued use of
-the Services, which is governed by Swiss law, you are transferring your
-Personal Information to Switzerland and you consent to that transfer.</p>
-</div>
-<div class="section" id="questions">
-<h2>Questions<a class="headerlink" href="#questions" title="Permalink to this headline">¶</a></h2>
-<p>Please contact us at <a class="reference external" href="mailto:privacy%40taler-systems.net">privacy<span>@</span>taler-systems<span>.</span>net</a> if you have questions about our
-privacy practices that are not addressed in this Privacy Statement.</p>
-</div>
-</div>
-<div class="clearer"></div>
-</div>
-</div>
-</div>
-<div class="clearer"></div>
-</div>
-</body>
-</html><!--Generated by HTMLArk 2023-01-06 22:23:08.788175. Original URL _build/html/pp-v0.html--> \ No newline at end of file
diff --git a/contrib/pp/en/pp-v0.md b/contrib/pp/en/pp-v0.md
deleted file mode 100644
index d6e42faf6..000000000
--- a/contrib/pp/en/pp-v0.md
+++ /dev/null
@@ -1,237 +0,0 @@
-Privacy Policy
-**************
-
-Last Updated: 11.12.2019
-
-This Privacy Policy describes the policies and procedures of Taler
-Systems SA (“we,” “our,” or “us”) pertaining to the collection, use,
-and disclosure of your information on our sites and related mobile
-applications and products we offer (the “Services” or “Taler Wallet”).
-This Privacy Statement applies to your personal data when you use our
-Services, and does not apply to online websites or services that we do
-not own or control.
-
-
-Overview
-========
-
-Your privacy is important to us. We follow a few fundamental
-principles: We don’t ask you for personally identifiable information
-(defined below). That being said, your contact information, such as
-your phone number, social media handle, or email address (depending on
-how you contact us), may be collected when you communicate with us,
-for example to report a bug or other error related to the Taler
-Wallet. We don’t share your information with third parties except when
-strictly required to deliver you our Services and products, or to
-comply with the law. If you have any questions or concerns about this
-policy, please reach out to us at privacy@taler-systems.net.
-
-
-How you accept this policy
-==========================
-
-By using our Services or visiting our sites, you agree to the use,
-disclosure, and procedures outlined in this Privacy Policy.
-
-
-What personal information do we collect from our users?
-=======================================================
-
-The information we collect from you falls into two categories: (i)
-personally identifiable information (i.e., data that could potentially
-identify you as an individual) (“Personal Information”), and (ii) non-
-personally identifiable information (i.e., information that cannot be
-used to identify who you are) (“Non-Personal Information”). This
-Privacy Policy covers both categories and will tell you how we might
-collect and use each type.
-
-We do our best to not collect any Personal Information from Taler
-Wallet users. We believe that the Taler Wallet never transmits
-personal information to our services without at least clear implied
-consent, and we only process and retain information with a strict
-business need. That being said, when using our Services, we inherently
-have to collect the following information:
-
- * Bank account details necessary when receiving funds from you to
- top-up your wallet or to transfer funds to you when you are being
- paid via Taler. At the current experimental stage, only the
- pseudonym and password you entered in the bank demonstrator is
- stored.
-
- * The amounts being withdrawn or deposited, with associated unique
- transaction identifiers and cryptographic signatures authorizing
- the transaction. Note that for purchases, we cannot identify the
- buyer from the collected data, so when you spend money, we only
- receive non-personal information.
-
- * When you contact us. We may collect certain information if you
- choose to contact us, for example to report a bug or other error
- with the Taler Wallet. This may include contact information such
- as your name, email address or phone number depending on the
- method you choose to contact us.
-
-
-How we collect and process information
-======================================
-
-We may process your information for the following reasons:
-
- * to transfer money as specified by our users (Taler transactions);
-
- * to assist government entities in linking income to the underlying
- contract as required by law and local regulations
-
- * to support you using the Taler Wallet or to improve our Services
-
-
-How we share and use the information we gather
-==============================================
-
-We may share your Personal Data or other information about you only if
-you are a merchant receiving income, with your bank, to the degree
-necessary to execute the payment.
-
-We retain Personal Data to transfer funds to the accounts designated
-by our users. We may retain Personal Data only for as long as mandated
-by law and required for the wire transfers.
-
-We primarily use the limited information we receive directly from you
-to enhance the Taler Wallet. Some ways we may use your Personal
-Information are to: Contact you when necessary to respond to your
-comments, answer your questions, or obtain additional information on
-issues related to bugs or errors with the Taler Wallet that you
-reported.
-
-
-Agents or third party partners
-==============================
-
-We may provide your Personal Information to our employees,
-contractors, agents, service providers, and designees (“Agents”) to
-enable them to perform certain services for us exclusively, including:
-improvement and maintenance of our software and Services.
-
-
-Protection of us and others
-===========================
-
-We reserve the right to access, read, preserve, and disclose any
-information that we reasonably believe is necessary to comply with the
-law or a court order.
-
-
-What personal information can I access or change?
-=================================================
-
-You can request access to the information we have collected from you.
-You can do this by contacting us at privacy@taler-systems.net. We will
-make sure to provide you with a copy of the data we process about you.
-To comply with your request, we may ask you to verify your identity.
-We will fulfill your request by sending your copy electronically. For
-any subsequent access request, we may charge you with an
-administrative fee. If you believe that the information we have
-collected is incorrect, you are welcome to contact us so we can update
-it and keep your data accurate. Any data that is no longer needed for
-purposes specified in the “How We Use the Information We Gather”
-section will be deleted after ninety (90) days.
-
-
-What are your data protection rights?
-=====================================
-
-Anastasis would like to make sure you are fully aware of all of your
-data protection rights. Every user is entitled to the following:
-
-**The right to access**: You have the right to request Anastasis for
- copies of your personal data. We may charge you a small fee for
- this service.
-
-**The right to rectification**: You have the right to request that
-Anastasis correct any information you believe is inaccurate. You also
-have the right to request Anastasis to complete information you
-believe is incomplete. The right to erasure - You have the right to
-request that Anastasis erase your personal data, under certain
-conditions.
-
-**The right to restrict processing**: You have the right to request
- that Anastasis restrict the processing of your personal data, under
- certain conditions.
-
-**The right to object to processing**: You have the right to object to
- Anastasis's processing of your personal data, under certain
- conditions.
-
-**The right to data portability**: You have the right to request that
- Anastasis transfer the data that we have collected to another
- organization, or directly to you, under certain conditions.
-
-If you make a request, we have one month to respond to you. If you
-would like to exercise any of these rights, please contact us at our
-email: privacy@taler-systems.com
-
-You can always contact your local data protection authority to enforce
-your rights.
-
-
-Data retention
-==============
-
-If you uninstall the Taler Wallet mobile applications from your
-device, or request that your information be deleted, we still may
-retain some information that you have provided to us to maintain the
-Taler Wallet or to comply with relevant laws.
-
-
-Data security
-=============
-
-We are committed to making sure your information is protected. We
-employ several physical and electronic safeguards to keep your
-information safe, including encrypted user passwords, two factor
-verification and authentication on passwords where possible, and
-securing connections with industry standard transport layer security.
-You are also welcome to contact us using GnuPG encrypted e-mail. Even
-with all these precautions, we cannot fully guarantee against the
-access, disclosure, alteration, or deletion of data through events,
-including but not limited to hardware or software failure or
-unauthorized use. Any information that you provide to us is done so
-entirely at your own risk.
-
-
-Changes and updates to privacy policy
-=====================================
-
-We reserve the right to update and revise this privacy policy at any
-time. We occasionally review this Privacy Policy to make sure it
-complies with applicable laws and conforms to changes in our business.
-We may need to update this Privacy Policy, and we reserve the right to
-do so at any time. If we do revise this Privacy Policy, we will update
-the “Effective Date” at the bottom of this page so that you can tell
-if it has changed since your last visit. As we generally do not
-collect contact information and also do not track your visits, we will
-not be able to notify you directly. However, the Taler Wallet may
-inform you about a change in the privacy policy once it detects that
-the policy has changed. Please review this Privacy Policy regularly to
-ensure that you are aware of its terms. Any use of our Services after
-an amendment to our Privacy Policy constitutes your acceptance to the
-revised or amended agreement.
-
-
-International users and visitors
-================================
-
-Our Services are hosted in Switzerland. If you are a user accessing
-the Services from the European Union, Asia, US, or any other region
-with laws or regulations governing personal data collection, use, and
-disclosure that differ from Swiss laws, please be advised that through
-your continued use of the Services, which is governed by Swiss law,
-you are transferring your Personal Information to Switzerland and you
-consent to that transfer.
-
-
-Questions
-=========
-
-Please contact us at privacy@taler-systems.net if you have questions
-about our privacy practices that are not addressed in this Privacy
-Statement.
diff --git a/contrib/pp/en/pp-v0.pdf b/contrib/pp/en/pp-v0.pdf
deleted file mode 100644
index eab50dee7..000000000
--- a/contrib/pp/en/pp-v0.pdf
+++ /dev/null
Binary files differ
diff --git a/contrib/pp/en/pp-v0.txt b/contrib/pp/en/pp-v0.txt
deleted file mode 100644
index d6e42faf6..000000000
--- a/contrib/pp/en/pp-v0.txt
+++ /dev/null
@@ -1,237 +0,0 @@
-Privacy Policy
-**************
-
-Last Updated: 11.12.2019
-
-This Privacy Policy describes the policies and procedures of Taler
-Systems SA (“we,” “our,” or “us”) pertaining to the collection, use,
-and disclosure of your information on our sites and related mobile
-applications and products we offer (the “Services” or “Taler Wallet”).
-This Privacy Statement applies to your personal data when you use our
-Services, and does not apply to online websites or services that we do
-not own or control.
-
-
-Overview
-========
-
-Your privacy is important to us. We follow a few fundamental
-principles: We don’t ask you for personally identifiable information
-(defined below). That being said, your contact information, such as
-your phone number, social media handle, or email address (depending on
-how you contact us), may be collected when you communicate with us,
-for example to report a bug or other error related to the Taler
-Wallet. We don’t share your information with third parties except when
-strictly required to deliver you our Services and products, or to
-comply with the law. If you have any questions or concerns about this
-policy, please reach out to us at privacy@taler-systems.net.
-
-
-How you accept this policy
-==========================
-
-By using our Services or visiting our sites, you agree to the use,
-disclosure, and procedures outlined in this Privacy Policy.
-
-
-What personal information do we collect from our users?
-=======================================================
-
-The information we collect from you falls into two categories: (i)
-personally identifiable information (i.e., data that could potentially
-identify you as an individual) (“Personal Information”), and (ii) non-
-personally identifiable information (i.e., information that cannot be
-used to identify who you are) (“Non-Personal Information”). This
-Privacy Policy covers both categories and will tell you how we might
-collect and use each type.
-
-We do our best to not collect any Personal Information from Taler
-Wallet users. We believe that the Taler Wallet never transmits
-personal information to our services without at least clear implied
-consent, and we only process and retain information with a strict
-business need. That being said, when using our Services, we inherently
-have to collect the following information:
-
- * Bank account details necessary when receiving funds from you to
- top-up your wallet or to transfer funds to you when you are being
- paid via Taler. At the current experimental stage, only the
- pseudonym and password you entered in the bank demonstrator is
- stored.
-
- * The amounts being withdrawn or deposited, with associated unique
- transaction identifiers and cryptographic signatures authorizing
- the transaction. Note that for purchases, we cannot identify the
- buyer from the collected data, so when you spend money, we only
- receive non-personal information.
-
- * When you contact us. We may collect certain information if you
- choose to contact us, for example to report a bug or other error
- with the Taler Wallet. This may include contact information such
- as your name, email address or phone number depending on the
- method you choose to contact us.
-
-
-How we collect and process information
-======================================
-
-We may process your information for the following reasons:
-
- * to transfer money as specified by our users (Taler transactions);
-
- * to assist government entities in linking income to the underlying
- contract as required by law and local regulations
-
- * to support you using the Taler Wallet or to improve our Services
-
-
-How we share and use the information we gather
-==============================================
-
-We may share your Personal Data or other information about you only if
-you are a merchant receiving income, with your bank, to the degree
-necessary to execute the payment.
-
-We retain Personal Data to transfer funds to the accounts designated
-by our users. We may retain Personal Data only for as long as mandated
-by law and required for the wire transfers.
-
-We primarily use the limited information we receive directly from you
-to enhance the Taler Wallet. Some ways we may use your Personal
-Information are to: Contact you when necessary to respond to your
-comments, answer your questions, or obtain additional information on
-issues related to bugs or errors with the Taler Wallet that you
-reported.
-
-
-Agents or third party partners
-==============================
-
-We may provide your Personal Information to our employees,
-contractors, agents, service providers, and designees (“Agents”) to
-enable them to perform certain services for us exclusively, including:
-improvement and maintenance of our software and Services.
-
-
-Protection of us and others
-===========================
-
-We reserve the right to access, read, preserve, and disclose any
-information that we reasonably believe is necessary to comply with the
-law or a court order.
-
-
-What personal information can I access or change?
-=================================================
-
-You can request access to the information we have collected from you.
-You can do this by contacting us at privacy@taler-systems.net. We will
-make sure to provide you with a copy of the data we process about you.
-To comply with your request, we may ask you to verify your identity.
-We will fulfill your request by sending your copy electronically. For
-any subsequent access request, we may charge you with an
-administrative fee. If you believe that the information we have
-collected is incorrect, you are welcome to contact us so we can update
-it and keep your data accurate. Any data that is no longer needed for
-purposes specified in the “How We Use the Information We Gather”
-section will be deleted after ninety (90) days.
-
-
-What are your data protection rights?
-=====================================
-
-Anastasis would like to make sure you are fully aware of all of your
-data protection rights. Every user is entitled to the following:
-
-**The right to access**: You have the right to request Anastasis for
- copies of your personal data. We may charge you a small fee for
- this service.
-
-**The right to rectification**: You have the right to request that
-Anastasis correct any information you believe is inaccurate. You also
-have the right to request Anastasis to complete information you
-believe is incomplete. The right to erasure - You have the right to
-request that Anastasis erase your personal data, under certain
-conditions.
-
-**The right to restrict processing**: You have the right to request
- that Anastasis restrict the processing of your personal data, under
- certain conditions.
-
-**The right to object to processing**: You have the right to object to
- Anastasis's processing of your personal data, under certain
- conditions.
-
-**The right to data portability**: You have the right to request that
- Anastasis transfer the data that we have collected to another
- organization, or directly to you, under certain conditions.
-
-If you make a request, we have one month to respond to you. If you
-would like to exercise any of these rights, please contact us at our
-email: privacy@taler-systems.com
-
-You can always contact your local data protection authority to enforce
-your rights.
-
-
-Data retention
-==============
-
-If you uninstall the Taler Wallet mobile applications from your
-device, or request that your information be deleted, we still may
-retain some information that you have provided to us to maintain the
-Taler Wallet or to comply with relevant laws.
-
-
-Data security
-=============
-
-We are committed to making sure your information is protected. We
-employ several physical and electronic safeguards to keep your
-information safe, including encrypted user passwords, two factor
-verification and authentication on passwords where possible, and
-securing connections with industry standard transport layer security.
-You are also welcome to contact us using GnuPG encrypted e-mail. Even
-with all these precautions, we cannot fully guarantee against the
-access, disclosure, alteration, or deletion of data through events,
-including but not limited to hardware or software failure or
-unauthorized use. Any information that you provide to us is done so
-entirely at your own risk.
-
-
-Changes and updates to privacy policy
-=====================================
-
-We reserve the right to update and revise this privacy policy at any
-time. We occasionally review this Privacy Policy to make sure it
-complies with applicable laws and conforms to changes in our business.
-We may need to update this Privacy Policy, and we reserve the right to
-do so at any time. If we do revise this Privacy Policy, we will update
-the “Effective Date” at the bottom of this page so that you can tell
-if it has changed since your last visit. As we generally do not
-collect contact information and also do not track your visits, we will
-not be able to notify you directly. However, the Taler Wallet may
-inform you about a change in the privacy policy once it detects that
-the policy has changed. Please review this Privacy Policy regularly to
-ensure that you are aware of its terms. Any use of our Services after
-an amendment to our Privacy Policy constitutes your acceptance to the
-revised or amended agreement.
-
-
-International users and visitors
-================================
-
-Our Services are hosted in Switzerland. If you are a user accessing
-the Services from the European Union, Asia, US, or any other region
-with laws or regulations governing personal data collection, use, and
-disclosure that differ from Swiss laws, please be advised that through
-your continued use of the Services, which is governed by Swiss law,
-you are transferring your Personal Information to Switzerland and you
-consent to that transfer.
-
-
-Questions
-=========
-
-Please contact us at privacy@taler-systems.net if you have questions
-about our privacy practices that are not addressed in this Privacy
-Statement.
diff --git a/contrib/pp/en/pp-v0.xml b/contrib/pp/en/pp-v0.xml
deleted file mode 100644
index 8761ed396..000000000
--- a/contrib/pp/en/pp-v0.xml
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE document PUBLIC "+//IDN docutils.sourceforge.net//DTD Docutils Generic//EN//XML" "http://docutils.sourceforge.net/docs/ref/docutils.dtd">
-<!-- Generated by Docutils 0.16 -->
-<document source="/research/taler/exchange/contrib/pp/pp-v0.rst">
- <section ids="privacy-policy" names="privacy\ policy">
- <title>Privacy Policy</title>
- <paragraph>Last Updated: 11.12.2019</paragraph>
- <paragraph>This Privacy Policy describes the policies and procedures of Taler Systems SA
- (“we,” “our,” or “us”) pertaining to the collection, use, and disclosure of
- your information on our sites and related mobile applications and products we
- offer (the “Services” or “Taler Wallet”). This Privacy Statement applies to
- your personal data when you use our Services, and does not apply to online
- websites or services that we do not own or control.</paragraph>
- <section ids="overview" names="overview">
- <title>Overview</title>
- <paragraph>Your privacy is important to us. We follow a few fundamental principles: We
- don’t ask you for personally identifiable information (defined below). That
- being said, your contact information, such as your phone number, social media
- handle, or email address (depending on how you contact us), may be collected
- when you communicate with us, for example to report a bug or other error
- related to the Taler Wallet. We don’t share your information with third
- parties except when strictly required to deliver you our Services and
- products, or to comply with the law. If you have any questions or concerns
- about this policy, please reach out to us at <reference refuri="mailto:privacy@taler-systems.net">privacy@taler-systems.net</reference>.</paragraph>
- </section>
- <section ids="how-you-accept-this-policy" names="how\ you\ accept\ this\ policy">
- <title>How you accept this policy</title>
- <paragraph>By using our Services or visiting our sites, you agree to the use, disclosure,
- and procedures outlined in this Privacy Policy.</paragraph>
- </section>
- <section ids="what-personal-information-do-we-collect-from-our-users" names="what\ personal\ information\ do\ we\ collect\ from\ our\ users?">
- <title>What personal information do we collect from our users?</title>
- <paragraph>The information we collect from you falls into two categories: (i) personally
- identifiable information (i.e., data that could potentially identify you as an
- individual) (“Personal Information”), and (ii) non-personally identifiable
- information (i.e., information that cannot be used to identify who you are)
- (“Non-Personal Information”). This Privacy Policy covers both categories and
- will tell you how we might collect and use each type.</paragraph>
- <paragraph>We do our best to not collect any Personal Information from Taler Wallet
- users. We believe that the Taler Wallet never transmits personal information
- to our services without at least clear implied consent, and we only process
- and retain information with a strict business need. That being said, when
- using our Services, we inherently have to collect the following information:</paragraph>
- <block_quote>
- <bullet_list bullet="*">
- <list_item>
- <paragraph>Bank account details necessary when receiving funds from you to top-up your wallet or to transfer funds to you when you are being paid via Taler. At the current experimental stage, only the pseudonym and password you entered in the bank demonstrator is stored.</paragraph>
- </list_item>
- <list_item>
- <paragraph>The amounts being withdrawn or deposited, with associated unique transaction identifiers and cryptographic signatures authorizing the transaction. Note that for purchases, we cannot identify the buyer from the collected data, so when you spend money, we only receive non-personal information.</paragraph>
- </list_item>
- <list_item>
- <paragraph>When you contact us. We may collect certain information if you choose to contact us, for example to report a bug or other error with the Taler Wallet. This may include contact information such as your name, email address or phone number depending on the method you choose to contact us.</paragraph>
- </list_item>
- </bullet_list>
- </block_quote>
- </section>
- <section ids="how-we-collect-and-process-information" names="how\ we\ collect\ and\ process\ information">
- <title>How we collect and process information</title>
- <paragraph>We may process your information for the following reasons:</paragraph>
- <block_quote>
- <bullet_list bullet="*">
- <list_item>
- <paragraph>to transfer money as specified by our users (Taler transactions);</paragraph>
- </list_item>
- <list_item>
- <paragraph>to assist government entities in linking income to the underlying contract as required by law and local regulations</paragraph>
- </list_item>
- <list_item>
- <paragraph>to support you using the Taler Wallet or to improve our Services</paragraph>
- </list_item>
- </bullet_list>
- </block_quote>
- </section>
- <section ids="how-we-share-and-use-the-information-we-gather" names="how\ we\ share\ and\ use\ the\ information\ we\ gather">
- <title>How we share and use the information we gather</title>
- <paragraph>We may share your Personal Data or other information about you only if you are
- a merchant receiving income, with your bank, to the degree necessary to
- execute the payment.</paragraph>
- <paragraph>We retain Personal Data to transfer funds to the accounts designated by our
- users. We may retain Personal Data only for as long as mandated by law and
- required for the wire transfers.</paragraph>
- <paragraph>We primarily use the limited information we receive directly from you to
- enhance the Taler Wallet. Some ways we may use your Personal Information are
- to: Contact you when necessary to respond to your comments, answer your
- questions, or obtain additional information on issues related to bugs or
- errors with the Taler Wallet that you reported.</paragraph>
- </section>
- <section ids="agents-or-third-party-partners" names="agents\ or\ third\ party\ partners">
- <title>Agents or third party partners</title>
- <paragraph>We may provide your Personal Information to our employees, contractors,
- agents, service providers, and designees (“Agents”) to enable them to perform
- certain services for us exclusively, including: improvement and maintenance of
- our software and Services.</paragraph>
- </section>
- <section ids="protection-of-us-and-others" names="protection\ of\ us\ and\ others">
- <title>Protection of us and others</title>
- <paragraph>We reserve the right to access, read, preserve, and disclose any information
- that we reasonably believe is necessary to comply with the law or a court
- order.</paragraph>
- </section>
- <section ids="what-personal-information-can-i-access-or-change" names="what\ personal\ information\ can\ i\ access\ or\ change?">
- <title>What personal information can I access or change?</title>
- <paragraph>You can request access to the information we have collected from you. You can
- do this by contacting us at <reference refuri="mailto:privacy@taler-systems.net">privacy@taler-systems.net</reference>. We will make sure to
- provide you with a copy of the data we process about you. To comply with your
- request, we may ask you to verify your identity. We will fulfill your request
- by sending your copy electronically. For any subsequent access request, we may
- charge you with an administrative fee. If you believe that the information we
- have collected is incorrect, you are welcome to contact us so we can update it
- and keep your data accurate. Any data that is no longer needed for purposes
- specified in the “How We Use the Information We Gather” section will be
- deleted after ninety (90) days.</paragraph>
- </section>
- <section ids="what-are-your-data-protection-rights" names="what\ are\ your\ data\ protection\ rights?">
- <title>What are your data protection rights?</title>
- <paragraph>Anastasis would like to make sure you are fully aware of all of your
- data protection rights. Every user is entitled to the following:</paragraph>
- <definition_list>
- <definition_list_item>
- <term><strong>The right to access</strong>: You have the right to request Anastasis for</term>
- <definition>
- <paragraph>copies of your personal data. We may charge you a small fee for this
- service.</paragraph>
- </definition>
- </definition_list_item>
- </definition_list>
- <paragraph><strong>The right to rectification</strong>: You have the right to request that
- Anastasis correct any information you believe is inaccurate. You also
- have the right to request Anastasis to complete information you
- believe is incomplete. The right to erasure - You have the right to
- request that Anastasis erase your personal data, under certain
- conditions.</paragraph>
- <definition_list>
- <definition_list_item>
- <term><strong>The right to restrict processing</strong>: You have the right to request</term>
- <definition>
- <paragraph>that Anastasis restrict the processing of your personal data, under
- certain conditions.</paragraph>
- </definition>
- </definition_list_item>
- <definition_list_item>
- <term><strong>The right to object to processing</strong>: You have the right to object to</term>
- <definition>
- <paragraph>Anastasis’s processing of your personal data, under certain
- conditions.</paragraph>
- </definition>
- </definition_list_item>
- <definition_list_item>
- <term><strong>The right to data portability</strong>: You have the right to request that</term>
- <definition>
- <paragraph>Anastasis transfer the data that we have collected to another
- organization, or directly to you, under certain conditions.</paragraph>
- </definition>
- </definition_list_item>
- </definition_list>
- <paragraph>If you make a request, we have one month to respond to you. If you
- would like to exercise any of these rights, please contact us at our
- email: <reference refuri="mailto:privacy@taler-systems.com">privacy@taler-systems.com</reference></paragraph>
- <paragraph>You can always contact your local data protection authority to enforce
- your rights.</paragraph>
- </section>
- <section ids="data-retention" names="data\ retention">
- <title>Data retention</title>
- <paragraph>If you uninstall the Taler Wallet mobile applications from your device, or
- request that your information be deleted, we still may retain some information
- that you have provided to us to maintain the Taler Wallet or to comply with
- relevant laws.</paragraph>
- </section>
- <section ids="data-security" names="data\ security">
- <title>Data security</title>
- <paragraph>We are committed to making sure your information is protected. We employ
- several physical and electronic safeguards to keep your information safe,
- including encrypted user passwords, two factor verification and authentication
- on passwords where possible, and securing connections with industry standard
- transport layer security. You are also welcome to contact us using GnuPG
- encrypted e-mail. Even with all these precautions, we cannot fully guarantee
- against the access, disclosure, alteration, or deletion of data through
- events, including but not limited to hardware or software failure or
- unauthorized use. Any information that you provide to us is done so entirely
- at your own risk.</paragraph>
- </section>
- <section ids="changes-and-updates-to-privacy-policy" names="changes\ and\ updates\ to\ privacy\ policy">
- <title>Changes and updates to privacy policy</title>
- <paragraph>We reserve the right to update and revise this privacy policy at any time. We
- occasionally review this Privacy Policy to make sure it complies with
- applicable laws and conforms to changes in our business. We may need to update
- this Privacy Policy, and we reserve the right to do so at any time. If we do
- revise this Privacy Policy, we will update the “Effective Date” at the bottom
- of this page so that you can tell if it has changed since your last visit. As
- we generally do not collect contact information and also do not track your
- visits, we will not be able to notify you directly. However, the Taler Wallet
- may inform you about a change in the privacy policy once it detects that the
- policy has changed. Please review this Privacy Policy regularly to ensure that
- you are aware of its terms. Any use of our Services after an amendment to our
- Privacy Policy constitutes your acceptance to the revised or amended
- agreement.</paragraph>
- </section>
- <section ids="international-users-and-visitors" names="international\ users\ and\ visitors">
- <title>International users and visitors</title>
- <paragraph>Our Services are hosted in Switzerland. If you are a user accessing the
- Services from the European Union, Asia, US, or any other region with laws or
- regulations governing personal data collection, use, and disclosure that
- differ from Swiss laws, please be advised that through your continued use of
- the Services, which is governed by Swiss law, you are transferring your
- Personal Information to Switzerland and you consent to that transfer.</paragraph>
- </section>
- <section ids="questions" names="questions">
- <title>Questions</title>
- <paragraph>Please contact us at <reference refuri="mailto:privacy@taler-systems.net">privacy@taler-systems.net</reference> if you have questions about our
- privacy practices that are not addressed in this Privacy Statement.</paragraph>
- </section>
- </section>
-</document>
diff --git a/contrib/pp/locale/de/LC_MESSAGES/pp.po b/contrib/pp/locale/de/LC_MESSAGES/pp.po
deleted file mode 100644
index b97b70372..000000000
--- a/contrib/pp/locale/de/LC_MESSAGES/pp.po
+++ /dev/null
@@ -1,221 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2014-2020 Taler Systems SA (GPLv3+ or GFDL 1.3+)
-# This file is distributed under the same license as the pp package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pp 0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-30 21:41+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../pp.rst:2
-msgid "Privacy Policy"
-msgstr ""
-
-#: ../../pp.rst:4
-msgid "Last Updated: 11.12.2019"
-msgstr ""
-
-#: ../../pp.rst:6
-msgid "This Privacy Policy describes the policies and procedures of Taler Systems SA (“we,” “our,” or “us”) pertaining to the collection, use, and disclosure of your information on our sites and related mobile applications and products we offer (the “Services” or “Taler Wallet”). This Privacy Statement applies to your personal data when you use our Services, and does not apply to online websites or services that we do not own or control."
-msgstr ""
-
-#: ../../pp.rst:15
-msgid "Overview"
-msgstr ""
-
-#: ../../pp.rst:17
-msgid "Your privacy is important to us. We follow a few fundamental principles: We don’t ask you for personally identifiable information (defined below). That being said, your contact information, such as your phone number, social media handle, or email address (depending on how you contact us), may be collected when you communicate with us, for example to report a bug or other error related to the Taler Wallet. We don’t share your information with third parties except when strictly required to deliver you our Services and products, or to comply with the law. If you have any questions or concerns about this policy, please reach out to us at privacy@taler-systems.net."
-msgstr ""
-
-#: ../../pp.rst:29
-msgid "How you accept this policy"
-msgstr ""
-
-#: ../../pp.rst:31
-msgid "By using our Services or visiting our sites, you agree to the use, disclosure, and procedures outlined in this Privacy Policy."
-msgstr ""
-
-#: ../../pp.rst:36
-msgid "What personal information do we collect from our users?"
-msgstr ""
-
-#: ../../pp.rst:38
-msgid "The information we collect from you falls into two categories: (i) personally identifiable information (i.e., data that could potentially identify you as an individual) (“Personal Information”), and (ii) non-personally identifiable information (i.e., information that cannot be used to identify who you are) (“Non-Personal Information”). This Privacy Policy covers both categories and will tell you how we might collect and use each type."
-msgstr ""
-
-#: ../../pp.rst:45
-msgid "We do our best to not collect any Personal Information from Taler Wallet users. We believe that the Taler Wallet never transmits personal information to our services without at least clear implied consent, and we only process and retain information with a strict business need. That being said, when using our Services, we inherently have to collect the following information:"
-msgstr ""
-
-#: ../../pp.rst:51
-msgid "Bank account details necessary when receiving funds from you to top-up your wallet or to transfer funds to you when you are being paid via Taler. At the current experimental stage, only the pseudonym and password you entered in the bank demonstrator is stored."
-msgstr ""
-
-#: ../../pp.rst:53
-msgid "The amounts being withdrawn or deposited, with associated unique transaction identifiers and cryptographic signatures authorizing the transaction. Note that for purchases, we cannot identify the buyer from the collected data, so when you spend money, we only receive non-personal information."
-msgstr ""
-
-#: ../../pp.rst:55
-msgid "When you contact us. We may collect certain information if you choose to contact us, for example to report a bug or other error with the Taler Wallet. This may include contact information such as your name, email address or phone number depending on the method you choose to contact us."
-msgstr ""
-
-#: ../../pp.rst:59
-msgid "How we collect and process information"
-msgstr ""
-
-#: ../../pp.rst:61
-msgid "We may process your information for the following reasons:"
-msgstr ""
-
-#: ../../pp.rst:63
-msgid "to transfer money as specified by our users (Taler transactions);"
-msgstr ""
-
-#: ../../pp.rst:64
-msgid "to assist government entities in linking income to the underlying contract as required by law and local regulations"
-msgstr ""
-
-#: ../../pp.rst:65
-msgid "to support you using the Taler Wallet or to improve our Services"
-msgstr ""
-
-#: ../../pp.rst:69
-msgid "How we share and use the information we gather"
-msgstr ""
-
-#: ../../pp.rst:71
-msgid "We may share your Personal Data or other information about you only if you are a merchant receiving income, with your bank, to the degree necessary to execute the payment."
-msgstr ""
-
-#: ../../pp.rst:75
-msgid "We retain Personal Data to transfer funds to the accounts designated by our users. We may retain Personal Data only for as long as mandated by law and required for the wire transfers."
-msgstr ""
-
-#: ../../pp.rst:79
-msgid "We primarily use the limited information we receive directly from you to enhance the Taler Wallet. Some ways we may use your Personal Information are to: Contact you when necessary to respond to your comments, answer your questions, or obtain additional information on issues related to bugs or errors with the Taler Wallet that you reported."
-msgstr ""
-
-#: ../../pp.rst:87
-msgid "Agents or third party partners"
-msgstr ""
-
-#: ../../pp.rst:89
-msgid "We may provide your Personal Information to our employees, contractors, agents, service providers, and designees (“Agents”) to enable them to perform certain services for us exclusively, including: improvement and maintenance of our software and Services."
-msgstr ""
-
-#: ../../pp.rst:96
-msgid "Protection of us and others"
-msgstr ""
-
-#: ../../pp.rst:98
-msgid "We reserve the right to access, read, preserve, and disclose any information that we reasonably believe is necessary to comply with the law or a court order."
-msgstr ""
-
-#: ../../pp.rst:104
-msgid "What personal information can I access or change?"
-msgstr ""
-
-#: ../../pp.rst:106
-msgid "You can request access to the information we have collected from you. You can do this by contacting us at privacy@taler-systems.net. We will make sure to provide you with a copy of the data we process about you. To comply with your request, we may ask you to verify your identity. We will fulfill your request by sending your copy electronically. For any subsequent access request, we may charge you with an administrative fee. If you believe that the information we have collected is incorrect, you are welcome to contact us so we can update it and keep your data accurate. Any data that is no longer needed for purposes specified in the “How We Use the Information We Gather” section will be deleted after ninety (90) days."
-msgstr ""
-
-#: ../../pp.rst:119
-msgid "What are your data protection rights?"
-msgstr ""
-
-#: ../../pp.rst:121
-msgid "Anastasis would like to make sure you are fully aware of all of your data protection rights. Every user is entitled to the following:"
-msgstr ""
-
-#: ../../pp.rst:126
-msgid "**The right to access**: You have the right to request Anastasis for"
-msgstr ""
-
-#: ../../pp.rst:125
-msgid "copies of your personal data. We may charge you a small fee for this service."
-msgstr ""
-
-#: ../../pp.rst:128
-msgid "**The right to rectification**: You have the right to request that Anastasis correct any information you believe is inaccurate. You also have the right to request Anastasis to complete information you believe is incomplete. The right to erasure - You have the right to request that Anastasis erase your personal data, under certain conditions."
-msgstr ""
-
-#: ../../pp.rst:137
-msgid "**The right to restrict processing**: You have the right to request"
-msgstr ""
-
-#: ../../pp.rst:136
-msgid "that Anastasis restrict the processing of your personal data, under certain conditions."
-msgstr ""
-
-#: ../../pp.rst:141
-msgid "**The right to object to processing**: You have the right to object to"
-msgstr ""
-
-#: ../../pp.rst:140
-msgid "Anastasis's processing of your personal data, under certain conditions."
-msgstr ""
-
-#: ../../pp.rst:145
-msgid "**The right to data portability**: You have the right to request that"
-msgstr ""
-
-#: ../../pp.rst:144
-msgid "Anastasis transfer the data that we have collected to another organization, or directly to you, under certain conditions."
-msgstr ""
-
-#: ../../pp.rst:147
-msgid "If you make a request, we have one month to respond to you. If you would like to exercise any of these rights, please contact us at our email: privacy@taler-systems.com"
-msgstr ""
-
-#: ../../pp.rst:151
-msgid "You can always contact your local data protection authority to enforce your rights."
-msgstr ""
-
-#: ../../pp.rst:156
-msgid "Data retention"
-msgstr ""
-
-#: ../../pp.rst:158
-msgid "If you uninstall the Taler Wallet mobile applications from your device, or request that your information be deleted, we still may retain some information that you have provided to us to maintain the Taler Wallet or to comply with relevant laws."
-msgstr ""
-
-#: ../../pp.rst:165
-msgid "Data security"
-msgstr ""
-
-#: ../../pp.rst:167
-msgid "We are committed to making sure your information is protected. We employ several physical and electronic safeguards to keep your information safe, including encrypted user passwords, two factor verification and authentication on passwords where possible, and securing connections with industry standard transport layer security. You are also welcome to contact us using GnuPG encrypted e-mail. Even with all these precautions, we cannot fully guarantee against the access, disclosure, alteration, or deletion of data through events, including but not limited to hardware or software failure or unauthorized use. Any information that you provide to us is done so entirely at your own risk."
-msgstr ""
-
-#: ../../pp.rst:180
-msgid "Changes and updates to privacy policy"
-msgstr ""
-
-#: ../../pp.rst:182
-msgid "We reserve the right to update and revise this privacy policy at any time. We occasionally review this Privacy Policy to make sure it complies with applicable laws and conforms to changes in our business. We may need to update this Privacy Policy, and we reserve the right to do so at any time. If we do revise this Privacy Policy, we will update the “Effective Date” at the bottom of this page so that you can tell if it has changed since your last visit. As we generally do not collect contact information and also do not track your visits, we will not be able to notify you directly. However, the Taler Wallet may inform you about a change in the privacy policy once it detects that the policy has changed. Please review this Privacy Policy regularly to ensure that you are aware of its terms. Any use of our Services after an amendment to our Privacy Policy constitutes your acceptance to the revised or amended agreement."
-msgstr ""
-
-#: ../../pp.rst:198
-msgid "International users and visitors"
-msgstr ""
-
-#: ../../pp.rst:200
-msgid "Our Services are hosted in Switzerland. If you are a user accessing the Services from the European Union, Asia, US, or any other region with laws or regulations governing personal data collection, use, and disclosure that differ from Swiss laws, please be advised that through your continued use of the Services, which is governed by Swiss law, you are transferring your Personal Information to Switzerland and you consent to that transfer."
-msgstr ""
-
-#: ../../pp.rst:209
-msgid "Questions"
-msgstr ""
-
-#: ../../pp.rst:211
-msgid "Please contact us at privacy@taler-systems.net if you have questions about our privacy practices that are not addressed in this Privacy Statement."
-msgstr ""
diff --git a/contrib/taler-auditor-dbconfig b/contrib/taler-auditor-dbconfig
new file mode 100755
index 000000000..245d6970d
--- /dev/null
+++ b/contrib/taler-auditor-dbconfig
@@ -0,0 +1,132 @@
+#!/bin/bash
+# This file is part of GNU TALER.
+# Copyright (C) 2023 Taler Systems SA
+#
+# TALER is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free Software
+# Foundation; either version 2.1, or (at your option) any later version.
+#
+# TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License along with
+# TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+#
+# @author Christian Grothoff
+#
+#
+# Error checking on
+set -eu
+
+RESET_DB=0
+SKIP_DBINIT=0
+DBUSER="taler-auditor-httpd"
+DBNAME="auditor"
+CFGFILE="/etc/taler/secrets/auditor-db.secret.conf"
+
+# Parse command-line options
+while getopts ':hn:rsu:' OPTION; do
+ case "$OPTION" in
+ h)
+ echo 'Supported options:'
+ echo " -c FILENAME -- write configuration to FILENAME (default: $CFGFILE)"
+ echo " -n NAME -- user NAME for database name (default: $DBNAME)"
+ echo " -r -- reset database (dangerous)"
+ echo " -s -- skip database initialization"
+ echo " -u USER -- taler-auditor to be run by USER (default: $DBUSER)"
+ exit 0
+ ;;
+ n)
+ DBNAME="$OPTARG"
+ ;;
+ r)
+ RESET_DB="1"
+ ;;
+ s)
+ SKIP_DBINIT="1"
+ ;;
+ u)
+ DBUSER="$OPTARG"
+ ;;
+ ?)
+ exit_fail "Unrecognized command line option"
+ ;;
+ esac
+done
+
+if ! id postgres > /dev/null
+then
+ echo "Could not find 'postgres' user. Please install Postgresql first"
+ exit 1
+fi
+
+if [ "$(id -u)" -ne 0 ]
+then
+ echo "This script must be run as root"
+ exit 1
+fi
+
+if [ 0 = "$SKIP_DBINIT" ]
+then
+ if ! taler-auditor-dbinit -v 2> /dev/null
+ then
+ echo "Required 'taler-auditor-dbinit' not found. Please fix your installation."
+ fi
+fi
+
+if ! id "$DBUSER" > /dev/null
+then
+ echo "Could not find '$DBUSER' user. Please set it up first"
+ exit 1
+fi
+
+if sudo -i -u postgres psql "$DBNAME" < /dev/null 2> /dev/null
+then
+ if [ 1 = "$RESET_DB" ]
+ then
+ echo "Deleting existing database '$DBNAME'." 1>&2
+ sudo -i -u postgres dropdb "$DBNAME"
+ else
+ echo "Database '$DBNAME' already exists, refusing to setup again."
+ echo "Use -r to delete the existing database first (dangerous!)."
+ exit 77
+ fi
+fi
+
+echo "Setting up database user $DBUSER." 1>&2
+
+if ! sudo -i -u postgres createuser "$DBUSER" 2> /dev/null
+then
+ echo "Database user '$DBUSER' already existed. Continuing anyway." 1>&2
+fi
+
+echo "Creating database $DBNAME." 1>&2
+
+if ! sudo -i -u postgres createdb -O "$DBUSER" "$DBNAME"
+then
+ echo "Failed to create database '$DBNAME'"
+ exit 1
+fi
+
+if [ -f "$CFGFILE" ]
+then
+ echo "Adding database configuration to '$CFGFILE'." 1>&2
+ echo -e "[auditordb-postgres]\nCONFIG=postgres:///$DBNAME\n" >> "$CFGFILE"
+else
+ echo "Configuration '$CFGFILE' does not yet exist, creating it." 1>&2
+ mkdir -p "$(dirname "$CFGFILE")"
+ echo -e "[auditordb-postgres]\nCONFIG=postgres:///$DBNAME\n" >> "$CFGFILE"
+ chown "$DBUSER":root "$CFGFILE"
+ chmod 460 "$CFGFILE"
+fi
+
+if [ 0 = "$SKIP_DBINIT" ]
+then
+ echo "Initializing database '$DBNAME'." 1>&2
+ sudo -u "$DBUSER" taler-auditor-dbinit
+fi
+
+echo "Database configuration finished." 1>&2
+
+exit 0
diff --git a/contrib/taler-bank-manage-testing b/contrib/taler-bank-manage-testing
deleted file mode 100755
index cd9e41a1c..000000000
--- a/contrib/taler-bank-manage-testing
+++ /dev/null
@@ -1,187 +0,0 @@
-#!/bin/sh
-# This file is in the public domain
-# Wrapper around libeufin to first configure the required
-# testing accounts before launching the bank properly.
-#
-# Takes 4 arguments:
-# $1: the Nexus port (Sandbox port prepends 1 to it)
-# $2: the database name
-# $3: exchange base URL (used to specify the default exchange)
-# $4: config file (needs patch to specify exchange's PAYTO_URI)
-
-set -eu
-
-if [ "$1" = "--help" ];
-then
- echo "This is a tool to launch a libeufin based bank for testing."
- echo "Call using: Nexus port number, SQLite file path, exchange base URL, config file path."
- exit 0
-fi
-if [ "$#" -ne 4 ];
-then
- echo "illegal number of parameters. \
-Give: Nexus port number, SQLite file path, exchange base URL, config file path."
- exit 1
-fi
-
-# Must not terminate jobs here, as they are needed
-# by the script _importing_ this one. Those script
-# will then manage the termination.
-# trap cleanup EXIT
-
-export LIBEUFIN_SANDBOX_DB_CONNECTION="jdbc:sqlite:$2"
-# Create the default demobank.
-libeufin-sandbox config --currency TESTKUDOS default
-export LIBEUFIN_SANDBOX_ADMIN_PASSWORD=secret
-libeufin-sandbox serve --port "1$1" \
- > libeufin-sandbox-stdout.log \
- 2> libeufin-sandbox-stderr.log &
-echo $! > libeufin-sandbox.pid
-export LIBEUFIN_SANDBOX_URL="http://localhost:1$1/"
-set +e
-echo -n "Waiting for Sandbox.."
-for n in `seq 1 50`; do
- echo -n "."
- sleep 1
- if wget --timeout=1 \
- --tries=3 --waitretry=0 \
- -o /dev/null -O /dev/null \
- $LIBEUFIN_SANDBOX_URL; then
- break
- fi
-done
-echo OK
-
-register_sandbox_account() {
- export LIBEUFIN_SANDBOX_USERNAME=$1
- export LIBEUFIN_SANDBOX_PASSWORD=$2
- libeufin-cli sandbox \
- demobank \
- register --name "$3"
- unset LIBEUFIN_SANDBOX_USERNAME
- unset LIBEUFIN_SANDBOX_PASSWORD
-}
-set -e
-echo -n "Register the 'fortytwo' Sandbox user.."
-register_sandbox_account fortytwo x "Forty Two"
-echo OK
-echo -n "Register the 'fortythree' Sandbox user.."
-register_sandbox_account fortythree x "Forty Three"
-echo OK
-echo -n "Register 'exchange' Sandbox user.."
-register_sandbox_account exchange x "Exchange Company"
-echo OK
-echo -n "Register 'tor' Sandbox user.."
-register_sandbox_account tor x "Tor Project"
-echo OK
-echo -n "Register 'gnunet' Sandbox user.."
-register_sandbox_account gnunet x "GNUnet"
-echo OK
-echo -n "Register 'tutorial' Sandbox user.."
-register_sandbox_account tutorial x "Tutorial"
-echo OK
-echo -n "Register 'survey' Sandbox user.."
-register_sandbox_account survey x "Survey"
-echo OK
-echo -n "Specify exchange's PAYTO_URI in the config ..."
-export LIBEUFIN_SANDBOX_USERNAME=exchange
-export LIBEUFIN_SANDBOX_PASSWORD=x
-PAYTO=`libeufin-cli sandbox demobank info --bank-account exchange | jq --raw-output '.paytoUri'`
-taler-config -c $4 -s exchange-account-1 -o PAYTO_URI -V $PAYTO
-echo " OK"
-echo -n "Setting this exchange as the bank's default ..."
-EXCHANGE_PAYTO=`libeufin-cli sandbox demobank info --bank-account exchange | jq --raw-output '.paytoUri'`
-libeufin-sandbox default-exchange "$3" "$EXCHANGE_PAYTO"
-echo " OK"
-# Prepare EBICS: create Ebics host and Exchange subscriber.
-# Shortly becoming admin to setup Ebics.
-export LIBEUFIN_SANDBOX_USERNAME=admin
-export LIBEUFIN_SANDBOX_PASSWORD=secret
-echo -n "Create EBICS host at Sandbox.."
-libeufin-cli sandbox \
- --sandbox-url http://localhost:1$1 \
- ebicshost create --host-id talerebics
-echo OK
-echo -n "Create exchange EBICS subscriber at Sandbox.."
-libeufin-cli sandbox \
- demobank new-ebicssubscriber --host-id talerebics \
- --user-id exchangeebics --partner-id talerpartner \
- --bank-account exchange # that's a username _and_ a bank account name
-echo OK
-unset LIBEUFIN_SANDBOX_USERNAME
-unset LIBEUFIN_SANDBOX_PASSWORD
-# Prepare Nexus, which is the side actually talking
-# to the exchange.
-export LIBEUFIN_NEXUS_DB_CONNECTION="jdbc:sqlite:$2"
-# For convenience, username and password are
-# identical to those used at the Sandbox.
-echo -n Create exchange Nexus user..
-libeufin-nexus superuser exchange --password x
-echo OK
-libeufin-nexus serve --port $1 \
- 2> libeufin-nexus-stderr.log \
- > libeufin-nexus-stdout.log &
-echo $! > libeufin-nexus.pid
-export LIBEUFIN_NEXUS_URL=http://localhost:$1
-echo -n Waiting for Nexus..
-set +e
-for n in `seq 1 50`; do
- echo -n "."
- sleep 1
- if wget --timeout=1 \
- --tries=3 --waitretry=0 \
- -o /dev/null -O /dev/null \
- $LIBEUFIN_NEXUS_URL; then
- break
- fi
-done
-set -e
-echo OK
-export LIBEUFIN_NEXUS_USERNAME=exchange
-export LIBEUFIN_NEXUS_PASSWORD=x
-echo -n Creating a EBICS connection at Nexus..
-libeufin-cli connections new-ebics-connection \
- --ebics-url "http://localhost:1$1/ebicsweb" \
- --host-id talerebics \
- --partner-id talerpartner \
- --ebics-user-id exchangeebics \
- talerconn
-echo OK
-echo -n Setup EBICS keying..
-libeufin-cli connections connect talerconn > /dev/null
-echo OK
-echo -n Download bank account name from Sandbox..
-libeufin-cli connections download-bank-accounts talerconn
-echo OK
-echo -n Importing bank account info into Nexus..
-libeufin-cli connections import-bank-account \
- --offered-account-id exchange \
- --nexus-bank-account-id exchange-nexus \
- talerconn
-echo OK
-echo -n Setup payments submission task..
-# Tries every second.
-libeufin-cli accounts task-schedule \
- --task-type submit \
- --task-name exchange-payments \
- --task-cronspec "* * *" \
- exchange-nexus
-echo OK
-# Tries every second. Ask C52
-echo -n Setup history fetch task..
-libeufin-cli accounts task-schedule \
- --task-type fetch \
- --task-name exchange-history \
- --task-cronspec "* * *" \
- --task-param-level report \
- --task-param-range-type latest \
- exchange-nexus
-echo OK
-# TBD: create Taler facade.
-echo -n Create the Taler facade at Nexus..
-libeufin-cli facades \
- new-taler-wire-gateway-facade \
- --currency TESTKUDOS --facade-name test-facade \
- talerconn exchange-nexus
-echo OK
-# Facade schema: http://localhost:$1/facades/test-facade/taler-wire-gateway/
diff --git a/contrib/taler-exchange-dbconfig b/contrib/taler-exchange-dbconfig
new file mode 100755
index 000000000..eb90ee721
--- /dev/null
+++ b/contrib/taler-exchange-dbconfig
@@ -0,0 +1,186 @@
+#!/bin/bash
+# This file is part of GNU TALER.
+# Copyright (C) 2023 Taler Systems SA
+#
+# TALER is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free Software
+# Foundation; either version 2.1, or (at your option) any later version.
+#
+# TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License along with
+# TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+#
+# @author Christian Grothoff
+#
+#
+# Error checking on
+set -eu
+
+RESET_DB=0
+SKIP_DBINIT=0
+FORCE_PERMS=0
+DBUSER="taler-exchange-httpd"
+DBGROUP="taler-exchange-db"
+CFGFILE="/etc/taler/taler.conf"
+
+# Parse command-line options
+while getopts 'c:g:hprsu:' OPTION; do
+ case "$OPTION" in
+ c)
+ CFGFILE="$OPTARG"
+ ;;
+ h)
+ echo 'Supported options:'
+ echo " -c FILENAME -- use configuration FILENAME (default: $CFGFILE)"
+ echo " -g GROUP -- taler-exchange to be run by GROUP (default: $DBGROUP)"
+ echo " -h -- print this help text"
+ echo " -r -- reset database (dangerous)"
+ echo " -p -- force permission setup even without database initialization"
+ echo " -s -- skip database initialization"
+ echo " -u USER -- taler-exchange to be run by USER (default: $DBUSER)"
+ exit 0
+ ;;
+ p)
+ FORCE_PERMS="1"
+ ;;
+ r)
+ RESET_DB="1"
+ ;;
+ s)
+ SKIP_DBINIT="1"
+ ;;
+ u)
+ DBUSER="$OPTARG"
+ ;;
+ ?)
+ echo "Unrecognized command line option" 1>&2
+ exit 1
+ ;;
+ esac
+done
+
+if ! id postgres > /dev/null
+then
+ echo "Could not find 'postgres' user. Please install Postgresql first"
+ exit 1
+fi
+
+if [ "$(id -u)" -ne 0 ]
+then
+ echo "This script must be run as root"
+ exit 1
+fi
+
+if [ 0 = "$SKIP_DBINIT" ]
+then
+ if ! taler-exchange-dbinit -v 2> /dev/null
+ then
+ echo "Required 'taler-exchange-dbinit' not found. Please fix your installation."
+ exit 1
+ fi
+ DBINIT=$(which taler-exchange-dbinit)
+fi
+
+if ! id "$DBUSER" > /dev/null
+then
+ echo "Could not find '$DBUSER' user. Please set it up first"
+ exit 1
+fi
+
+echo "Setting up database user '$DBUSER'." 1>&2
+
+if ! sudo -i -u postgres createuser "$DBUSER" 2> /dev/null
+then
+ echo "Database user '$DBUSER' already existed. Continuing anyway." 1>&2
+fi
+
+DBPATH=$(taler-config \
+ -c "$CFGFILE" \
+ -s exchangedb-postgres \
+ -o CONFIG)
+
+if ! echo "$DBPATH" | grep "postgres://" > /dev/null
+then
+ echo "Invalid database configuration value '$DBPATH'." 1>&2
+ exit 1
+fi
+
+DBNAME=$(echo "$DBPATH" \
+ | sed \
+ -e "s/postgres:\/\/.*\///" \
+ -e "s/?.*//")
+
+if sudo -i -u postgres psql "$DBNAME" < /dev/null 2> /dev/null
+then
+ if [ 1 = "$RESET_DB" ]
+ then
+ echo "Deleting existing database '$DBNAME'." 1>&2
+ if ! sudo -i -u postgres dropdb "$DBNAME"
+ then
+ echo "Failed to delete existing database '$DBNAME'"
+ exit 1
+ fi
+ DO_CREATE=1
+ else
+ echo "Database '$DBNAME' already exists, continuing anyway."
+ DO_CREATE=0
+ fi
+else
+ DO_CREATE=1
+fi
+
+if [ 1 = "$DO_CREATE" ]
+then
+ echo "Creating database '$DBNAME'." 1>&2
+
+ if ! sudo -i -u postgres createdb -O "$DBUSER" "$DBNAME"
+ then
+ echo "Failed to create database '$DBNAME'"
+ exit 1
+ fi
+fi
+
+if [ 0 = "$SKIP_DBINIT" ]
+then
+ echo "Initializing database '$DBNAME'." 1>&2
+ if ! sudo -u "$DBUSER" "$DBINIT" -c "$CFGFILE"
+ then
+ echo "Failed to initialize database schema"
+ exit 1
+ fi
+fi
+
+if [ 0 = "$SKIP_DBINIT" ] || [ 1 = "$FORCE_PERMS" ]
+then
+ DB_GRP="$(getent group "$DBGROUP" | sed -e "s/.*://g" -e "s/,/ /g")"
+ echo "Initializing permissions for '$DB_GRP'." 1>&2
+ for GROUPIE in $DB_GRP
+ do
+ if [ "$GROUPIE" != "$DBUSER" ]
+ then
+ if ! sudo -i -u postgres createuser "$GROUPIE" 2> /dev/null
+ then
+ echo "Database user '$GROUPIE' already existed. Continuing anyway." 1>&2
+ fi
+ echo -e 'GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA exchange TO "'"$GROUPIE"'";\n' \
+ 'GRANT USAGE ON ALL SEQUENCES IN SCHEMA exchange TO "'"$GROUPIE"'";\n' \
+ | sudo -u "$DBUSER" psql "$DBNAME"
+ echo -e 'GRANT USAGE ON SCHEMA exchange TO "'"$GROUPIE"'"' \
+ | sudo -u "$DBUSER" psql "$DBNAME"
+ # FIXME: double-check the following GRANTs
+ echo -e 'GRANT USAGE ON SCHEMA _v TO "'"$GROUPIE"'"' \
+ | sudo -u "$DBUSER" psql "$DBNAME"
+ echo -e 'GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA _v TO "'"$GROUPIE"'"' \
+ | sudo -u "$DBUSER" psql "$DBNAME"
+
+
+ fi
+ done
+fi
+
+echo "Database configuration finished." 1>&2
+
+exit 0
diff --git a/contrib/taler-nexus-prepare b/contrib/taler-nexus-prepare
deleted file mode 100755
index d98e5eb43..000000000
--- a/contrib/taler-nexus-prepare
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/bin/bash
-
-set -eu
-
-# EBICS details
-EBICS_URL="http://localhost:5000/ebicsweb"
-HOST_ID="HOST01"
-PARTNER_ID="PARTNER1"
-USER_ID="USER1"
-
-# This is used _both_ at Sandbox and at Nexus.
-# Basically, Nexus imports the offered bank account
-# using the same name used by the Sandbox.
-BANK_ACCOUNT_LABEL="my-bank-account"
-BANK_CONNECTION_LABEL="my-bank-connection"
-FACADE_LABEL="my-facade"
-
-export LIBEUFIN_SANDBOX_USERNAME=exchange
-export LIBEUFIN_SANDBOX_PASSWORD=x
-export LIBEUFIN_SANDBOX_URL=http://localhost:5000/
-libeufin-cli sandbox demobank register --name "Exchange Company"
-
-export LIBEUFIN_SANDBOX_USERNAME=fortytwo
-export LIBEUFIN_SANDBOX_PASSWORD=x
-export LIBEUFIN_SANDBOX_URL=http://localhost:5000/
-libeufin-cli sandbox demobank register \
- --name User42 --iban FR7630006000011234567890189
-
-export LIBEUFIN_SANDBOX_USERNAME=fortythree
-export LIBEUFIN_SANDBOX_PASSWORD=x
-export LIBEUFIN_SANDBOX_URL=http://localhost:5000/
-libeufin-cli sandbox demobank register \
- --name User43 --iban GB33BUKB20201555555555
-
-export LIBEUFIN_SANDBOX_USERNAME=admin
-export LIBEUFIN_SANDBOX_PASSWORD=secret
-export LIBEUFIN_SANDBOX_URL=http://localhost:5000/
-echo -n "Create EBICS host at Sandbox..."
-libeufin-cli sandbox \
- --sandbox-url "http://localhost:5000" \
- ebicshost create --host-id $HOST_ID
-echo " OK"
-
-echo -n "Create exchange EBICS subscriber at Sandbox..."
-libeufin-cli sandbox \
- demobank new-ebicssubscriber --host-id $HOST_ID \
- --user-id $USER_ID --partner-id $PARTNER_ID \
- --bank-account exchange # that's a username _and_ a bank account name
-echo " OK"
-unset LIBEUFIN_SANDBOX_USERNAME
-unset LIBEUFIN_SANDBOX_PASSWORD
-unset LIBEUFIN_SANDBOX_URL
-
-export LIBEUFIN_NEXUS_USERNAME=exchange
-export LIBEUFIN_NEXUS_PASSWORD=x
-export LIBEUFIN_NEXUS_URL=http://localhost:5001/
-
-echo -n "Create the exchange (super)user at Nexus..."
-libeufin-nexus superuser exchange --password x
-echo " DONE"
-
-echo -n "Creating a EBICS connection at Nexus..."
-libeufin-cli connections new-ebics-connection \
- --ebics-url $EBICS_URL \
- --host-id $HOST_ID \
- --partner-id $PARTNER_ID \
- --ebics-user-id $USER_ID \
- $BANK_CONNECTION_LABEL
-echo " OK"
-
-echo -n "Setup EBICS keying..."
-libeufin-cli connections connect $BANK_CONNECTION_LABEL > /dev/null
-echo " OK"
-
-echo -n "Download bank account name from Sandbox..."
-libeufin-cli connections download-bank-accounts $BANK_CONNECTION_LABEL
-echo " OK"
-
-echo -n "Importing bank account info into Nexus..."
-libeufin-cli connections import-bank-account \
- --offered-account-id exchange \
- --nexus-bank-account-id $BANK_ACCOUNT_LABEL \
- $BANK_CONNECTION_LABEL
-echo " OK"
-
-echo -n "Create the Taler facade at Nexus..."
-libeufin-cli facades \
- new-taler-wire-gateway-facade \
- --currency KUDOS --facade-name $FACADE_LABEL \
- $BANK_CONNECTION_LABEL $BANK_ACCOUNT_LABEL
-echo " DONE"
-
-echo -n Setup payments submission task..
-# Tries every second.
-libeufin-cli accounts task-schedule \
- --task-type submit \
- --task-name exchange-payments \
- --task-cronspec "* * *" \
- $BANK_ACCOUNT_LABEL
-echo OK
-# Tries every second. Ask C52
-echo -n Setup history fetch task..
-libeufin-cli accounts task-schedule \
- --task-type fetch \
- --task-name exchange-history \
- --task-cronspec "* * *" \
- --task-param-level report \
- --task-param-range-type latest \
- $BANK_ACCOUNT_LABEL
-echo OK
-
-# unset, in case the script gets 'source'd.
-unset LIBEUFIN_NEXUS_USERNAME
-unset LIBEUFIN_NEXUS_PASSWORD
-unset LIBEUFIN_NEXUS_URL
diff --git a/contrib/taler-terms-generator b/contrib/taler-terms-generator
new file mode 100755
index 000000000..4a25afa4b
--- /dev/null
+++ b/contrib/taler-terms-generator
@@ -0,0 +1,295 @@
+#!/bin/bash
+# This file is part of GNU TALER.
+# Copyright (C) 2014-2023 Taler Systems SA
+#
+# TALER is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free Software
+# Foundation; either version 2.1, or (at your option) any later version.
+#
+# TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License along with
+# TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+#
+# @author Florian Dold
+# @author Benedikt Muller
+# @author Sree Harsha Totakura
+# @author Marcello Stanisci
+# @author Christian Grothoff
+#
+#
+# Error checking on
+set -eu
+
+# Call with target language as first argument.
+function make_config() {
+ cat >"${BUILDDIR}/conf.py" <<EOF
+import sys
+import os
+sys.path.append(os.path.abspath('_exts'))
+needs_sphinx = '1.8.5'
+extensions = [
+ 'sphinx.ext.todo',
+ 'sphinx.ext.imgmath',
+ 'sphinx_markdown_builder',
+]
+templates_path = ['_templates']
+source_suffix = {
+ '.rst': 'restructuredtext',
+}
+master_doc = '$VERSION_BASENAME'
+project = u'$VERSION_BASENAME'
+copyright = u'$COPYRIGHT'
+version = '$VERSION_BASENAME'
+release = '$VERSION_BASENAME'
+language = "$LANGUAGE"
+exclude_patterns = ['_build', '_exts', 'cf', 'prebuilt']
+locale_dirs = ['$LOCALE_DIR/']
+gettext_compact = False
+pygments_style = 'sphinx'
+html_theme = 'epub'
+rst_epilog = ""
+html_show_sphinx = False
+html_theme_options = {
+ "relbar1": "false",
+ "footer": "false",
+}
+html_title = "$TITLE"
+html_short_title = "$TITLE"
+html_use_index = True
+html_show_sphinx = False
+latex_elements = {
+ # The paper size ('letterpaper' or 'a4paper').
+ #'papersize': 'letterpaper',
+
+ # The font size ('10pt', '11pt' or '12pt').
+ #'pointsize': '10pt',
+
+ # Additional stuff for the LaTeX preamble.
+ #'preamble': '',
+}
+latex_documents = [
+ ('$VERSION_BASENAME', '$VERSION_BASENAME.tex',
+ '$VERSION_BASENAME', '$VERSION_BASENAME', 'manual'),
+]
+epub_basename = "$VERSION_BASENAME"
+epub_title = "$TITLE"
+EOF
+}
+
+# Output file given as first argument to stderr, then exit with a failure.
+function failcat() {
+ cat "$1" 1>&2
+ exit 1
+}
+
+# defaults
+AUTHOR="GNU Taler team"
+VERSION="exchange-tos-v0"
+LOCALE_DIR=$(taler-config -s "PATHS" -o "LOCALEDIR" -f)
+OUTPUT=$(taler-config -s "EXCHANGE" -o "TERMS_DIR" -f)
+PAPER="a4"
+COPYRIGHT="2014-2023 Taler Systems SA (GPLv3+ or GFDL 1.3+)"
+INCREMENTAL=0
+
+# Parse command-line options
+while getopts ':a:C:hKi:l:L:o:p:t:' OPTION; do
+ case "$OPTION" in
+ a)
+ AUTHOR="$OPTARG"
+ ;;
+ C)
+ COPYRIGHT="$OPTARG"
+ ;;
+ h)
+ echo 'Supported options:'
+ echo ' -a AUTHOR -- set author header' "(default: $AUTHOR)"
+ echo ' -C COPYRIGHT -- set copyright header' "(default: $COPYRIGHT)"
+ echo ' -h -- print this help'
+ echo ' -K -- rebuild only if input is older than output'
+ echo ' -i INPUT -- input file to convert' "(default: $VERSION)"
+ echo ' -l LANGUAGE -- target language to add'
+ echo ' -L LOCALE_DIR -- directory with resources for translation' "(default: $LOCALE_DIR)"
+ echo ' -o OUTPUT -- output directory' "(default: $OUTPUT)"
+ echo ' -p PAPER -- paper format' "(default: $PAPER)"
+ echo ' -t TITLE -- title of the document to generate'
+ exit 0
+ ;;
+ l)
+ ADD_LANGUAGE="$OPTARG"
+ ;;
+ L)
+ LOCALE_DIR="$OPTARG"
+ ;;
+ i)
+ VERSION="$OPTARG"
+ ;;
+ o)
+ OUTPUT="$OPTARG"
+ ;;
+ p)
+ PAPER="$OPTARG"
+ case "$PAPER" in
+ a4 | letter) ;;
+ *)
+ echo "Error: Paper format '$PAPER' invalid (use 'a4' or 'letter')" 1>&2
+ exit 1
+ ;;
+ esac
+ ;;
+ t)
+ TITLE="$OPTARG"
+ ;;
+ K)
+ INCREMENTAL=1
+ ;;
+ ?)
+ echo "Unrecognized command line option" 1>&2
+ exit 1
+ ;;
+ esac
+done
+
+if ! which sphinx-build >/dev/null; then
+ echo "Command 'sphinx-build' not found, but required. Please install sphinx." 1>&2
+ exit 1
+fi
+
+if ! which pandoc >/dev/null; then
+ echo "Command 'pandoc' not found, but required. Please install pandoc." 1>&2
+ exit 1
+fi
+
+if ! which gs >/dev/null; then
+ echo "Command 'gs' not found, but required. Please install ghostscript." 1>&2
+ exit 1
+fi
+
+if ! which pdfroff >/dev/null; then
+ echo "Command 'pdfroff' not found, but required. Please install pdfroff/groff." 1>&2
+ exit 1
+fi
+
+if ! which make >/dev/null; then
+ echo "Command 'make' not found, but required. Please install make." 1>&2
+ exit 1
+fi
+
+# We append ".rst" if needed, remove if given on command-line
+# shellcheck disable=SC2001
+VERSION=$(echo "${VERSION}" | sed -e "s/\.rst$//")
+
+# Sometimes we just want the basename, not the directory.
+VERSION_BASENAME=$(basename "${VERSION}")
+
+BUILDDIR=$(mktemp -d /tmp/taler-terms-XXXXXX)
+if [ ! -f "${VERSION}.rst" ]; then
+ echo "Error: File '${VERSION}.rst' not found. Please check '-i' option." 1>&2
+ exit 1
+fi
+
+cp "${VERSION}.rst" "${BUILDDIR}/"
+
+if [ -z ${TITLE+x} ]; then
+ TITLE=$(head -n1 "${VERSION}.rst")
+ echo "Title automatically set to '$TITLE'" 1>&2
+fi
+
+if [ -n "${ADD_LANGUAGE+x}" ]; then
+ if ! echo "${ADD_LANGUAGE}" | grep -e '^..$' >/dev/null; then
+ echo "Error: Invalid language '${ADD_LANGUAGE}'. Two characters (en, de, fr, ...) expected." 1>&2
+ exit 1
+ fi
+ echo "Adding language files for translations to '${ADD_LANGUAGE}'" 1>&2
+ make_config "${ADD_LANGUAGE}"
+ sphinx-build \
+ -b gettext \
+ -D language="${ADD_LANGUAGE}" \
+ -d "${BUILDDIR}/.doctrees" \
+ "${BUILDDIR}" \
+ "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/" \
+ &>"${BUILDDIR}/add-language.log" ||
+ failcat "${BUILDDIR}/add-language.log"
+ if [ -f "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.po" ]; then
+ msgmerge --lang="${ADD_LANGUAGE}" \
+ --no-location \
+ -o "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.mrg" \
+ "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.po" \
+ "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.pot"
+ mv "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.mrg" \
+ "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.po"
+ else
+ mv "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.pot" \
+ "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.po"
+ fi
+ rm -f "${LOCALE_DIR}/${ADD_LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.pot"
+ echo "Done" 1>&2
+ exit 0
+fi
+
+# As a heuristic for incremental builds, we only check the text output file.
+if [[ $INCREMENTAL -eq 1 ]]; then
+ if [[ "${VERSION}.rst" -ot "${OUTPUT}/buildstamp" ]]; then
+ echo "Not rebuilding, input file $VERSION is older than $OUTPUT/buildstamp."
+ exit 0
+ fi
+fi
+
+# shellcheck disable=SC2086
+for d in en $(ls -d ${LOCALE_DIR}/?? | grep -v "en" 2>/dev/null || true); do
+ LANGUAGE=$(basename "$d")
+ if [ "en" != "${LANGUAGE}" ] && [ ! -f "${LOCALE_DIR}/${LANGUAGE}/LC_MESSAGES/${VERSION_BASENAME}.po" ]; then
+ echo "Skipping language ${LANGUAGE}: no translation for ${VERSION_BASENAME} found."
+ continue
+ fi
+ echo "Generating files at '$OUTPUT' for ETag '$VERSION_BASENAME' and language '${LANGUAGE}' in '${BUILDDIR}':" 1>&2
+
+ make_config "$LANGUAGE"
+ mkdir -p "${OUTPUT}/${LANGUAGE}/"
+
+ LBUILD="sphinx-build -D language=${LANGUAGE} -d ${BUILDDIR}/.doctrees"
+
+ OUTBASE="${OUTPUT}/${LANGUAGE}/${VERSION_BASENAME}"
+
+ echo "$VERSION_BASENAME MD ($LANGUAGE)..." 1>&2
+ $LBUILD \
+ -b markdown \
+ "${BUILDDIR}" \
+ "${BUILDDIR}/md" \
+ &>"${BUILDDIR}/md-sphinx.log" ||
+ failcat "${BUILDDIR}/md-sphinx.log"
+ BUILDFILE_MARKDOWN="${BUILDDIR}/md/${VERSION_BASENAME}.md"
+ cp "$BUILDFILE_MARKDOWN" "${OUTBASE}.md"
+
+ # Convert the generated Markdown (!) to other formats.
+
+ echo "$VERSION_BASENAME PDF ($LANGUAGE)..." 1>&2
+ pandoc \
+ -i "$BUILDFILE_MARKDOWN" \
+ -o "${OUTBASE}.pdf" \
+ --pdf-engine=pdfroff \
+ --shift-heading-level-by=-1
+
+ echo "$VERSION_BASENAME HTML ($LANGUAGE)..." 1>&2
+ # FIXME: Newer versions of pandic should use
+ # --embed-resources --standalone instead of --self-contained
+ pandoc \
+ -i "$BUILDFILE_MARKDOWN" \
+ -o "${OUTBASE}.html" \
+ --self-contained \
+ --shift-heading-level-by=-1
+
+ echo "$VERSION_BASENAME TXT ($LANGUAGE)..." 1>&2
+ pandoc \
+ -i "$BUILDFILE_MARKDOWN" \
+ -o "${OUTBASE}.txt"
+done
+
+if [[ $INCREMENTAL -eq 1 ]]; then
+ touch "${OUTPUT}/buildstamp"
+fi
+
+echo "Done" 1>&2
+exit 0
diff --git a/contrib/tos/.gitignore b/contrib/tos/.gitignore
deleted file mode 100644
index fb83616eb..000000000
--- a/contrib/tos/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-sphinx.err
-sphinx.log
-_build/
diff --git a/contrib/tos/Makefile b/contrib/tos/Makefile
deleted file mode 100644
index ab29543cb..000000000
--- a/contrib/tos/Makefile
+++ /dev/null
@@ -1,109 +0,0 @@
-# Makefile for Sphinx documentation
-#
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-PAPER =
-BUILDDIR = _build
-
-# User-friendly check for sphinx-build
-ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
-$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
-endif
-
-# Internal variables.
-PAPEROPT_a4 = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html json epub latex latexpdf text man doctest gettext
-
-help:
- @echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make a single large HTML file"
- @echo " json to make JSON files"
- @echo " epub to make an epub"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " pdf to make LaTeX files and run them through pdflatex"
- @echo " txt to make text files"
- @echo " man to make manual pages"
- @echo " texinfo to make Texinfo files"
- @echo " info to make Texinfo files and run them through makeinfo"
- @echo " gettext to make PO message catalogs"
- @echo " xml to make Docutils-native XML files"
- @echo " pseudoxml to make pseudoxml-XML files for display purposes"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
-
-clean:
- rm -rf $(BUILDDIR)/*
-
-
-# The html-linked builder does not support caching, so we
-# remove all cached state first.
-html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
- @echo
- @echo "Build finished. The HTML page is in $(BUILDDIR)/html."
-
-json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
- @echo
- @echo "Build finished; now you can process the JSON files."
-
-epub:
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
- @echo
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
- @echo "Run \`make' in that directory to run these through (pdf)latex" \
- "(use \`make latexpdf' here to do that automatically)."
-
-pdf:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/pdf
- @echo "Running LaTeX files through pdflatex..."
- $(MAKE) -C $(BUILDDIR)/pdf all-pdf
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/pdf."
-
-txt:
- $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/txt
- @echo
- @echo "Build finished. The text files are in $(BUILDDIR)/txt."
-
-man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
- @echo
- @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo
- @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
- @echo "Run \`make' in that directory to run these through makeinfo" \
- "(use \`make info' here to do that automatically)."
-
-info:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/info
- @echo "Running Texinfo files through makeinfo..."
- make -C $(BUILDDIR)/texinfo info
- @echo "makeinfo finished; the Info files are in $(BUILDDIR)/info."
-
-gettext:
- $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
- @echo
- @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
-
-xml:
- $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
- @echo
- @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
diff --git a/contrib/tos/README b/contrib/tos/README
deleted file mode 100644
index dd78024cb..000000000
--- a/contrib/tos/README
+++ /dev/null
@@ -1,58 +0,0 @@
-This directory contains the terms of service (template) for exchange
-operators.
-
-
-Dependencies
-============
-
-Generating new Terms of Service requires Sphinx, LaTeX with babel
-packages for all supported languages. On Debian, you should
-at least install:
-
-$ apt install python3-sphinx sphinx-intl texlive-lang-german texlive-lang-english latexmk texlive-latex-recommended texlive-latex-extra
-
-(NOTE: List may be incomplete.)
-
-
-Updating the Terms of Service
-=============================
-
-The master file with the Terms of service is 'tos.rst'.
-
-If you make substantial changes, you MUST change the "TOS_VERSION"
-in contrib/Makefile.am to the new Etag.
-
-To begin the translation into other languages after editing the master
-file, run
-
-$ make gettext
-
-to generate the master PO file. Then, run
-
-$ sphinx-intl update -p _build/locale/ -l de -l fr -l it
-
-to update the PO files for the various languages (extend the list of
-languages as necessary). The PO files for the translators are kept
-at locale/$LANG/LC_MESSAGES/tos.po for the language $LANG.
-
-Once all PO files have been updated with new translations, run
-
-$ make update-tos
-
-in the "contrib/" directory to generate all of the formats. The
-respective make rule calls the '../update-tos.sh' script in the
-contrib/ directory, which calls the 'Makefile' in the tos/
-directory for the various supported languages and file formats
-and then moves the generated files to the target directory
-('contrib/tos/$LANG/$VERSION.$FORMAT')
-
-
-Adding a new language
-=====================
-
-To add a new language $LANG, add $LANG to "TOS_LANGUAGES" in
-'contrib/Makefile.am' and run
-
-$ sphinx-intl update -p _build/gettext -l $LANG
-
-to generate the PO template.
diff --git a/contrib/tos/conf.py.in b/contrib/tos/conf.py.in
deleted file mode 100644
index 9f622d4e9..000000000
--- a/contrib/tos/conf.py.in
+++ /dev/null
@@ -1,283 +0,0 @@
-"""
- This file is part of GNU TALER.
- Copyright (C) 2014-2020 Taler Systems SA
-
- TALER is free software; you can redistribute it and/or modify it under the
- terms of the GNU Lesser General Public License as published by the Free Software
- Foundation; either version 2.1, or (at your option) any later version.
-
- TALER is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License along with
- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
-
- @author Florian Dold
- @author Benedikt Muller
- @author Sree Harsha Totakura
- @author Marcello Stanisci
- @author Christian Grothoff
-"""
-# -*- coding: utf-8 -*-
-#
-# neuro documentation build configuration file, created by
-# sphinx-quickstart on Sat May 31 13:11:06 2014.
-#
-# This file is execfile()d with the current directory set to its
-# containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys
-import os
-
-sys.path.append(os.path.abspath('_exts'))
-
-#import taler_sphinx_theme
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
-
-# -- General configuration ------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-needs_sphinx = '1.8.5'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
- 'sphinx.ext.todo',
- 'sphinx.ext.imgmath',
-]
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-source_suffix = {
- '.rst': 'restructuredtext',
-}
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = '%VERSION%'
-
-# General information about the project.
-project = u'%VERSION%'
-copyright = u'2014-2022 Taler Systems SA (GPLv3+ or GFDL 1.3+)'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '%VERSION%'
-# The full version, including alpha/beta/rc tags.
-release = '%VERSION%'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-# language = "en de"
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build', '_exts', 'cf', 'prebuilt']
-
-# The reST default role (used for this markup: `text`) to use for all
-# documents.
-# default_role = "ts:type"
-
-locale_dirs = ['locale/']
-gettext_compact = False
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-# If true, keep warnings as "system message" paragraphs in the built documents.
-#keep_warnings = False
-
-# -- Options for HTML output ----------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-html_theme = 'epub'
-
-#html_theme_path = taler_sphinx_theme.html_theme_path()
-
-#html_sidebars = {'**': ['logo-text.html', 'globaltoc.html', 'searchbox.html']}
-
-rst_epilog = ""
-
-html_show_sphinx = False
-
-html_theme_options = {
- # Set the name of the project to appear in the sidebar
- "relbar1": "false",
- "footer": "false",
-}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# "<project> v<release> documentation".
-html_title = "Taler Exchange Terms of Service"
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-html_short_title = "Terms of Service"
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-# html_static_path = ['_static']
-
-# Add any extra paths that contain custom files (such as robots.txt or
-# .htaccess) here, relative to this directory. These files are copied
-# directly to the root of the documentation.
-#html_extra_path = []
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-html_show_sphinx = False
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
-# -- Options for LaTeX output ---------------------------------------------
-
-latex_elements = {
- # The paper size ('letterpaper' or 'a4paper').
- #'papersize': 'letterpaper',
-
- # The font size ('10pt', '11pt' or '12pt').
- #'pointsize': '10pt',
-
- # Additional stuff for the LaTeX preamble.
- #'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-# author, documentclass [howto, manual, or own class]).
-latex_documents = [
- ('%VERSION%', '%VERSION%.tex',
- 'Terms of Service', 'GNU Taler team', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-# latex_appendices = ["fdl-1.3"]
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-# -- Options for manual page output ---------------------------------------
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-# -- Options for Texinfo output -------------------------------------------
-
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
-
-# If true, do not generate a @detailmenu in the "Top" node's menu.
-#texinfo_no_detailmenu = False
-
-
-# -- Options for epub output ----------------------------
-
-epub_basename = "%VERSION%"
-
-epub_title = "Terms of Service"
diff --git a/contrib/tos/en/bfh-v0.epub b/contrib/tos/en/bfh-v0.epub
deleted file mode 100644
index 5a23f120d..000000000
--- a/contrib/tos/en/bfh-v0.epub
+++ /dev/null
Binary files differ
diff --git a/contrib/tos/en/bfh-v0.html b/contrib/tos/en/bfh-v0.html
deleted file mode 100644
index 5355f0d9c..000000000
--- a/contrib/tos/en/bfh-v0.html
+++ /dev/null
@@ -1,310 +0,0 @@
-<html lang="en">
-<head>
-<meta charset="utf-8"/>
-<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
-<title>Terms Of Service — Taler Exchange Terms of Service</title>
-<link href="data:text/css,pre%20%7B%20line-height%3A%20125%25%3B%20margin%3A%200%3B%20%7D%0Atd.linenos%20pre%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23f0f0f0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Aspan.linenos%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23f0f0f0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Atd.linenos%20pre.special%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23ffffc0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Aspan.linenos.special%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23ffffc0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0A.highlight%20.hll%20%7B%20background-color%3A%20%23ffffcc%20%7D%0A.highlight%20%7B%20background%3A%20%23eeffcc%3B%20%7D%0A.highlight%20.c%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment%20%2A/%0A.highlight%20.err%20%7B%20border%3A%201px%20solid%20%23FF0000%20%7D%20/%2A%20Error%20%2A/%0A.highlight%20.k%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword%20%2A/%0A.highlight%20.o%20%7B%20color%3A%20%23666666%20%7D%20/%2A%20Operator%20%2A/%0A.highlight%20.ch%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Hashbang%20%2A/%0A.highlight%20.cm%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Multiline%20%2A/%0A.highlight%20.cp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Comment.Preproc%20%2A/%0A.highlight%20.cpf%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.PreprocFile%20%2A/%0A.highlight%20.c1%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Single%20%2A/%0A.highlight%20.cs%20%7B%20color%3A%20%23408090%3B%20background-color%3A%20%23fff0f0%20%7D%20/%2A%20Comment.Special%20%2A/%0A.highlight%20.gd%20%7B%20color%3A%20%23A00000%20%7D%20/%2A%20Generic.Deleted%20%2A/%0A.highlight%20.ge%20%7B%20font-style%3A%20italic%20%7D%20/%2A%20Generic.Emph%20%2A/%0A.highlight%20.gr%20%7B%20color%3A%20%23FF0000%20%7D%20/%2A%20Generic.Error%20%2A/%0A.highlight%20.gh%20%7B%20color%3A%20%23000080%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Heading%20%2A/%0A.highlight%20.gi%20%7B%20color%3A%20%2300A000%20%7D%20/%2A%20Generic.Inserted%20%2A/%0A.highlight%20.go%20%7B%20color%3A%20%23333333%20%7D%20/%2A%20Generic.Output%20%2A/%0A.highlight%20.gp%20%7B%20color%3A%20%23c65d09%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Prompt%20%2A/%0A.highlight%20.gs%20%7B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Strong%20%2A/%0A.highlight%20.gu%20%7B%20color%3A%20%23800080%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Subheading%20%2A/%0A.highlight%20.gt%20%7B%20color%3A%20%230044DD%20%7D%20/%2A%20Generic.Traceback%20%2A/%0A.highlight%20.kc%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Constant%20%2A/%0A.highlight%20.kd%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Declaration%20%2A/%0A.highlight%20.kn%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Namespace%20%2A/%0A.highlight%20.kp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Keyword.Pseudo%20%2A/%0A.highlight%20.kr%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Reserved%20%2A/%0A.highlight%20.kt%20%7B%20color%3A%20%23902000%20%7D%20/%2A%20Keyword.Type%20%2A/%0A.highlight%20.m%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number%20%2A/%0A.highlight%20.s%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String%20%2A/%0A.highlight%20.na%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Name.Attribute%20%2A/%0A.highlight%20.nb%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Builtin%20%2A/%0A.highlight%20.nc%20%7B%20color%3A%20%230e84b5%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Class%20%2A/%0A.highlight%20.no%20%7B%20color%3A%20%2360add5%20%7D%20/%2A%20Name.Constant%20%2A/%0A.highlight%20.nd%20%7B%20color%3A%20%23555555%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Decorator%20%2A/%0A.highlight%20.ni%20%7B%20color%3A%20%23d55537%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Entity%20%2A/%0A.highlight%20.ne%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Exception%20%2A/%0A.highlight%20.nf%20%7B%20color%3A%20%2306287e%20%7D%20/%2A%20Name.Function%20%2A/%0A.highlight%20.nl%20%7B%20color%3A%20%23002070%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Label%20%2A/%0A.highlight%20.nn%20%7B%20color%3A%20%230e84b5%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Namespace%20%2A/%0A.highlight%20.nt%20%7B%20color%3A%20%23062873%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Tag%20%2A/%0A.highlight%20.nv%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable%20%2A/%0A.highlight%20.ow%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Operator.Word%20%2A/%0A.highlight%20.w%20%7B%20color%3A%20%23bbbbbb%20%7D%20/%2A%20Text.Whitespace%20%2A/%0A.highlight%20.mb%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Bin%20%2A/%0A.highlight%20.mf%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Float%20%2A/%0A.highlight%20.mh%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Hex%20%2A/%0A.highlight%20.mi%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Integer%20%2A/%0A.highlight%20.mo%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Oct%20%2A/%0A.highlight%20.sa%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Affix%20%2A/%0A.highlight%20.sb%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Backtick%20%2A/%0A.highlight%20.sc%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Char%20%2A/%0A.highlight%20.dl%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Delimiter%20%2A/%0A.highlight%20.sd%20%7B%20color%3A%20%234070a0%3B%20font-style%3A%20italic%20%7D%20/%2A%20Literal.String.Doc%20%2A/%0A.highlight%20.s2%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Double%20%2A/%0A.highlight%20.se%20%7B%20color%3A%20%234070a0%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Literal.String.Escape%20%2A/%0A.highlight%20.sh%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Heredoc%20%2A/%0A.highlight%20.si%20%7B%20color%3A%20%2370a0d0%3B%20font-style%3A%20italic%20%7D%20/%2A%20Literal.String.Interpol%20%2A/%0A.highlight%20.sx%20%7B%20color%3A%20%23c65d09%20%7D%20/%2A%20Literal.String.Other%20%2A/%0A.highlight%20.sr%20%7B%20color%3A%20%23235388%20%7D%20/%2A%20Literal.String.Regex%20%2A/%0A.highlight%20.s1%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Single%20%2A/%0A.highlight%20.ss%20%7B%20color%3A%20%23517918%20%7D%20/%2A%20Literal.String.Symbol%20%2A/%0A.highlight%20.bp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Builtin.Pseudo%20%2A/%0A.highlight%20.fm%20%7B%20color%3A%20%2306287e%20%7D%20/%2A%20Name.Function.Magic%20%2A/%0A.highlight%20.vc%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Class%20%2A/%0A.highlight%20.vg%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Global%20%2A/%0A.highlight%20.vi%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Instance%20%2A/%0A.highlight%20.vm%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Magic%20%2A/%0A.highlight%20.il%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Integer.Long%20%2A/" rel="stylesheet" type="text/css"/><!--URL:_static/pygments.css-->
-<link href="data:text/css,/%2A%0A%20%2A%20epub.css_t%0A%20%2A%20~~~~~~~~~~%0A%20%2A%0A%20%2A%20Sphinx%20stylesheet%20--%20epub%20theme.%0A%20%2A%0A%20%2A%20%3Acopyright%3A%20Copyright%202007-2021%20by%20the%20Sphinx%20team%2C%20see%20AUTHORS.%0A%20%2A%20%3Alicense%3A%20BSD%2C%20see%20LICENSE%20for%20details.%0A%20%2A%0A%20%2A/%0A%0A/%2A%20--%20main%20layout%20-----------------------------------------------------------%20%2A/%0A%0A%0A%0Adiv.clearer%20%7B%0A%20%20%20%20clear%3A%20both%3B%0A%7D%0A%0Aa%3Alink%2C%20a%3Avisited%20%7B%0A%20%20%20%20color%3A%20%233333ff%3B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0Aimg%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20max-width%3A%20100%25%3B%0A%7D%0A%0A/%2A%20--%20relbar%20----------------------------------------------------------------%20%2A/%0A%0Adiv.related%20%7B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0Adiv.related%20h3%20%7B%0A%20%20%20%20display%3A%20none%3B%0A%7D%0A%0Adiv.related%20ul%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding%3A%200%200%200%2010px%3B%0A%20%20%20%20list-style%3A%20none%3B%0A%7D%0A%0Adiv.related%20li%20%7B%0A%20%20%20%20display%3A%20inline%3B%0A%7D%0A%0Adiv.related%20li.right%20%7B%0A%20%20%20%20float%3A%20right%3B%0A%20%20%20%20margin-right%3A%205px%3B%0A%7D%0A%0A/%2A%20--%20sidebar%20---------------------------------------------------------------%20%2A/%0A%0Adiv.sphinxsidebarwrapper%20%7B%0A%20%20%20%20padding%3A%2010px%205px%200%2010px%3B%0A%7D%0A%0Adiv.sphinxsidebar%20%7B%0A%20%20%20%20float%3A%20left%3B%0A%20%20%20%20width%3A%20230px%3B%0A%20%20%20%20margin-left%3A%20-100%25%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20%7B%0A%20%20%20%20list-style%3A%20none%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20ul%2C%0Adiv.sphinxsidebar%20ul.want-points%20%7B%0A%20%20%20%20margin-left%3A%2020px%3B%0A%20%20%20%20list-style%3A%20square%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20ul%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0Adiv.sphinxsidebar%20form%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%7D%0A%0Adiv.sphinxsidebar%20input%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%2398dbcc%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%20100%25%3B%0A%7D%0A%0Aimg%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20max-width%3A%20100%25%3B%0A%7D%0A%0A/%2A%20--%20search%20page%20-----------------------------------------------------------%20%2A/%0A%0Aul.search%20%7B%0A%20%20%20%20margin%3A%2010px%200%200%2020px%3B%0A%20%20%20%20padding%3A%200%3B%0A%7D%0A%0Aul.search%20li%20%7B%0A%20%20%20%20padding%3A%205px%200%205px%2020px%3B%0A%20%20%20%20background-image%3A%20url%28file.png%29%3B%0A%20%20%20%20background-repeat%3A%20no-repeat%3B%0A%20%20%20%20background-position%3A%200%207px%3B%0A%7D%0A%0Aul.search%20li%20a%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Aul.search%20li%20div.context%20%7B%0A%20%20%20%20color%3A%20%23888%3B%0A%20%20%20%20margin%3A%202px%200%200%2030px%3B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0Aul.keywordmatches%20li.goodmatch%20a%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A/%2A%20--%20index%20page%20------------------------------------------------------------%20%2A/%0A%0Atable.contentstable%20%7B%0A%20%20%20%20width%3A%2090%25%3B%0A%7D%0A%0Atable.contentstable%20p.biglink%20%7B%0A%20%20%20%20line-height%3A%20150%25%3B%0A%7D%0A%0Aa.biglink%20%7B%0A%20%20%20%20font-size%3A%20130%25%3B%0A%7D%0A%0Aspan.linkdescr%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%20%20%20%20padding-top%3A%205px%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0A/%2A%20--%20general%20index%20---------------------------------------------------------%20%2A/%0A%0Atable.indextable%20td%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%20%20%20%20vertical-align%3A%20top%3B%0A%7D%0A%0Atable.indextable%20ul%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%20%20%20%20list-style-type%3A%20none%3B%0A%7D%0A%0Atable.indextable%20%3E%20tbody%20%3E%20tr%20%3E%20td%20%3E%20ul%20%7B%0A%20%20%20%20padding-left%3A%200em%3B%0A%7D%0A%0Atable.indextable%20tr.pcap%20%7B%0A%20%20%20%20height%3A%2010px%3B%0A%7D%0A%0Atable.indextable%20tr.cap%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%20%20%20%20background-color%3A%20%23f2f2f2%3B%0A%7D%0A%0Aimg.toggler%20%7B%0A%20%20%20%20margin-right%3A%203px%3B%0A%20%20%20%20margin-top%3A%203px%3B%0A%20%20%20%20cursor%3A%20pointer%3B%0A%7D%0A%0A/%2A%20--%20domain%20module%20index%20---------------------------------------------------%20%2A/%0A%0Atable.modindextable%20td%20%7B%0A%20%20%20%20padding%3A%202px%3B%0A%20%20%20%20border-collapse%3A%20collapse%3B%0A%7D%0A%0A/%2A%20--%20general%20body%20styles%20---------------------------------------------------%20%2A/%0A%0Aa.headerlink%20%7B%0A%20%20%20%20visibility%3A%20hidden%3B%0A%7D%0A%0Adiv.body%20p.caption%20%7B%0A%20%20%20%20text-align%3A%20inherit%3B%0A%7D%0A%0Adiv.body%20td%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0A.first%20%7B%0A%20%20%20%20margin-top%3A%200%20%21important%3B%0A%7D%0A%0Ap.rubric%20%7B%0A%20%20%20%20margin-top%3A%2030px%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A.align-left%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0A.align-center%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%7D%0A%0A.align-right%20%7B%0A%20%20%20%20text-align%3A%20right%3B%0A%7D%0A%0A/%2A%20--%20sidebars%20--------------------------------------------------------------%20%2A/%0A%0Adiv.sidebar%20%7B%0A%20%20%20%20margin%3A%200%200%200.5em%201em%3B%0A%20%20%20%20border%3A%201px%20solid%20%23ddb%3B%0A%20%20%20%20padding%3A%207px%207px%200%207px%3B%0A%20%20%20%20background-color%3A%20%23ffe%3B%0A%20%20%20%20width%3A%2040%25%3B%0A%20%20%20%20float%3A%20right%3B%0A%7D%0A%0Ap.sidebar-title%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A/%2A%20--%20topics%20----------------------------------------------------------------%20%2A/%0A%0Adiv.topic%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%23ccc%3B%0A%20%20%20%20padding%3A%207px%207px%200%207px%3B%0A%20%20%20%20margin%3A%2010px%200%2010px%200%3B%0A%7D%0A%0Ap.topic-title%20%7B%0A%20%20%20%20font-size%3A%20110%25%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%7D%0A%0A/%2A%20--%20admonitions%20-----------------------------------------------------------%20%2A/%0A%0Adiv.admonition%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%20%20%20%20padding%3A%207px%3B%0A%7D%0A%0Adiv.admonition%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Adiv.admonition%20dl%20%7B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0Ap.admonition-title%20%7B%0A%20%20%20%20margin%3A%200px%2010px%205px%200px%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Adiv.body%20p.centered%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%20%20%20%20margin-top%3A%2025px%3B%0A%7D%0A%0A/%2A%20--%20tables%20----------------------------------------------------------------%20%2A/%0A%0Atable.docutils%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20border-collapse%3A%20collapse%3B%0A%7D%0A%0Atable%20caption%20span.caption-number%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Atable%20caption%20span.caption-text%20%7B%0A%7D%0A%0Atable.docutils%20td%2C%20table.docutils%20th%20%7B%0A%20%20%20%20padding%3A%201px%208px%201px%205px%3B%0A%20%20%20%20border-top%3A%200%3B%0A%20%20%20%20border-left%3A%200%3B%0A%20%20%20%20border-right%3A%200%3B%0A%20%20%20%20border-bottom%3A%201px%20solid%20%23aaa%3B%0A%7D%0A%0Atable.footnote%20td%2C%20table.footnote%20th%20%7B%0A%20%20%20%20border%3A%200%20%21important%3B%0A%7D%0A%0Ath%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%20%20%20%20padding-right%3A%205px%3B%0A%7D%0A%0Atable.citation%20%7B%0A%20%20%20%20border-left%3A%20solid%201px%20gray%3B%0A%20%20%20%20margin-left%3A%201px%3B%0A%7D%0A%0Atable.citation%20td%20%7B%0A%20%20%20%20border-bottom%3A%20none%3B%0A%7D%0A%0A/%2A%20--%20figures%20---------------------------------------------------------------%20%2A/%0A%0Adiv.figure%20p.caption%20span.caption-number%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adiv.figure%20p.caption%20span.caption-text%20%7B%0A%7D%0A%0A/%2A%20--%20field%20list%20styles%20-----------------------------------------------------%20%2A/%0A%0A/%2A%20--%20for%20html4%20--%20%2A/%0A%0Atable.field-list%20td%2C%20table.field-list%20th%20%7B%0A%20%20%20%20border%3A%200%20%21important%3B%0A%7D%0A%0A.field-list%20ul%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding-left%3A%201em%3B%0A%7D%0A%0A.field-list%20p%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0A/%2A%20--%20for%20html5%20--%20%2A/%0A%0A/%2A%20bold%20field%20name%2C%20content%20starts%20on%20the%20same%20line%20%2A/%0A%0Adl.field-list%20%3E%20dt%2C%0Adl.option-list%20%3E%20dt%2C%0Adl.docinfo%20%3E%20dt%2C%0Adl.footnote%20%3E%20dt%2C%0Adl.citation%20%3E%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20clear%3A%20left%3B%0A%20%20%20%20float%3A%20left%3B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding%3A%200%3B%0A%20%20%20%20padding-right%3A%200.5em%3B%0A%7D%0A%0A/%2A%20Offset%20for%20field%20content%20%28corresponds%20to%20the%20--field-name-limit%20option%29%20%2A/%0A%0Adl.field-list%20%3E%20dd%2C%0Adl.option-list%20%3E%20dd%2C%0Adl.docinfo%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%20%209em%3B%20/%2A%20ca.%2014%20chars%20in%20the%20test%20examples%20%2A/%0A%7D%0A%0A/%2A%20start%20field-body%20on%20a%20new%20line%20after%20long%20field%20names%20%2A/%0A%0Adl.field-list%20%3E%20dd%20%3E%20%2A%3Afirst-child%2C%0Adl.option-list%20%3E%20dd%20%3E%20%2A%3Afirst-child%0A%7B%0A%20%20%20%20display%3A%20inline-block%3B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0Adl.field-list%20%3E%20dt%3Aafter%2C%0Adl.docinfo%20%3E%20dt%3Aafter%20%7B%0A%20%20%20%20content%3A%20%22%3A%22%3B%0A%7D%0A%0A/%2A%20--%20option%20lists%20----------------------------------------------------------%20%2A/%0A%0Adl.option-list%20%7B%0A%20%20%20%20margin-left%3A%2040px%3B%0A%7D%0A%0Adl.option-list%20%3E%20dt%20%7B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0Aspan.option%20%7B%0A%20%20%20%20white-space%3A%20nowrap%3B%0A%7D%0A%0A/%2A%20--%20lists%20-----------------------------------------------------------------%20%2A/%0A%0A/%2A%20--%20compact%20and%20simple%20lists%3A%20no%20margin%20between%20items%20--%20%2A/%0A%0A.simple%20%20li%2C%20.compact%20li%2C%0A.simple%20%20ul%2C%20.compact%20ul%2C%0A.simple%20%20ol%2C%20.compact%20ol%2C%0A.simple%20%3E%20li%20p%2C%20.compact%20%3E%20li%20p%2C%0Adl.simple%20%3E%20dd%2C%20dl.compact%20%3E%20dd%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0A/%2A%20--%20enumerated%20lists%20------------------------------------------------------%20%2A/%0A%0Aol.arabic%20%7B%0A%20%20%20%20list-style%3A%20decimal%3B%0A%7D%0A%0Aol.loweralpha%20%7B%0A%20%20%20%20list-style%3A%20lower-alpha%3B%0A%7D%0A%0Aol.upperalpha%20%7B%0A%20%20%20%20list-style%3A%20upper-alpha%3B%0A%7D%0A%0Aol.lowerroman%20%7B%0A%20%20%20%20list-style%3A%20lower-roman%3B%0A%7D%0A%0Aol.upperroman%20%7B%0A%20%20%20%20list-style%3A%20upper-roman%3B%0A%7D%0A%0Adt%20span.classifier%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adt%20span.classifier%3Abefore%20%7B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20margin%3A%200.5em%3B%0A%20%20%20%20content%3A%20%22%3A%22%3B%0A%7D%0A%0A/%2A%20--%20other%20body%20styles%20-----------------------------------------------------%20%2A/%0A%0Adl%20%7B%0A%20%20%20%20margin-bottom%3A%2015px%3B%0A%7D%0A%0Add%20p%20%7B%0A%20%20%20%20margin-top%3A%200px%3B%0A%7D%0A%0Add%20ul%2C%20dd%20table%20%7B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%7D%0A%0Add%20%7B%0A%20%20%20%20margin-top%3A%203px%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%20%20%20%20margin-left%3A%2030px%3B%0A%7D%0A%0Adt%3Atarget%2C%20.highlighted%20%7B%0A%20%20%20%20background-color%3A%20%23ddd%3B%0A%7D%0A%0Adl.glossary%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20font-size%3A%20110%25%3B%0A%7D%0A%0A.optional%20%7B%0A%20%20%20%20font-size%3A%20130%25%3B%0A%7D%0A%0A.sig-paren%20%7B%0A%20%20%20%20font-size%3A%20larger%3B%0A%7D%0A%0A.versionmodified%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A.system-message%20%7B%0A%20%20%20%20background-color%3A%20%23fda%3B%0A%20%20%20%20padding%3A%205px%3B%0A%20%20%20%20border%3A%203px%20solid%20red%3B%0A%7D%0A%0A/%2A%20--%20footnotes%20and%20citations%20-----------------------------------------------%20%2A/%0A%0A/%2A%20--%20for%20html4%20--%20%2A/%0A.footnote%3Atarget%20%20%7B%0A%20%20%20%20background-color%3A%20%23dddddd%3B%0A%7D%0A%0A/%2A%20--%20for%20html5%20--%20%2A/%0A%0Adl.footnote.superscript%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%201em%3B%0A%7D%0A%0Adl.footnote.brackets%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%202em%3B%0A%7D%0A%0Adl%20%3E%20dt.label%20%7B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0Aa.footnote-reference.brackets%3Abefore%2C%0Adt.label%20%3E%20span.brackets%3Abefore%20%7B%0A%20%20%20%20content%3A%20%22%5B%22%3B%0A%7D%0A%0Aa.footnote-reference.brackets%3Aafter%2C%0Adt.label%20%3E%20span.brackets%3Aafter%20%7B%0A%20%20%20%20content%3A%20%22%5D%22%3B%0A%7D%0A%0Aa.footnote-reference.superscript%2C%0Adl.footnote.superscript%20%3E%20dt.label%20%7B%0A%20%20%20%20vertical-align%3A%20super%3B%0A%20%20%20%20font-size%3A%20smaller%3B%0A%7D%0A%0Adt.label%20%3E%20span.fn-backref%20%7B%0A%20%20%20%20margin-left%3A%200.2em%3B%0A%7D%0A%0Adt.label%20%3E%20span.fn-backref%20%3E%20a%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A/%2A%20--%20line%20blocks%20-----------------------------------------------------------%20%2A/%0A%0A.line-block%20%7B%0A%20%20%20%20display%3A%20block%3B%0A%20%20%20%20margin-top%3A%201em%3B%0A%20%20%20%20margin-bottom%3A%201em%3B%0A%7D%0A%0A.line-block%20.line-block%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%20%20%20%20margin-left%3A%201.5em%3B%0A%7D%0A%0A.guilabel%2C%20.menuselection%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A.accelerator%20%7B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0A.classifier%20%7B%0A%20%20%20%20font-style%3A%20oblique%3B%0A%7D%0A%0Aabbr%2C%20acronym%20%7B%0A%20%20%20%20border-bottom%3A%20dotted%201px%3B%0A%20%20%20%20cursor%3A%20help%3B%0A%7D%0A%0A/%2A%20--%20code%20displays%20---------------------------------------------------------%20%2A/%0A%0Apre%20%7B%0A%20%20%20%20font-family%3A%20monospace%3B%0A%20%20%20%20overflow%3A%20auto%3B%0A%20%20%20%20overflow-y%3A%20hidden%3B%0A%7D%0A%0Atd.linenos%20pre%20%7B%0A%20%20%20%20padding%3A%205px%200px%3B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20color%3A%20%23aaa%3B%0A%7D%0A%0Atable.highlighttable%20%7B%0A%20%20%20%20margin-left%3A%200.5em%3B%0A%7D%0A%0Atable.highlighttable%20td%20%7B%0A%20%20%20%20padding%3A%200%200.5em%200%200.5em%3B%0A%7D%0A%0Acode%20%7B%0A%20%20%20%20font-family%3A%20monospace%3B%0A%7D%0A%0Adiv.code-block-caption%20span.caption-number%20%7B%0A%20%20%20%20padding%3A%200.1em%200.3em%3B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adiv.code-block-caption%20span.caption-text%20%7B%0A%7D%0A%0Adiv.literal-block-wrapper%20%7B%0A%20%20%20%20padding%3A%201em%201em%200%3B%0A%7D%0A%0Adiv.literal-block-wrapper%20div.highlight%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0Acode.descname%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20font-size%3A%201.2em%3B%0A%7D%0A%0Acode.descclassname%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%7D%0A%0Acode.xref%2C%20a%20code%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Ah1%20code%2C%20h2%20code%2C%20h3%20code%2C%20h4%20code%2C%20h5%20code%2C%20h6%20code%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%7D%0A%0A/%2A%20--%20math%20display%20----------------------------------------------------------%20%2A/%0A%0Aimg.math%20%7B%0A%20%20%20%20vertical-align%3A%20middle%3B%0A%7D%0A%0Adiv.body%20div.math%20p%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%7D%0A%0Aspan.eqno%20%7B%0A%20%20%20%20float%3A%20right%3B%0A%7D%0A%0A/%2A%20--%20special%20divs%20%20---------------------------------------------------------%20%2A/%0A%0Adiv.quotebar%20%7B%0A%20%20%20%20background-color%3A%20%23e3eff1%3B%0A%20%20%20%20max-width%3A%20250px%3B%0A%20%20%20%20float%3A%20right%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20padding%3A%207px%207px%3B%0A%20%20%20%20border%3A%201px%20solid%20%23ccc%3B%0A%7D%0Adiv.footer%20%7B%0A%20%20%20%20background-color%3A%20%23e3eff1%3B%0A%20%20%20%20padding%3A%203px%208px%203px%200%3B%0A%20%20%20%20clear%3A%20both%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%2080%25%3B%0A%20%20%20%20text-align%3A%20right%3B%0A%7D%0A%0Adiv.footer%20a%20%7B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0A/%2A%20--%20link-target%20-----------------------------------------------------------%20%2A/%0A%0A.link-target%20%7B%0A%20%20%20%20font-size%3A%2080%25%3B%0A%7D%0A%0Atable%20.link-target%20%7B%0A%20%20%20%20/%2A%20Do%20not%20show%20links%20in%20tables%2C%20there%20is%20not%20enough%20space%20%2A/%0A%20%20%20%20display%3A%20none%3B%0A%7D%0A%0A/%2A%20--%20font-face%20-------------------------------------------------------------%20%2A/%0A%0A/%2A%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Regular.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20oblique%2C%20italic%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Italic.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Bold.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20oblique%2C%20italic%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-BoldItalic.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%2A/" rel="stylesheet" type="text/css"/><!--URL:_static/epub.css-->
-<script data-url_root="./" id="documentation_options" src="data:application/javascript,var%20DOCUMENTATION_OPTIONS%20%3D%20%7B%0A%20%20%20%20URL_ROOT%3A%20document.getElementById%28%22documentation_options%22%29.getAttribute%28%27data-url_root%27%29%2C%0A%20%20%20%20VERSION%3A%20%270%27%2C%0A%20%20%20%20LANGUAGE%3A%20%27en%27%2C%0A%20%20%20%20COLLAPSE_INDEX%3A%20false%2C%0A%20%20%20%20BUILDER%3A%20%27html%27%2C%0A%20%20%20%20FILE_SUFFIX%3A%20%27.html%27%2C%0A%20%20%20%20LINK_SUFFIX%3A%20%27.html%27%2C%0A%20%20%20%20HAS_SOURCE%3A%20true%2C%0A%20%20%20%20SOURCELINK_SUFFIX%3A%20%27.txt%27%2C%0A%20%20%20%20NAVIGATION_WITH_KEYS%3A%20false%0A%7D%3B"></script><!--URL:_static/documentation_options.js-->
-<script src="data:application/javascript,/%2A%21%0A%20%2A%20jQuery%20JavaScript%20Library%20v3.5.1%0A%20%2A%20https%3A//jquery.com/%0A%20%2A%0A%20%2A%20Includes%20Sizzle.js%0A%20%2A%20https%3A//sizzlejs.com/%0A%20%2A%0A%20%2A%20Copyright%20JS%20Foundation%20and%20other%20contributors%0A%20%2A%20Released%20under%20the%20MIT%20license%0A%20%2A%20https%3A//jquery.org/license%0A%20%2A/%0A%28%20function%28%20global%2C%20factory%20%29%20%7B%0A%0A%09%22use%20strict%22%3B%0A%0A%09if%20%28%20typeof%20module%20%3D%3D%3D%20%22object%22%20%26%26%20typeof%20module.exports%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20For%20CommonJS%20and%20CommonJS-like%20environments%20where%20a%20proper%20%60window%60%0A%09%09//%20is%20present%2C%20execute%20the%20factory%20and%20get%20jQuery.%0A%09%09//%20For%20environments%20that%20do%20not%20have%20a%20%60window%60%20with%20a%20%60document%60%0A%09%09//%20%28such%20as%20Node.js%29%2C%20expose%20a%20factory%20as%20module.exports.%0A%09%09//%20This%20accentuates%20the%20need%20for%20the%20creation%20of%20a%20real%20%60window%60.%0A%09%09//%20e.g.%20var%20jQuery%20%3D%20require%28%22jquery%22%29%28window%29%3B%0A%09%09//%20See%20ticket%20%2314549%20for%20more%20info.%0A%09%09module.exports%20%3D%20global.document%20%3F%0A%09%09%09factory%28%20global%2C%20true%20%29%20%3A%0A%09%09%09function%28%20w%20%29%20%7B%0A%09%09%09%09if%20%28%20%21w.document%20%29%20%7B%0A%09%09%09%09%09throw%20new%20Error%28%20%22jQuery%20requires%20a%20window%20with%20a%20document%22%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20factory%28%20w%20%29%3B%0A%09%09%09%7D%3B%0A%09%7D%20else%20%7B%0A%09%09factory%28%20global%20%29%3B%0A%09%7D%0A%0A//%20Pass%20this%20if%20window%20is%20not%20defined%20yet%0A%7D%20%29%28%20typeof%20window%20%21%3D%3D%20%22undefined%22%20%3F%20window%20%3A%20this%2C%20function%28%20window%2C%20noGlobal%20%29%20%7B%0A%0A//%20Edge%20%3C%3D%2012%20-%2013%2B%2C%20Firefox%20%3C%3D18%20-%2045%2B%2C%20IE%2010%20-%2011%2C%20Safari%205.1%20-%209%2B%2C%20iOS%206%20-%209.1%0A//%20throw%20exceptions%20when%20non-strict%20code%20%28e.g.%2C%20ASP.NET%204.5%29%20accesses%20strict%20mode%0A//%20arguments.callee.caller%20%28trac-13335%29.%20But%20as%20of%20jQuery%203.0%20%282016%29%2C%20strict%20mode%20should%20be%20common%0A//%20enough%20that%20all%20such%20attempts%20are%20guarded%20in%20a%20try%20block.%0A%22use%20strict%22%3B%0A%0Avar%20arr%20%3D%20%5B%5D%3B%0A%0Avar%20getProto%20%3D%20Object.getPrototypeOf%3B%0A%0Avar%20slice%20%3D%20arr.slice%3B%0A%0Avar%20flat%20%3D%20arr.flat%20%3F%20function%28%20array%20%29%20%7B%0A%09return%20arr.flat.call%28%20array%20%29%3B%0A%7D%20%3A%20function%28%20array%20%29%20%7B%0A%09return%20arr.concat.apply%28%20%5B%5D%2C%20array%20%29%3B%0A%7D%3B%0A%0A%0Avar%20push%20%3D%20arr.push%3B%0A%0Avar%20indexOf%20%3D%20arr.indexOf%3B%0A%0Avar%20class2type%20%3D%20%7B%7D%3B%0A%0Avar%20toString%20%3D%20class2type.toString%3B%0A%0Avar%20hasOwn%20%3D%20class2type.hasOwnProperty%3B%0A%0Avar%20fnToString%20%3D%20hasOwn.toString%3B%0A%0Avar%20ObjectFunctionString%20%3D%20fnToString.call%28%20Object%20%29%3B%0A%0Avar%20support%20%3D%20%7B%7D%3B%0A%0Avar%20isFunction%20%3D%20function%20isFunction%28%20obj%20%29%20%7B%0A%0A%20%20%20%20%20%20//%20Support%3A%20Chrome%20%3C%3D57%2C%20Firefox%20%3C%3D52%0A%20%20%20%20%20%20//%20In%20some%20browsers%2C%20typeof%20returns%20%22function%22%20for%20HTML%20%3Cobject%3E%20elements%0A%20%20%20%20%20%20//%20%28i.e.%2C%20%60typeof%20document.createElement%28%20%22object%22%20%29%20%3D%3D%3D%20%22function%22%60%29.%0A%20%20%20%20%20%20//%20We%20don%27t%20want%20to%20classify%20%2Aany%2A%20DOM%20node%20as%20a%20function.%0A%20%20%20%20%20%20return%20typeof%20obj%20%3D%3D%3D%20%22function%22%20%26%26%20typeof%20obj.nodeType%20%21%3D%3D%20%22number%22%3B%0A%20%20%7D%3B%0A%0A%0Avar%20isWindow%20%3D%20function%20isWindow%28%20obj%20%29%20%7B%0A%09%09return%20obj%20%21%3D%20null%20%26%26%20obj%20%3D%3D%3D%20obj.window%3B%0A%09%7D%3B%0A%0A%0Avar%20document%20%3D%20window.document%3B%0A%0A%0A%0A%09var%20preservedScriptAttributes%20%3D%20%7B%0A%09%09type%3A%20true%2C%0A%09%09src%3A%20true%2C%0A%09%09nonce%3A%20true%2C%0A%09%09noModule%3A%20true%0A%09%7D%3B%0A%0A%09function%20DOMEval%28%20code%2C%20node%2C%20doc%20%29%20%7B%0A%09%09doc%20%3D%20doc%20%7C%7C%20document%3B%0A%0A%09%09var%20i%2C%20val%2C%0A%09%09%09script%20%3D%20doc.createElement%28%20%22script%22%20%29%3B%0A%0A%09%09script.text%20%3D%20code%3B%0A%09%09if%20%28%20node%20%29%20%7B%0A%09%09%09for%20%28%20i%20in%20preservedScriptAttributes%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Firefox%2064%2B%2C%20Edge%2018%2B%0A%09%09%09%09//%20Some%20browsers%20don%27t%20support%20the%20%22nonce%22%20property%20on%20scripts.%0A%09%09%09%09//%20On%20the%20other%20hand%2C%20just%20using%20%60getAttribute%60%20is%20not%20enough%20as%0A%09%09%09%09//%20the%20%60nonce%60%20attribute%20is%20reset%20to%20an%20empty%20string%20whenever%20it%0A%09%09%09%09//%20becomes%20browsing-context%20connected.%0A%09%09%09%09//%20See%20https%3A//github.com/whatwg/html/issues/2369%0A%09%09%09%09//%20See%20https%3A//html.spec.whatwg.org/%23nonce-attributes%0A%09%09%09%09//%20The%20%60node.getAttribute%60%20check%20was%20added%20for%20the%20sake%20of%0A%09%09%09%09//%20%60jQuery.globalEval%60%20so%20that%20it%20can%20fake%20a%20nonce-containing%20node%0A%09%09%09%09//%20via%20an%20object.%0A%09%09%09%09val%20%3D%20node%5B%20i%20%5D%20%7C%7C%20node.getAttribute%20%26%26%20node.getAttribute%28%20i%20%29%3B%0A%09%09%09%09if%20%28%20val%20%29%20%7B%0A%09%09%09%09%09script.setAttribute%28%20i%2C%20val%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09doc.head.appendChild%28%20script%20%29.parentNode.removeChild%28%20script%20%29%3B%0A%09%7D%0A%0A%0Afunction%20toType%28%20obj%20%29%20%7B%0A%09if%20%28%20obj%20%3D%3D%20null%20%29%20%7B%0A%09%09return%20obj%20%2B%20%22%22%3B%0A%09%7D%0A%0A%09//%20Support%3A%20Android%20%3C%3D2.3%20only%20%28functionish%20RegExp%29%0A%09return%20typeof%20obj%20%3D%3D%3D%20%22object%22%20%7C%7C%20typeof%20obj%20%3D%3D%3D%20%22function%22%20%3F%0A%09%09class2type%5B%20toString.call%28%20obj%20%29%20%5D%20%7C%7C%20%22object%22%20%3A%0A%09%09typeof%20obj%3B%0A%7D%0A/%2A%20global%20Symbol%20%2A/%0A//%20Defining%20this%20global%20in%20.eslintrc.json%20would%20create%20a%20danger%20of%20using%20the%20global%0A//%20unguarded%20in%20another%20place%2C%20it%20seems%20safer%20to%20define%20global%20only%20for%20this%20module%0A%0A%0A%0Avar%0A%09version%20%3D%20%223.5.1%22%2C%0A%0A%09//%20Define%20a%20local%20copy%20of%20jQuery%0A%09jQuery%20%3D%20function%28%20selector%2C%20context%20%29%20%7B%0A%0A%09%09//%20The%20jQuery%20object%20is%20actually%20just%20the%20init%20constructor%20%27enhanced%27%0A%09%09//%20Need%20init%20if%20jQuery%20is%20called%20%28just%20allow%20error%20to%20be%20thrown%20if%20not%20included%29%0A%09%09return%20new%20jQuery.fn.init%28%20selector%2C%20context%20%29%3B%0A%09%7D%3B%0A%0AjQuery.fn%20%3D%20jQuery.prototype%20%3D%20%7B%0A%0A%09//%20The%20current%20version%20of%20jQuery%20being%20used%0A%09jquery%3A%20version%2C%0A%0A%09constructor%3A%20jQuery%2C%0A%0A%09//%20The%20default%20length%20of%20a%20jQuery%20object%20is%200%0A%09length%3A%200%2C%0A%0A%09toArray%3A%20function%28%29%20%7B%0A%09%09return%20slice.call%28%20this%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Get%20the%20Nth%20element%20in%20the%20matched%20element%20set%20OR%0A%09//%20Get%20the%20whole%20matched%20element%20set%20as%20a%20clean%20array%0A%09get%3A%20function%28%20num%20%29%20%7B%0A%0A%09%09//%20Return%20all%20the%20elements%20in%20a%20clean%20array%0A%09%09if%20%28%20num%20%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20slice.call%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20just%20the%20one%20element%20from%20the%20set%0A%09%09return%20num%20%3C%200%20%3F%20this%5B%20num%20%2B%20this.length%20%5D%20%3A%20this%5B%20num%20%5D%3B%0A%09%7D%2C%0A%0A%09//%20Take%20an%20array%20of%20elements%20and%20push%20it%20onto%20the%20stack%0A%09//%20%28returning%20the%20new%20matched%20element%20set%29%0A%09pushStack%3A%20function%28%20elems%20%29%20%7B%0A%0A%09%09//%20Build%20a%20new%20jQuery%20matched%20element%20set%0A%09%09var%20ret%20%3D%20jQuery.merge%28%20this.constructor%28%29%2C%20elems%20%29%3B%0A%0A%09%09//%20Add%20the%20old%20object%20onto%20the%20stack%20%28as%20a%20reference%29%0A%09%09ret.prevObject%20%3D%20this%3B%0A%0A%09%09//%20Return%20the%20newly-formed%20element%20set%0A%09%09return%20ret%3B%0A%09%7D%2C%0A%0A%09//%20Execute%20a%20callback%20for%20every%20element%20in%20the%20matched%20set.%0A%09each%3A%20function%28%20callback%20%29%20%7B%0A%09%09return%20jQuery.each%28%20this%2C%20callback%20%29%3B%0A%09%7D%2C%0A%0A%09map%3A%20function%28%20callback%20%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.map%28%20this%2C%20function%28%20elem%2C%20i%20%29%20%7B%0A%09%09%09return%20callback.call%28%20elem%2C%20i%2C%20elem%20%29%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09slice%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20slice.apply%28%20this%2C%20arguments%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09first%3A%20function%28%29%20%7B%0A%09%09return%20this.eq%28%200%20%29%3B%0A%09%7D%2C%0A%0A%09last%3A%20function%28%29%20%7B%0A%09%09return%20this.eq%28%20-1%20%29%3B%0A%09%7D%2C%0A%0A%09even%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.grep%28%20this%2C%20function%28%20_elem%2C%20i%20%29%20%7B%0A%09%09%09return%20%28%20i%20%2B%201%20%29%20%25%202%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09odd%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.grep%28%20this%2C%20function%28%20_elem%2C%20i%20%29%20%7B%0A%09%09%09return%20i%20%25%202%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09eq%3A%20function%28%20i%20%29%20%7B%0A%09%09var%20len%20%3D%20this.length%2C%0A%09%09%09j%20%3D%20%2Bi%20%2B%20%28%20i%20%3C%200%20%3F%20len%20%3A%200%20%29%3B%0A%09%09return%20this.pushStack%28%20j%20%3E%3D%200%20%26%26%20j%20%3C%20len%20%3F%20%5B%20this%5B%20j%20%5D%20%5D%20%3A%20%5B%5D%20%29%3B%0A%09%7D%2C%0A%0A%09end%3A%20function%28%29%20%7B%0A%09%09return%20this.prevObject%20%7C%7C%20this.constructor%28%29%3B%0A%09%7D%2C%0A%0A%09//%20For%20internal%20use%20only.%0A%09//%20Behaves%20like%20an%20Array%27s%20method%2C%20not%20like%20a%20jQuery%20method.%0A%09push%3A%20push%2C%0A%09sort%3A%20arr.sort%2C%0A%09splice%3A%20arr.splice%0A%7D%3B%0A%0AjQuery.extend%20%3D%20jQuery.fn.extend%20%3D%20function%28%29%20%7B%0A%09var%20options%2C%20name%2C%20src%2C%20copy%2C%20copyIsArray%2C%20clone%2C%0A%09%09target%20%3D%20arguments%5B%200%20%5D%20%7C%7C%20%7B%7D%2C%0A%09%09i%20%3D%201%2C%0A%09%09length%20%3D%20arguments.length%2C%0A%09%09deep%20%3D%20false%3B%0A%0A%09//%20Handle%20a%20deep%20copy%20situation%0A%09if%20%28%20typeof%20target%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09deep%20%3D%20target%3B%0A%0A%09%09//%20Skip%20the%20boolean%20and%20the%20target%0A%09%09target%20%3D%20arguments%5B%20i%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09i%2B%2B%3B%0A%09%7D%0A%0A%09//%20Handle%20case%20when%20target%20is%20a%20string%20or%20something%20%28possible%20in%20deep%20copy%29%0A%09if%20%28%20typeof%20target%20%21%3D%3D%20%22object%22%20%26%26%20%21isFunction%28%20target%20%29%20%29%20%7B%0A%09%09target%20%3D%20%7B%7D%3B%0A%09%7D%0A%0A%09//%20Extend%20jQuery%20itself%20if%20only%20one%20argument%20is%20passed%0A%09if%20%28%20i%20%3D%3D%3D%20length%20%29%20%7B%0A%09%09target%20%3D%20this%3B%0A%09%09i--%3B%0A%09%7D%0A%0A%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%0A%09%09//%20Only%20deal%20with%20non-null/undefined%20values%0A%09%09if%20%28%20%28%20options%20%3D%20arguments%5B%20i%20%5D%20%29%20%21%3D%20null%20%29%20%7B%0A%0A%09%09%09//%20Extend%20the%20base%20object%0A%09%09%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09%09%09copy%20%3D%20options%5B%20name%20%5D%3B%0A%0A%09%09%09%09//%20Prevent%20Object.prototype%20pollution%0A%09%09%09%09//%20Prevent%20never-ending%20loop%0A%09%09%09%09if%20%28%20name%20%3D%3D%3D%20%22__proto__%22%20%7C%7C%20target%20%3D%3D%3D%20copy%20%29%20%7B%0A%09%09%09%09%09continue%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Recurse%20if%20we%27re%20merging%20plain%20objects%20or%20arrays%0A%09%09%09%09if%20%28%20deep%20%26%26%20copy%20%26%26%20%28%20jQuery.isPlainObject%28%20copy%20%29%20%7C%7C%0A%09%09%09%09%09%28%20copyIsArray%20%3D%20Array.isArray%28%20copy%20%29%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09src%20%3D%20target%5B%20name%20%5D%3B%0A%0A%09%09%09%09%09//%20Ensure%20proper%20type%20for%20the%20source%20value%0A%09%09%09%09%09if%20%28%20copyIsArray%20%26%26%20%21Array.isArray%28%20src%20%29%20%29%20%7B%0A%09%09%09%09%09%09clone%20%3D%20%5B%5D%3B%0A%09%09%09%09%09%7D%20else%20if%20%28%20%21copyIsArray%20%26%26%20%21jQuery.isPlainObject%28%20src%20%29%20%29%20%7B%0A%09%09%09%09%09%09clone%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09clone%20%3D%20src%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09copyIsArray%20%3D%20false%3B%0A%0A%09%09%09%09%09//%20Never%20move%20original%20objects%2C%20clone%20them%0A%09%09%09%09%09target%5B%20name%20%5D%20%3D%20jQuery.extend%28%20deep%2C%20clone%2C%20copy%20%29%3B%0A%0A%09%09%09%09//%20Don%27t%20bring%20in%20undefined%20values%0A%09%09%09%09%7D%20else%20if%20%28%20copy%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09target%5B%20name%20%5D%20%3D%20copy%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20modified%20object%0A%09return%20target%3B%0A%7D%3B%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Unique%20for%20each%20copy%20of%20jQuery%20on%20the%20page%0A%09expando%3A%20%22jQuery%22%20%2B%20%28%20version%20%2B%20Math.random%28%29%20%29.replace%28%20/%5CD/g%2C%20%22%22%20%29%2C%0A%0A%09//%20Assume%20jQuery%20is%20ready%20without%20the%20ready%20module%0A%09isReady%3A%20true%2C%0A%0A%09error%3A%20function%28%20msg%20%29%20%7B%0A%09%09throw%20new%20Error%28%20msg%20%29%3B%0A%09%7D%2C%0A%0A%09noop%3A%20function%28%29%20%7B%7D%2C%0A%0A%09isPlainObject%3A%20function%28%20obj%20%29%20%7B%0A%09%09var%20proto%2C%20Ctor%3B%0A%0A%09%09//%20Detect%20obvious%20negatives%0A%09%09//%20Use%20toString%20instead%20of%20jQuery.type%20to%20catch%20host%20objects%0A%09%09if%20%28%20%21obj%20%7C%7C%20toString.call%28%20obj%20%29%20%21%3D%3D%20%22%5Bobject%20Object%5D%22%20%29%20%7B%0A%09%09%09return%20false%3B%0A%09%09%7D%0A%0A%09%09proto%20%3D%20getProto%28%20obj%20%29%3B%0A%0A%09%09//%20Objects%20with%20no%20prototype%20%28e.g.%2C%20%60Object.create%28%20null%20%29%60%29%20are%20plain%0A%09%09if%20%28%20%21proto%20%29%20%7B%0A%09%09%09return%20true%3B%0A%09%09%7D%0A%0A%09%09//%20Objects%20with%20prototype%20are%20plain%20iff%20they%20were%20constructed%20by%20a%20global%20Object%20function%0A%09%09Ctor%20%3D%20hasOwn.call%28%20proto%2C%20%22constructor%22%20%29%20%26%26%20proto.constructor%3B%0A%09%09return%20typeof%20Ctor%20%3D%3D%3D%20%22function%22%20%26%26%20fnToString.call%28%20Ctor%20%29%20%3D%3D%3D%20ObjectFunctionString%3B%0A%09%7D%2C%0A%0A%09isEmptyObject%3A%20function%28%20obj%20%29%20%7B%0A%09%09var%20name%3B%0A%0A%09%09for%20%28%20name%20in%20obj%20%29%20%7B%0A%09%09%09return%20false%3B%0A%09%09%7D%0A%09%09return%20true%3B%0A%09%7D%2C%0A%0A%09//%20Evaluates%20a%20script%20in%20a%20provided%20context%3B%20falls%20back%20to%20the%20global%20one%0A%09//%20if%20not%20specified.%0A%09globalEval%3A%20function%28%20code%2C%20options%2C%20doc%20%29%20%7B%0A%09%09DOMEval%28%20code%2C%20%7B%20nonce%3A%20options%20%26%26%20options.nonce%20%7D%2C%20doc%20%29%3B%0A%09%7D%2C%0A%0A%09each%3A%20function%28%20obj%2C%20callback%20%29%20%7B%0A%09%09var%20length%2C%20i%20%3D%200%3B%0A%0A%09%09if%20%28%20isArrayLike%28%20obj%20%29%20%29%20%7B%0A%09%09%09length%20%3D%20obj.length%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20callback.call%28%20obj%5B%20i%20%5D%2C%20i%2C%20obj%5B%20i%20%5D%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28%20i%20in%20obj%20%29%20%7B%0A%09%09%09%09if%20%28%20callback.call%28%20obj%5B%20i%20%5D%2C%20i%2C%20obj%5B%20i%20%5D%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20obj%3B%0A%09%7D%2C%0A%0A%09//%20results%20is%20for%20internal%20usage%20only%0A%09makeArray%3A%20function%28%20arr%2C%20results%20%29%20%7B%0A%09%09var%20ret%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09%09if%20%28%20arr%20%21%3D%20null%20%29%20%7B%0A%09%09%09if%20%28%20isArrayLike%28%20Object%28%20arr%20%29%20%29%20%29%20%7B%0A%09%09%09%09jQuery.merge%28%20ret%2C%0A%09%09%09%09%09typeof%20arr%20%3D%3D%3D%20%22string%22%20%3F%0A%09%09%09%09%09%5B%20arr%20%5D%20%3A%20arr%0A%09%09%09%09%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09push.call%28%20ret%2C%20arr%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20ret%3B%0A%09%7D%2C%0A%0A%09inArray%3A%20function%28%20elem%2C%20arr%2C%20i%20%29%20%7B%0A%09%09return%20arr%20%3D%3D%20null%20%3F%20-1%20%3A%20indexOf.call%28%20arr%2C%20elem%2C%20i%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09merge%3A%20function%28%20first%2C%20second%20%29%20%7B%0A%09%09var%20len%20%3D%20%2Bsecond.length%2C%0A%09%09%09j%20%3D%200%2C%0A%09%09%09i%20%3D%20first.length%3B%0A%0A%09%09for%20%28%20%3B%20j%20%3C%20len%3B%20j%2B%2B%20%29%20%7B%0A%09%09%09first%5B%20i%2B%2B%20%5D%20%3D%20second%5B%20j%20%5D%3B%0A%09%09%7D%0A%0A%09%09first.length%20%3D%20i%3B%0A%0A%09%09return%20first%3B%0A%09%7D%2C%0A%0A%09grep%3A%20function%28%20elems%2C%20callback%2C%20invert%20%29%20%7B%0A%09%09var%20callbackInverse%2C%0A%09%09%09matches%20%3D%20%5B%5D%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09length%20%3D%20elems.length%2C%0A%09%09%09callbackExpect%20%3D%20%21invert%3B%0A%0A%09%09//%20Go%20through%20the%20array%2C%20only%20saving%20the%20items%0A%09%09//%20that%20pass%20the%20validator%20function%0A%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09callbackInverse%20%3D%20%21callback%28%20elems%5B%20i%20%5D%2C%20i%20%29%3B%0A%09%09%09if%20%28%20callbackInverse%20%21%3D%3D%20callbackExpect%20%29%20%7B%0A%09%09%09%09matches.push%28%20elems%5B%20i%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20matches%3B%0A%09%7D%2C%0A%0A%09//%20arg%20is%20for%20internal%20usage%20only%0A%09map%3A%20function%28%20elems%2C%20callback%2C%20arg%20%29%20%7B%0A%09%09var%20length%2C%20value%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09ret%20%3D%20%5B%5D%3B%0A%0A%09%09//%20Go%20through%20the%20array%2C%20translating%20each%20of%20the%20items%20to%20their%20new%20values%0A%09%09if%20%28%20isArrayLike%28%20elems%20%29%20%29%20%7B%0A%09%09%09length%20%3D%20elems.length%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09value%20%3D%20callback%28%20elems%5B%20i%20%5D%2C%20i%2C%20arg%20%29%3B%0A%0A%09%09%09%09if%20%28%20value%20%21%3D%20null%20%29%20%7B%0A%09%09%09%09%09ret.push%28%20value%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Go%20through%20every%20key%20on%20the%20object%2C%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28%20i%20in%20elems%20%29%20%7B%0A%09%09%09%09value%20%3D%20callback%28%20elems%5B%20i%20%5D%2C%20i%2C%20arg%20%29%3B%0A%0A%09%09%09%09if%20%28%20value%20%21%3D%20null%20%29%20%7B%0A%09%09%09%09%09ret.push%28%20value%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Flatten%20any%20nested%20arrays%0A%09%09return%20flat%28%20ret%20%29%3B%0A%09%7D%2C%0A%0A%09//%20A%20global%20GUID%20counter%20for%20objects%0A%09guid%3A%201%2C%0A%0A%09//%20jQuery.support%20is%20not%20used%20in%20Core%20but%20other%20projects%20attach%20their%0A%09//%20properties%20to%20it%20so%20it%20needs%20to%20exist.%0A%09support%3A%20support%0A%7D%20%29%3B%0A%0Aif%20%28%20typeof%20Symbol%20%3D%3D%3D%20%22function%22%20%29%20%7B%0A%09jQuery.fn%5B%20Symbol.iterator%20%5D%20%3D%20arr%5B%20Symbol.iterator%20%5D%3B%0A%7D%0A%0A//%20Populate%20the%20class2type%20map%0AjQuery.each%28%20%22Boolean%20Number%20String%20Function%20Array%20Date%20RegExp%20Object%20Error%20Symbol%22.split%28%20%22%20%22%20%29%2C%0Afunction%28%20_i%2C%20name%20%29%20%7B%0A%09class2type%5B%20%22%5Bobject%20%22%20%2B%20name%20%2B%20%22%5D%22%20%5D%20%3D%20name.toLowerCase%28%29%3B%0A%7D%20%29%3B%0A%0Afunction%20isArrayLike%28%20obj%20%29%20%7B%0A%0A%09//%20Support%3A%20real%20iOS%208.2%20only%20%28not%20reproducible%20in%20simulator%29%0A%09//%20%60in%60%20check%20used%20to%20prevent%20JIT%20error%20%28gh-2145%29%0A%09//%20hasOwn%20isn%27t%20used%20here%20due%20to%20false%20negatives%0A%09//%20regarding%20Nodelist%20length%20in%20IE%0A%09var%20length%20%3D%20%21%21obj%20%26%26%20%22length%22%20in%20obj%20%26%26%20obj.length%2C%0A%09%09type%20%3D%20toType%28%20obj%20%29%3B%0A%0A%09if%20%28%20isFunction%28%20obj%20%29%20%7C%7C%20isWindow%28%20obj%20%29%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%0A%0A%09return%20type%20%3D%3D%3D%20%22array%22%20%7C%7C%20length%20%3D%3D%3D%200%20%7C%7C%0A%09%09typeof%20length%20%3D%3D%3D%20%22number%22%20%26%26%20length%20%3E%200%20%26%26%20%28%20length%20-%201%20%29%20in%20obj%3B%0A%7D%0Avar%20Sizzle%20%3D%0A/%2A%21%0A%20%2A%20Sizzle%20CSS%20Selector%20Engine%20v2.3.5%0A%20%2A%20https%3A//sizzlejs.com/%0A%20%2A%0A%20%2A%20Copyright%20JS%20Foundation%20and%20other%20contributors%0A%20%2A%20Released%20under%20the%20MIT%20license%0A%20%2A%20https%3A//js.foundation/%0A%20%2A%0A%20%2A%20Date%3A%202020-03-14%0A%20%2A/%0A%28%20function%28%20window%20%29%20%7B%0Avar%20i%2C%0A%09support%2C%0A%09Expr%2C%0A%09getText%2C%0A%09isXML%2C%0A%09tokenize%2C%0A%09compile%2C%0A%09select%2C%0A%09outermostContext%2C%0A%09sortInput%2C%0A%09hasDuplicate%2C%0A%0A%09//%20Local%20document%20vars%0A%09setDocument%2C%0A%09document%2C%0A%09docElem%2C%0A%09documentIsHTML%2C%0A%09rbuggyQSA%2C%0A%09rbuggyMatches%2C%0A%09matches%2C%0A%09contains%2C%0A%0A%09//%20Instance-specific%20data%0A%09expando%20%3D%20%22sizzle%22%20%2B%201%20%2A%20new%20Date%28%29%2C%0A%09preferredDoc%20%3D%20window.document%2C%0A%09dirruns%20%3D%200%2C%0A%09done%20%3D%200%2C%0A%09classCache%20%3D%20createCache%28%29%2C%0A%09tokenCache%20%3D%20createCache%28%29%2C%0A%09compilerCache%20%3D%20createCache%28%29%2C%0A%09nonnativeSelectorCache%20%3D%20createCache%28%29%2C%0A%09sortOrder%20%3D%20function%28%20a%2C%20b%20%29%20%7B%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%7D%0A%09%09return%200%3B%0A%09%7D%2C%0A%0A%09//%20Instance%20methods%0A%09hasOwn%20%3D%20%28%20%7B%7D%20%29.hasOwnProperty%2C%0A%09arr%20%3D%20%5B%5D%2C%0A%09pop%20%3D%20arr.pop%2C%0A%09pushNative%20%3D%20arr.push%2C%0A%09push%20%3D%20arr.push%2C%0A%09slice%20%3D%20arr.slice%2C%0A%0A%09//%20Use%20a%20stripped-down%20indexOf%20as%20it%27s%20faster%20than%20native%0A%09//%20https%3A//jsperf.com/thor-indexof-vs-for/5%0A%09indexOf%20%3D%20function%28%20list%2C%20elem%20%29%20%7B%0A%09%09var%20i%20%3D%200%2C%0A%09%09%09len%20%3D%20list.length%3B%0A%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20list%5B%20i%20%5D%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09return%20i%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20-1%3B%0A%09%7D%2C%0A%0A%09booleans%20%3D%20%22checked%7Cselected%7Casync%7Cautofocus%7Cautoplay%7Ccontrols%7Cdefer%7Cdisabled%7Chidden%7C%22%20%2B%0A%09%09%22ismap%7Cloop%7Cmultiple%7Copen%7Creadonly%7Crequired%7Cscoped%22%2C%0A%0A%09//%20Regular%20expressions%0A%0A%09//%20http%3A//www.w3.org/TR/css3-selectors/%23whitespace%0A%09whitespace%20%3D%20%22%5B%5C%5Cx20%5C%5Ct%5C%5Cr%5C%5Cn%5C%5Cf%5D%22%2C%0A%0A%09//%20https%3A//www.w3.org/TR/css-syntax-3/%23ident-token-diagram%0A%09identifier%20%3D%20%22%28%3F%3A%5C%5C%5C%5C%5B%5C%5Cda-fA-F%5D%7B1%2C6%7D%22%20%2B%20whitespace%20%2B%0A%09%09%22%3F%7C%5C%5C%5C%5C%5B%5E%5C%5Cr%5C%5Cn%5C%5Cf%5D%7C%5B%5C%5Cw-%5D%7C%5B%5E%5C0-%5C%5Cx7f%5D%29%2B%22%2C%0A%0A%09//%20Attribute%20selectors%3A%20http%3A//www.w3.org/TR/selectors/%23attribute-selectors%0A%09attributes%20%3D%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2A%28%22%20%2B%20identifier%20%2B%20%22%29%28%3F%3A%22%20%2B%20whitespace%20%2B%0A%0A%09%09//%20Operator%20%28capture%202%29%0A%09%09%22%2A%28%5B%2A%5E%24%7C%21~%5D%3F%3D%29%22%20%2B%20whitespace%20%2B%0A%0A%09%09//%20%22Attribute%20values%20must%20be%20CSS%20identifiers%20%5Bcapture%205%5D%0A%09%09//%20or%20strings%20%5Bcapture%203%20or%20capture%204%5D%22%0A%09%09%22%2A%28%3F%3A%27%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%27%5D%29%2A%29%27%7C%5C%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%5C%22%5D%29%2A%29%5C%22%7C%28%22%20%2B%20identifier%20%2B%20%22%29%29%7C%29%22%20%2B%0A%09%09whitespace%20%2B%20%22%2A%5C%5C%5D%22%2C%0A%0A%09pseudos%20%3D%20%22%3A%28%22%20%2B%20identifier%20%2B%20%22%29%28%3F%3A%5C%5C%28%28%22%20%2B%0A%0A%09%09//%20To%20reduce%20the%20number%20of%20selectors%20needing%20tokenize%20in%20the%20preFilter%2C%20prefer%20arguments%3A%0A%09%09//%201.%20quoted%20%28capture%203%3B%20capture%204%20or%20capture%205%29%0A%09%09%22%28%27%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%27%5D%29%2A%29%27%7C%5C%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%5C%22%5D%29%2A%29%5C%22%29%7C%22%20%2B%0A%0A%09%09//%202.%20simple%20%28capture%206%29%0A%09%09%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%28%29%5B%5C%5C%5D%5D%7C%22%20%2B%20attributes%20%2B%20%22%29%2A%29%7C%22%20%2B%0A%0A%09%09//%203.%20anything%20else%20%28capture%202%29%0A%09%09%22.%2A%22%20%2B%0A%09%09%22%29%5C%5C%29%7C%29%22%2C%0A%0A%09//%20Leading%20and%20non-escaped%20trailing%20whitespace%2C%20capturing%20some%20non-whitespace%20characters%20preceding%20the%20latter%0A%09rwhitespace%20%3D%20new%20RegExp%28%20whitespace%20%2B%20%22%2B%22%2C%20%22g%22%20%29%2C%0A%09rtrim%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2B%7C%28%28%3F%3A%5E%7C%5B%5E%5C%5C%5C%5C%5D%29%28%3F%3A%5C%5C%5C%5C.%29%2A%29%22%20%2B%0A%09%09whitespace%20%2B%20%22%2B%24%22%2C%20%22g%22%20%29%2C%0A%0A%09rcomma%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2A%2C%22%20%2B%20whitespace%20%2B%20%22%2A%22%20%29%2C%0A%09rcombinators%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2A%28%5B%3E%2B~%5D%7C%22%20%2B%20whitespace%20%2B%20%22%29%22%20%2B%20whitespace%20%2B%0A%09%09%22%2A%22%20%29%2C%0A%09rdescend%20%3D%20new%20RegExp%28%20whitespace%20%2B%20%22%7C%3E%22%20%29%2C%0A%0A%09rpseudo%20%3D%20new%20RegExp%28%20pseudos%20%29%2C%0A%09ridentifier%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20identifier%20%2B%20%22%24%22%20%29%2C%0A%0A%09matchExpr%20%3D%20%7B%0A%09%09%22ID%22%3A%20new%20RegExp%28%20%22%5E%23%28%22%20%2B%20identifier%20%2B%20%22%29%22%20%29%2C%0A%09%09%22CLASS%22%3A%20new%20RegExp%28%20%22%5E%5C%5C.%28%22%20%2B%20identifier%20%2B%20%22%29%22%20%29%2C%0A%09%09%22TAG%22%3A%20new%20RegExp%28%20%22%5E%28%22%20%2B%20identifier%20%2B%20%22%7C%5B%2A%5D%29%22%20%29%2C%0A%09%09%22ATTR%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20attributes%20%29%2C%0A%09%09%22PSEUDO%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20pseudos%20%29%2C%0A%09%09%22CHILD%22%3A%20new%20RegExp%28%20%22%5E%3A%28only%7Cfirst%7Clast%7Cnth%7Cnth-last%29-%28child%7Cof-type%29%28%3F%3A%5C%5C%28%22%20%2B%0A%09%09%09whitespace%20%2B%20%22%2A%28even%7Codd%7C%28%28%5B%2B-%5D%7C%29%28%5C%5Cd%2A%29n%7C%29%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3A%28%5B%2B-%5D%7C%29%22%20%2B%0A%09%09%09whitespace%20%2B%20%22%2A%28%5C%5Cd%2B%29%7C%29%29%22%20%2B%20whitespace%20%2B%20%22%2A%5C%5C%29%7C%29%22%2C%20%22i%22%20%29%2C%0A%09%09%22bool%22%3A%20new%20RegExp%28%20%22%5E%28%3F%3A%22%20%2B%20booleans%20%2B%20%22%29%24%22%2C%20%22i%22%20%29%2C%0A%0A%09%09//%20For%20use%20in%20libraries%20implementing%20.is%28%29%0A%09%09//%20We%20use%20this%20for%20POS%20matching%20in%20%60select%60%0A%09%09%22needsContext%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%0A%09%09%09%22%2A%5B%3E%2B~%5D%7C%3A%28even%7Codd%7Ceq%7Cgt%7Clt%7Cnth%7Cfirst%7Clast%29%28%3F%3A%5C%5C%28%22%20%2B%20whitespace%20%2B%0A%09%09%09%22%2A%28%28%3F%3A-%5C%5Cd%29%3F%5C%5Cd%2A%29%22%20%2B%20whitespace%20%2B%20%22%2A%5C%5C%29%7C%29%28%3F%3D%5B%5E-%5D%7C%24%29%22%2C%20%22i%22%20%29%0A%09%7D%2C%0A%0A%09rhtml%20%3D%20/HTML%24/i%2C%0A%09rinputs%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Cbutton%29%24/i%2C%0A%09rheader%20%3D%20/%5Eh%5Cd%24/i%2C%0A%0A%09rnative%20%3D%20/%5E%5B%5E%7B%5D%2B%5C%7B%5Cs%2A%5C%5Bnative%20%5Cw/%2C%0A%0A%09//%20Easily-parseable/retrievable%20ID%20or%20TAG%20or%20CLASS%20selectors%0A%09rquickExpr%20%3D%20/%5E%28%3F%3A%23%28%5B%5Cw-%5D%2B%29%7C%28%5Cw%2B%29%7C%5C.%28%5B%5Cw-%5D%2B%29%29%24/%2C%0A%0A%09rsibling%20%3D%20/%5B%2B~%5D/%2C%0A%0A%09//%20CSS%20escapes%0A%09//%20http%3A//www.w3.org/TR/CSS21/syndata.html%23escaped-characters%0A%09runescape%20%3D%20new%20RegExp%28%20%22%5C%5C%5C%5C%5B%5C%5Cda-fA-F%5D%7B1%2C6%7D%22%20%2B%20whitespace%20%2B%20%22%3F%7C%5C%5C%5C%5C%28%5B%5E%5C%5Cr%5C%5Cn%5C%5Cf%5D%29%22%2C%20%22g%22%20%29%2C%0A%09funescape%20%3D%20function%28%20escape%2C%20nonHex%20%29%20%7B%0A%09%09var%20high%20%3D%20%220x%22%20%2B%20escape.slice%28%201%20%29%20-%200x10000%3B%0A%0A%09%09return%20nonHex%20%3F%0A%0A%09%09%09//%20Strip%20the%20backslash%20prefix%20from%20a%20non-hex%20escape%20sequence%0A%09%09%09nonHex%20%3A%0A%0A%09%09%09//%20Replace%20a%20hexadecimal%20escape%20sequence%20with%20the%20encoded%20Unicode%20code%20point%0A%09%09%09//%20Support%3A%20IE%20%3C%3D11%2B%0A%09%09%09//%20For%20values%20outside%20the%20Basic%20Multilingual%20Plane%20%28BMP%29%2C%20manually%20construct%20a%0A%09%09%09//%20surrogate%20pair%0A%09%09%09high%20%3C%200%20%3F%0A%09%09%09%09String.fromCharCode%28%20high%20%2B%200x10000%20%29%20%3A%0A%09%09%09%09String.fromCharCode%28%20high%20%3E%3E%2010%20%7C%200xD800%2C%20high%20%26%200x3FF%20%7C%200xDC00%20%29%3B%0A%09%7D%2C%0A%0A%09//%20CSS%20string/identifier%20serialization%0A%09//%20https%3A//drafts.csswg.org/cssom/%23common-serializing-idioms%0A%09rcssescape%20%3D%20/%28%5B%5C0-%5Cx1f%5Cx7f%5D%7C%5E-%3F%5Cd%29%7C%5E-%24%7C%5B%5E%5C0-%5Cx1f%5Cx7f-%5CuFFFF%5Cw-%5D/g%2C%0A%09fcssescape%20%3D%20function%28%20ch%2C%20asCodePoint%20%29%20%7B%0A%09%09if%20%28%20asCodePoint%20%29%20%7B%0A%0A%09%09%09//%20U%2B0000%20NULL%20becomes%20U%2BFFFD%20REPLACEMENT%20CHARACTER%0A%09%09%09if%20%28%20ch%20%3D%3D%3D%20%22%5C0%22%20%29%20%7B%0A%09%09%09%09return%20%22%5CuFFFD%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Control%20characters%20and%20%28dependent%20upon%20position%29%20numbers%20get%20escaped%20as%20code%20points%0A%09%09%09return%20ch.slice%28%200%2C%20-1%20%29%20%2B%20%22%5C%5C%22%20%2B%0A%09%09%09%09ch.charCodeAt%28%20ch.length%20-%201%20%29.toString%28%2016%20%29%20%2B%20%22%20%22%3B%0A%09%09%7D%0A%0A%09%09//%20Other%20potentially-special%20ASCII%20characters%20get%20backslash-escaped%0A%09%09return%20%22%5C%5C%22%20%2B%20ch%3B%0A%09%7D%2C%0A%0A%09//%20Used%20for%20iframes%0A%09//%20See%20setDocument%28%29%0A%09//%20Removing%20the%20function%20wrapper%20causes%20a%20%22Permission%20Denied%22%0A%09//%20error%20in%20IE%0A%09unloadHandler%20%3D%20function%28%29%20%7B%0A%09%09setDocument%28%29%3B%0A%09%7D%2C%0A%0A%09inDisabledFieldset%20%3D%20addCombinator%28%0A%09%09function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20true%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22fieldset%22%3B%0A%09%09%7D%2C%0A%09%09%7B%20dir%3A%20%22parentNode%22%2C%20next%3A%20%22legend%22%20%7D%0A%09%29%3B%0A%0A//%20Optimize%20for%20push.apply%28%20_%2C%20NodeList%20%29%0Atry%20%7B%0A%09push.apply%28%0A%09%09%28%20arr%20%3D%20slice.call%28%20preferredDoc.childNodes%20%29%20%29%2C%0A%09%09preferredDoc.childNodes%0A%09%29%3B%0A%0A%09//%20Support%3A%20Android%3C4.0%0A%09//%20Detect%20silently%20failing%20push.apply%0A%09//%20eslint-disable-next-line%20no-unused-expressions%0A%09arr%5B%20preferredDoc.childNodes.length%20%5D.nodeType%3B%0A%7D%20catch%20%28%20e%20%29%20%7B%0A%09push%20%3D%20%7B%20apply%3A%20arr.length%20%3F%0A%0A%09%09//%20Leverage%20slice%20if%20possible%0A%09%09function%28%20target%2C%20els%20%29%20%7B%0A%09%09%09pushNative.apply%28%20target%2C%20slice.call%28%20els%20%29%20%29%3B%0A%09%09%7D%20%3A%0A%0A%09%09//%20Support%3A%20IE%3C9%0A%09%09//%20Otherwise%20append%20directly%0A%09%09function%28%20target%2C%20els%20%29%20%7B%0A%09%09%09var%20j%20%3D%20target.length%2C%0A%09%09%09%09i%20%3D%200%3B%0A%0A%09%09%09//%20Can%27t%20trust%20NodeList.length%0A%09%09%09while%20%28%20%28%20target%5B%20j%2B%2B%20%5D%20%3D%20els%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%7D%0A%09%09%09target.length%20%3D%20j%20-%201%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0Afunction%20Sizzle%28%20selector%2C%20context%2C%20results%2C%20seed%20%29%20%7B%0A%09var%20m%2C%20i%2C%20elem%2C%20nid%2C%20match%2C%20groups%2C%20newSelector%2C%0A%09%09newContext%20%3D%20context%20%26%26%20context.ownerDocument%2C%0A%0A%09%09//%20nodeType%20defaults%20to%209%2C%20since%20context%20defaults%20to%20document%0A%09%09nodeType%20%3D%20context%20%3F%20context.nodeType%20%3A%209%3B%0A%0A%09results%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09//%20Return%20early%20from%20calls%20with%20invalid%20selector%20or%20context%0A%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%7C%7C%20%21selector%20%7C%7C%0A%09%09nodeType%20%21%3D%3D%201%20%26%26%20nodeType%20%21%3D%3D%209%20%26%26%20nodeType%20%21%3D%3D%2011%20%29%20%7B%0A%0A%09%09return%20results%3B%0A%09%7D%0A%0A%09//%20Try%20to%20shortcut%20find%20operations%20%28as%20opposed%20to%20filters%29%20in%20HTML%20documents%0A%09if%20%28%20%21seed%20%29%20%7B%0A%09%09setDocument%28%20context%20%29%3B%0A%09%09context%20%3D%20context%20%7C%7C%20document%3B%0A%0A%09%09if%20%28%20documentIsHTML%20%29%20%7B%0A%0A%09%09%09//%20If%20the%20selector%20is%20sufficiently%20simple%2C%20try%20using%20a%20%22get%2ABy%2A%22%20DOM%20method%0A%09%09%09//%20%28excepting%20DocumentFragment%20context%2C%20where%20the%20methods%20don%27t%20exist%29%0A%09%09%09if%20%28%20nodeType%20%21%3D%3D%2011%20%26%26%20%28%20match%20%3D%20rquickExpr.exec%28%20selector%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20ID%20selector%0A%09%09%09%09if%20%28%20%28%20m%20%3D%20match%5B%201%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Document%20context%0A%09%09%09%09%09if%20%28%20nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20context.getElementById%28%20m%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20IE%2C%20Opera%2C%20Webkit%0A%09%09%09%09%09%09%09//%20TODO%3A%20identify%20versions%0A%09%09%09%09%09%09%09//%20getElementById%20can%20match%20elements%20by%20name%20instead%20of%20ID%0A%09%09%09%09%09%09%09if%20%28%20elem.id%20%3D%3D%3D%20m%20%29%20%7B%0A%09%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Element%20context%0A%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%2C%20Opera%2C%20Webkit%0A%09%09%09%09%09%09//%20TODO%3A%20identify%20versions%0A%09%09%09%09%09%09//%20getElementById%20can%20match%20elements%20by%20name%20instead%20of%20ID%0A%09%09%09%09%09%09if%20%28%20newContext%20%26%26%20%28%20elem%20%3D%20newContext.getElementById%28%20m%20%29%20%29%20%26%26%0A%09%09%09%09%09%09%09contains%28%20context%2C%20elem%20%29%20%26%26%0A%09%09%09%09%09%09%09elem.id%20%3D%3D%3D%20m%20%29%20%7B%0A%0A%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09//%20Type%20selector%0A%09%09%09%09%7D%20else%20if%20%28%20match%5B%202%20%5D%20%29%20%7B%0A%09%09%09%09%09push.apply%28%20results%2C%20context.getElementsByTagName%28%20selector%20%29%20%29%3B%0A%09%09%09%09%09return%20results%3B%0A%0A%09%09%09%09//%20Class%20selector%0A%09%09%09%09%7D%20else%20if%20%28%20%28%20m%20%3D%20match%5B%203%20%5D%20%29%20%26%26%20support.getElementsByClassName%20%26%26%0A%09%09%09%09%09context.getElementsByClassName%20%29%20%7B%0A%0A%09%09%09%09%09push.apply%28%20results%2C%20context.getElementsByClassName%28%20m%20%29%20%29%3B%0A%09%09%09%09%09return%20results%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Take%20advantage%20of%20querySelectorAll%0A%09%09%09if%20%28%20support.qsa%20%26%26%0A%09%09%09%09%21nonnativeSelectorCache%5B%20selector%20%2B%20%22%20%22%20%5D%20%26%26%0A%09%09%09%09%28%20%21rbuggyQSA%20%7C%7C%20%21rbuggyQSA.test%28%20selector%20%29%20%29%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20IE%208%20only%0A%09%09%09%09//%20Exclude%20object%20elements%0A%09%09%09%09%28%20nodeType%20%21%3D%3D%201%20%7C%7C%20context.nodeName.toLowerCase%28%29%20%21%3D%3D%20%22object%22%20%29%20%29%20%7B%0A%0A%09%09%09%09newSelector%20%3D%20selector%3B%0A%09%09%09%09newContext%20%3D%20context%3B%0A%0A%09%09%09%09//%20qSA%20considers%20elements%20outside%20a%20scoping%20root%20when%20evaluating%20child%20or%0A%09%09%09%09//%20descendant%20combinators%2C%20which%20is%20not%20what%20we%20want.%0A%09%09%09%09//%20In%20such%20cases%2C%20we%20work%20around%20the%20behavior%20by%20prefixing%20every%20selector%20in%20the%0A%09%09%09%09//%20list%20with%20an%20ID%20selector%20referencing%20the%20scope%20context.%0A%09%09%09%09//%20The%20technique%20has%20to%20be%20used%20as%20well%20when%20a%20leading%20combinator%20is%20used%0A%09%09%09%09//%20as%20such%20selectors%20are%20not%20recognized%20by%20querySelectorAll.%0A%09%09%09%09//%20Thanks%20to%20Andrew%20Dupont%20for%20this%20technique.%0A%09%09%09%09if%20%28%20nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%09%28%20rdescend.test%28%20selector%20%29%20%7C%7C%20rcombinators.test%28%20selector%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Expand%20context%20for%20sibling%20selectors%0A%09%09%09%09%09newContext%20%3D%20rsibling.test%28%20selector%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%0A%09%09%09%09%09%09context%3B%0A%0A%09%09%09%09%09//%20We%20can%20use%20%3Ascope%20instead%20of%20the%20ID%20hack%20if%20the%20browser%0A%09%09%09%09%09//%20supports%20it%20%26%20if%20we%27re%20not%20changing%20the%20context.%0A%09%09%09%09%09if%20%28%20newContext%20%21%3D%3D%20context%20%7C%7C%20%21support.scope%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Capture%20the%20context%20ID%2C%20setting%20it%20first%20if%20necessary%0A%09%09%09%09%09%09if%20%28%20%28%20nid%20%3D%20context.getAttribute%28%20%22id%22%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09nid%20%3D%20nid.replace%28%20rcssescape%2C%20fcssescape%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09context.setAttribute%28%20%22id%22%2C%20%28%20nid%20%3D%20expando%20%29%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Prefix%20every%20selector%20in%20the%20list%0A%09%09%09%09%09groups%20%3D%20tokenize%28%20selector%20%29%3B%0A%09%09%09%09%09i%20%3D%20groups.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09groups%5B%20i%20%5D%20%3D%20%28%20nid%20%3F%20%22%23%22%20%2B%20nid%20%3A%20%22%3Ascope%22%20%29%20%2B%20%22%20%22%20%2B%0A%09%09%09%09%09%09%09toSelector%28%20groups%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09newSelector%20%3D%20groups.join%28%20%22%2C%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09push.apply%28%20results%2C%0A%09%09%09%09%09%09newContext.querySelectorAll%28%20newSelector%20%29%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%09return%20results%3B%0A%09%09%09%09%7D%20catch%20%28%20qsaError%20%29%20%7B%0A%09%09%09%09%09nonnativeSelectorCache%28%20selector%2C%20true%20%29%3B%0A%09%09%09%09%7D%20finally%20%7B%0A%09%09%09%09%09if%20%28%20nid%20%3D%3D%3D%20expando%20%29%20%7B%0A%09%09%09%09%09%09context.removeAttribute%28%20%22id%22%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20All%20others%0A%09return%20select%28%20selector.replace%28%20rtrim%2C%20%22%241%22%20%29%2C%20context%2C%20results%2C%20seed%20%29%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Create%20key-value%20caches%20of%20limited%20size%0A%20%2A%20%40returns%20%7Bfunction%28string%2C%20object%29%7D%20Returns%20the%20Object%20data%20after%20storing%20it%20on%20itself%20with%0A%20%2A%09property%20name%20the%20%28space-suffixed%29%20string%20and%20%28if%20the%20cache%20is%20larger%20than%20Expr.cacheLength%29%0A%20%2A%09deleting%20the%20oldest%20entry%0A%20%2A/%0Afunction%20createCache%28%29%20%7B%0A%09var%20keys%20%3D%20%5B%5D%3B%0A%0A%09function%20cache%28%20key%2C%20value%20%29%20%7B%0A%0A%09%09//%20Use%20%28key%20%2B%20%22%20%22%29%20to%20avoid%20collision%20with%20native%20prototype%20properties%20%28see%20Issue%20%23157%29%0A%09%09if%20%28%20keys.push%28%20key%20%2B%20%22%20%22%20%29%20%3E%20Expr.cacheLength%20%29%20%7B%0A%0A%09%09%09//%20Only%20keep%20the%20most%20recent%20entries%0A%09%09%09delete%20cache%5B%20keys.shift%28%29%20%5D%3B%0A%09%09%7D%0A%09%09return%20%28%20cache%5B%20key%20%2B%20%22%20%22%20%5D%20%3D%20value%20%29%3B%0A%09%7D%0A%09return%20cache%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Mark%20a%20function%20for%20special%20use%20by%20Sizzle%0A%20%2A%20%40param%20%7BFunction%7D%20fn%20The%20function%20to%20mark%0A%20%2A/%0Afunction%20markFunction%28%20fn%20%29%20%7B%0A%09fn%5B%20expando%20%5D%20%3D%20true%3B%0A%09return%20fn%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Support%20testing%20using%20an%20element%0A%20%2A%20%40param%20%7BFunction%7D%20fn%20Passed%20the%20created%20element%20and%20returns%20a%20boolean%20result%0A%20%2A/%0Afunction%20assert%28%20fn%20%29%20%7B%0A%09var%20el%20%3D%20document.createElement%28%20%22fieldset%22%20%29%3B%0A%0A%09try%20%7B%0A%09%09return%20%21%21fn%28%20el%20%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%20finally%20%7B%0A%0A%09%09//%20Remove%20from%20its%20parent%20by%20default%0A%09%09if%20%28%20el.parentNode%20%29%20%7B%0A%09%09%09el.parentNode.removeChild%28%20el%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20release%20memory%20in%20IE%0A%09%09el%20%3D%20null%3B%0A%09%7D%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Adds%20the%20same%20handler%20for%20all%20of%20the%20specified%20attrs%0A%20%2A%20%40param%20%7BString%7D%20attrs%20Pipe-separated%20list%20of%20attributes%0A%20%2A%20%40param%20%7BFunction%7D%20handler%20The%20method%20that%20will%20be%20applied%0A%20%2A/%0Afunction%20addHandle%28%20attrs%2C%20handler%20%29%20%7B%0A%09var%20arr%20%3D%20attrs.split%28%20%22%7C%22%20%29%2C%0A%09%09i%20%3D%20arr.length%3B%0A%0A%09while%20%28%20i--%20%29%20%7B%0A%09%09Expr.attrHandle%5B%20arr%5B%20i%20%5D%20%5D%20%3D%20handler%3B%0A%09%7D%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Checks%20document%20order%20of%20two%20siblings%0A%20%2A%20%40param%20%7BElement%7D%20a%0A%20%2A%20%40param%20%7BElement%7D%20b%0A%20%2A%20%40returns%20%7BNumber%7D%20Returns%20less%20than%200%20if%20a%20precedes%20b%2C%20greater%20than%200%20if%20a%20follows%20b%0A%20%2A/%0Afunction%20siblingCheck%28%20a%2C%20b%20%29%20%7B%0A%09var%20cur%20%3D%20b%20%26%26%20a%2C%0A%09%09diff%20%3D%20cur%20%26%26%20a.nodeType%20%3D%3D%3D%201%20%26%26%20b.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09a.sourceIndex%20-%20b.sourceIndex%3B%0A%0A%09//%20Use%20IE%20sourceIndex%20if%20available%20on%20both%20nodes%0A%09if%20%28%20diff%20%29%20%7B%0A%09%09return%20diff%3B%0A%09%7D%0A%0A%09//%20Check%20if%20b%20follows%20a%0A%09if%20%28%20cur%20%29%20%7B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.nextSibling%20%29%20%29%20%7B%0A%09%09%09if%20%28%20cur%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20a%20%3F%201%20%3A%20-1%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20input%20types%0A%20%2A%20%40param%20%7BString%7D%20type%0A%20%2A/%0Afunction%20createInputPseudo%28%20type%20%29%20%7B%0A%09return%20function%28%20elem%20%29%20%7B%0A%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09return%20name%20%3D%3D%3D%20%22input%22%20%26%26%20elem.type%20%3D%3D%3D%20type%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20buttons%0A%20%2A%20%40param%20%7BString%7D%20type%0A%20%2A/%0Afunction%20createButtonPseudo%28%20type%20%29%20%7B%0A%09return%20function%28%20elem%20%29%20%7B%0A%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09return%20%28%20name%20%3D%3D%3D%20%22input%22%20%7C%7C%20name%20%3D%3D%3D%20%22button%22%20%29%20%26%26%20elem.type%20%3D%3D%3D%20type%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20%3Aenabled/%3Adisabled%0A%20%2A%20%40param%20%7BBoolean%7D%20disabled%20true%20for%20%3Adisabled%3B%20false%20for%20%3Aenabled%0A%20%2A/%0Afunction%20createDisabledPseudo%28%20disabled%20%29%20%7B%0A%0A%09//%20Known%20%3Adisabled%20false%20positives%3A%20fieldset%5Bdisabled%5D%20%3E%20legend%3Anth-of-type%28n%2B2%29%20%3Acan-disable%0A%09return%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20Only%20certain%20elements%20can%20match%20%3Aenabled%20or%20%3Adisabled%0A%09%09//%20https%3A//html.spec.whatwg.org/multipage/scripting.html%23selector-enabled%0A%09%09//%20https%3A//html.spec.whatwg.org/multipage/scripting.html%23selector-disabled%0A%09%09if%20%28%20%22form%22%20in%20elem%20%29%20%7B%0A%0A%09%09%09//%20Check%20for%20inherited%20disabledness%20on%20relevant%20non-disabled%20elements%3A%0A%09%09%09//%20%2A%20listed%20form-associated%20elements%20in%20a%20disabled%20fieldset%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23category-listed%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23concept-fe-disabled%0A%09%09%09//%20%2A%20option%20elements%20in%20a%20disabled%20optgroup%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23concept-option-disabled%0A%09%09%09//%20All%20such%20elements%20have%20a%20%22form%22%20property.%0A%09%09%09if%20%28%20elem.parentNode%20%26%26%20elem.disabled%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09//%20Option%20elements%20defer%20to%20a%20parent%20optgroup%20if%20present%0A%09%09%09%09if%20%28%20%22label%22%20in%20elem%20%29%20%7B%0A%09%09%09%09%09if%20%28%20%22label%22%20in%20elem.parentNode%20%29%20%7B%0A%09%09%09%09%09%09return%20elem.parentNode.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Support%3A%20IE%206%20-%2011%0A%09%09%09%09//%20Use%20the%20isDisabled%20shortcut%20property%20to%20check%20for%20disabled%20fieldset%20ancestors%0A%09%09%09%09return%20elem.isDisabled%20%3D%3D%3D%20disabled%20%7C%7C%0A%0A%09%09%09%09%09//%20Where%20there%20is%20no%20isDisabled%2C%20check%20manually%0A%09%09%09%09%09/%2A%20jshint%20-W018%20%2A/%0A%09%09%09%09%09elem.isDisabled%20%21%3D%3D%20%21disabled%20%26%26%0A%09%09%09%09%09inDisabledFieldset%28%20elem%20%29%20%3D%3D%3D%20disabled%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%0A%09%09//%20Try%20to%20winnow%20out%20elements%20that%20can%27t%20be%20disabled%20before%20trusting%20the%20disabled%20property.%0A%09%09//%20Some%20victims%20get%20caught%20in%20our%20net%20%28label%2C%20legend%2C%20menu%2C%20track%29%2C%20but%20it%20shouldn%27t%0A%09%09//%20even%20exist%20on%20them%2C%20let%20alone%20have%20a%20boolean%20value.%0A%09%09%7D%20else%20if%20%28%20%22label%22%20in%20elem%20%29%20%7B%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%7D%0A%0A%09%09//%20Remaining%20elements%20are%20neither%20%3Aenabled%20nor%20%3Adisabled%0A%09%09return%20false%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20positionals%0A%20%2A%20%40param%20%7BFunction%7D%20fn%0A%20%2A/%0Afunction%20createPositionalPseudo%28%20fn%20%29%20%7B%0A%09return%20markFunction%28%20function%28%20argument%20%29%20%7B%0A%09%09argument%20%3D%20%2Bargument%3B%0A%09%09return%20markFunction%28%20function%28%20seed%2C%20matches%20%29%20%7B%0A%09%09%09var%20j%2C%0A%09%09%09%09matchIndexes%20%3D%20fn%28%20%5B%5D%2C%20seed.length%2C%20argument%20%29%2C%0A%09%09%09%09i%20%3D%20matchIndexes.length%3B%0A%0A%09%09%09//%20Match%20elements%20found%20at%20the%20specified%20indexes%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20seed%5B%20%28%20j%20%3D%20matchIndexes%5B%20i%20%5D%20%29%20%5D%20%29%20%7B%0A%09%09%09%09%09seed%5B%20j%20%5D%20%3D%20%21%28%20matches%5B%20j%20%5D%20%3D%20seed%5B%20j%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Checks%20a%20node%20for%20validity%20as%20a%20Sizzle%20context%0A%20%2A%20%40param%20%7BElement%7CObject%3D%7D%20context%0A%20%2A%20%40returns%20%7BElement%7CObject%7CBoolean%7D%20The%20input%20node%20if%20acceptable%2C%20otherwise%20a%20falsy%20value%0A%20%2A/%0Afunction%20testContext%28%20context%20%29%20%7B%0A%09return%20context%20%26%26%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%26%26%20context%3B%0A%7D%0A%0A//%20Expose%20support%20vars%20for%20convenience%0Asupport%20%3D%20Sizzle.support%20%3D%20%7B%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Detects%20XML%20nodes%0A%20%2A%20%40param%20%7BElement%7CObject%7D%20elem%20An%20element%20or%20a%20document%0A%20%2A%20%40returns%20%7BBoolean%7D%20True%20iff%20elem%20is%20a%20non-HTML%20XML%20node%0A%20%2A/%0AisXML%20%3D%20Sizzle.isXML%20%3D%20function%28%20elem%20%29%20%7B%0A%09var%20namespace%20%3D%20elem.namespaceURI%2C%0A%09%09docElem%20%3D%20%28%20elem.ownerDocument%20%7C%7C%20elem%20%29.documentElement%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D8%0A%09//%20Assume%20HTML%20when%20documentElement%20doesn%27t%20yet%20exist%2C%20such%20as%20inside%20loading%20iframes%0A%09//%20https%3A//bugs.jquery.com/ticket/4833%0A%09return%20%21rhtml.test%28%20namespace%20%7C%7C%20docElem%20%26%26%20docElem.nodeName%20%7C%7C%20%22HTML%22%20%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Sets%20document-related%20variables%20once%20based%20on%20the%20current%20document%0A%20%2A%20%40param%20%7BElement%7CObject%7D%20%5Bdoc%5D%20An%20element%20or%20document%20object%20to%20use%20to%20set%20the%20document%0A%20%2A%20%40returns%20%7BObject%7D%20Returns%20the%20current%20document%0A%20%2A/%0AsetDocument%20%3D%20Sizzle.setDocument%20%3D%20function%28%20node%20%29%20%7B%0A%09var%20hasCompare%2C%20subWindow%2C%0A%09%09doc%20%3D%20node%20%3F%20node.ownerDocument%20%7C%7C%20node%20%3A%20preferredDoc%3B%0A%0A%09//%20Return%20early%20if%20doc%20is%20invalid%20or%20already%20selected%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20doc%20%3D%3D%20document%20%7C%7C%20doc.nodeType%20%21%3D%3D%209%20%7C%7C%20%21doc.documentElement%20%29%20%7B%0A%09%09return%20document%3B%0A%09%7D%0A%0A%09//%20Update%20global%20variables%0A%09document%20%3D%20doc%3B%0A%09docElem%20%3D%20document.documentElement%3B%0A%09documentIsHTML%20%3D%20%21isXML%28%20document%20%29%3B%0A%0A%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%0A%09//%20Accessing%20iframe%20documents%20after%20unload%20throws%20%22permission%20denied%22%20errors%20%28jQuery%20%2313936%29%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20preferredDoc%20%21%3D%20document%20%26%26%0A%09%09%28%20subWindow%20%3D%20document.defaultView%20%29%20%26%26%20subWindow.top%20%21%3D%3D%20subWindow%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%2011%2C%20Edge%0A%09%09if%20%28%20subWindow.addEventListener%20%29%20%7B%0A%09%09%09subWindow.addEventListener%28%20%22unload%22%2C%20unloadHandler%2C%20false%20%29%3B%0A%0A%09%09//%20Support%3A%20IE%209%20-%2010%20only%0A%09%09%7D%20else%20if%20%28%20subWindow.attachEvent%20%29%20%7B%0A%09%09%09subWindow.attachEvent%28%20%22onunload%22%2C%20unloadHandler%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Support%3A%20IE%208%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%2C%20Chrome%20%3C%3D16%20-%2025%20only%2C%20Firefox%20%3C%3D3.6%20-%2031%20only%2C%0A%09//%20Safari%204%20-%205%20only%2C%20Opera%20%3C%3D11.6%20-%2012.x%20only%0A%09//%20IE/Edge%20%26%20older%20browsers%20don%27t%20support%20the%20%3Ascope%20pseudo-class.%0A%09//%20Support%3A%20Safari%206.0%20only%0A%09//%20Safari%206.0%20supports%20%3Ascope%20but%20it%27s%20an%20alias%20of%20%3Aroot%20there.%0A%09support.scope%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09docElem.appendChild%28%20el%20%29.appendChild%28%20document.createElement%28%20%22div%22%20%29%20%29%3B%0A%09%09return%20typeof%20el.querySelectorAll%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%21el.querySelectorAll%28%20%22%3Ascope%20fieldset%20div%22%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09/%2A%20Attributes%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Support%3A%20IE%3C8%0A%09//%20Verify%20that%20getAttribute%20really%20returns%20attributes%20and%20not%20properties%0A%09//%20%28excepting%20IE8%20booleans%29%0A%09support.attributes%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09el.className%20%3D%20%22i%22%3B%0A%09%09return%20%21el.getAttribute%28%20%22className%22%20%29%3B%0A%09%7D%20%29%3B%0A%0A%09/%2A%20getElement%28s%29By%2A%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Check%20if%20getElementsByTagName%28%22%2A%22%29%20returns%20only%20elements%0A%09support.getElementsByTagName%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09el.appendChild%28%20document.createComment%28%20%22%22%20%29%20%29%3B%0A%09%09return%20%21el.getElementsByTagName%28%20%22%2A%22%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09//%20Support%3A%20IE%3C9%0A%09support.getElementsByClassName%20%3D%20rnative.test%28%20document.getElementsByClassName%20%29%3B%0A%0A%09//%20Support%3A%20IE%3C10%0A%09//%20Check%20if%20getElementById%20returns%20elements%20by%20name%0A%09//%20The%20broken%20getElementById%20methods%20don%27t%20pick%20up%20programmatically-set%20names%2C%0A%09//%20so%20use%20a%20roundabout%20getElementsByName%20test%0A%09support.getById%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09docElem.appendChild%28%20el%20%29.id%20%3D%20expando%3B%0A%09%09return%20%21document.getElementsByName%20%7C%7C%20%21document.getElementsByName%28%20expando%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09//%20ID%20filter%20and%20find%0A%09if%20%28%20support.getById%20%29%20%7B%0A%09%09Expr.filter%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%20%29%20%7B%0A%09%09%09var%20attrId%20%3D%20id.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20elem.getAttribute%28%20%22id%22%20%29%20%3D%3D%3D%20attrId%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%0A%09%09Expr.find%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementById%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09%09var%20elem%20%3D%20context.getElementById%28%20id%20%29%3B%0A%09%09%09%09return%20elem%20%3F%20%5B%20elem%20%5D%20%3A%20%5B%5D%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%20else%20%7B%0A%09%09Expr.filter%5B%20%22ID%22%20%5D%20%3D%20%20function%28%20id%20%29%20%7B%0A%09%09%09var%20attrId%20%3D%20id.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20node%20%3D%20typeof%20elem.getAttributeNode%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%09%09elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09return%20node%20%26%26%20node.value%20%3D%3D%3D%20attrId%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Support%3A%20IE%206%20-%207%20only%0A%09%09//%20getElementById%20is%20not%20reliable%20as%20a%20find%20shortcut%0A%09%09Expr.find%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementById%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09%09var%20node%2C%20i%2C%20elems%2C%0A%09%09%09%09%09elem%20%3D%20context.getElementById%28%20id%20%29%3B%0A%0A%09%09%09%09if%20%28%20elem%20%29%20%7B%0A%0A%09%09%09%09%09//%20Verify%20the%20id%20attribute%0A%09%09%09%09%09node%20%3D%20elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09%09if%20%28%20node%20%26%26%20node.value%20%3D%3D%3D%20id%20%29%20%7B%0A%09%09%09%09%09%09return%20%5B%20elem%20%5D%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Fall%20back%20on%20getElementsByName%0A%09%09%09%09%09elems%20%3D%20context.getElementsByName%28%20id%20%29%3B%0A%09%09%09%09%09i%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20elem%20%3D%20elems%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09node%20%3D%20elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09%09%09if%20%28%20node%20%26%26%20node.value%20%3D%3D%3D%20id%20%29%20%7B%0A%09%09%09%09%09%09%09return%20%5B%20elem%20%5D%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20%5B%5D%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%0A%09//%20Tag%0A%09Expr.find%5B%20%22TAG%22%20%5D%20%3D%20support.getElementsByTagName%20%3F%0A%09%09function%28%20tag%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09%09%09return%20context.getElementsByTagName%28%20tag%20%29%3B%0A%0A%09%09%09//%20DocumentFragment%20nodes%20don%27t%20have%20gEBTN%0A%09%09%09%7D%20else%20if%20%28%20support.qsa%20%29%20%7B%0A%09%09%09%09return%20context.querySelectorAll%28%20tag%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%3A%0A%0A%09%09function%28%20tag%2C%20context%20%29%20%7B%0A%09%09%09var%20elem%2C%0A%09%09%09%09tmp%20%3D%20%5B%5D%2C%0A%09%09%09%09i%20%3D%200%2C%0A%0A%09%09%09%09//%20By%20happy%20coincidence%2C%20a%20%28broken%29%20gEBTN%20appears%20on%20DocumentFragment%20nodes%20too%0A%09%09%09%09results%20%3D%20context.getElementsByTagName%28%20tag%20%29%3B%0A%0A%09%09%09//%20Filter%20out%20possible%20comments%0A%09%09%09if%20%28%20tag%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20results%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09%09%09tmp.push%28%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20tmp%3B%0A%09%09%09%7D%0A%09%09%09return%20results%3B%0A%09%09%7D%3B%0A%0A%09//%20Class%0A%09Expr.find%5B%20%22CLASS%22%20%5D%20%3D%20support.getElementsByClassName%20%26%26%20function%28%20className%2C%20context%20%29%20%7B%0A%09%09if%20%28%20typeof%20context.getElementsByClassName%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09return%20context.getElementsByClassName%28%20className%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09/%2A%20QSA/matchesSelector%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20QSA%20and%20matchesSelector%20support%0A%0A%09//%20matchesSelector%28%3Aactive%29%20reports%20false%20when%20true%20%28IE9/Opera%2011.5%29%0A%09rbuggyMatches%20%3D%20%5B%5D%3B%0A%0A%09//%20qSa%28%3Afocus%29%20reports%20false%20when%20true%20%28Chrome%2021%29%0A%09//%20We%20allow%20this%20because%20of%20a%20bug%20in%20IE8/9%20that%20throws%20an%20error%0A%09//%20whenever%20%60document.activeElement%60%20is%20accessed%20on%20an%20iframe%0A%09//%20So%2C%20we%20allow%20%3Afocus%20to%20pass%20through%20QSA%20all%20the%20time%20to%20avoid%20the%20IE%20error%0A%09//%20See%20https%3A//bugs.jquery.com/ticket/13378%0A%09rbuggyQSA%20%3D%20%5B%5D%3B%0A%0A%09if%20%28%20%28%20support.qsa%20%3D%20rnative.test%28%20document.querySelectorAll%20%29%20%29%20%29%20%7B%0A%0A%09%09//%20Build%20QSA%20regex%0A%09%09//%20Regex%20strategy%20adopted%20from%20Diego%20Perini%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%0A%09%09%09var%20input%3B%0A%0A%09%09%09//%20Select%20is%20set%20to%20empty%20string%20on%20purpose%0A%09%09%09//%20This%20is%20to%20test%20IE%27s%20treatment%20of%20not%20explicitly%0A%09%09%09//%20setting%20a%20boolean%20content%20attribute%2C%0A%09%09%09//%20since%20its%20presence%20should%20be%20enough%0A%09%09%09//%20https%3A//bugs.jquery.com/ticket/12359%0A%09%09%09docElem.appendChild%28%20el%20%29.innerHTML%20%3D%20%22%3Ca%20id%3D%27%22%20%2B%20expando%20%2B%20%22%27%3E%3C/a%3E%22%20%2B%0A%09%09%09%09%22%3Cselect%20id%3D%27%22%20%2B%20expando%20%2B%20%22-%5Cr%5C%5C%27%20msallowcapture%3D%27%27%3E%22%20%2B%0A%09%09%09%09%22%3Coption%20selected%3D%27%27%3E%3C/option%3E%3C/select%3E%22%3B%0A%0A%09%09%09//%20Support%3A%20IE8%2C%20Opera%2011-12.16%0A%09%09%09//%20Nothing%20should%20be%20selected%20when%20empty%20strings%20follow%20%5E%3D%20or%20%24%3D%20or%20%2A%3D%0A%09%09%09//%20The%20test%20attribute%20must%20be%20unknown%20in%20Opera%20but%20%22safe%22%20for%20WinRT%0A%09%09%09//%20https%3A//msdn.microsoft.com/en-us/library/ie/hh465388.aspx%23attribute_section%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%5Bmsallowcapture%5E%3D%27%27%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5B%2A%5E%24%5D%3D%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3A%27%27%7C%5C%22%5C%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE8%0A%09%09%09//%20Boolean%20attributes%20and%20%22value%22%20are%20not%20treated%20correctly%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bselected%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3Avalue%7C%22%20%2B%20booleans%20%2B%20%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Chrome%3C29%2C%20Android%3C4.4%2C%20Safari%3C7.0%2B%2C%20iOS%3C7.0%2B%2C%20PhantomJS%3C1.9.8%2B%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bid~%3D%22%20%2B%20expando%20%2B%20%22-%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22~%3D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09%09//%20IE%2011/Edge%20don%27t%20find%20elements%20on%20a%20%60%5Bname%3D%27%27%5D%60%20query%20in%20some%20cases.%0A%09%09%09//%20Adding%20a%20temporary%20attribute%20to%20the%20document%20before%20the%20selection%20works%0A%09%09%09//%20around%20the%20issue.%0A%09%09%09//%20Interestingly%2C%20IE%2010%20%26%20older%20don%27t%20seem%20to%20have%20the%20issue.%0A%09%09%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09%09%09input.setAttribute%28%20%22name%22%2C%20%22%22%20%29%3B%0A%09%09%09el.appendChild%28%20input%20%29%3B%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bname%3D%27%27%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2Aname%22%20%2B%20whitespace%20%2B%20%22%2A%3D%22%20%2B%0A%09%09%09%09%09whitespace%20%2B%20%22%2A%28%3F%3A%27%27%7C%5C%22%5C%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Webkit/Opera%20-%20%3Achecked%20should%20return%20selected%20option%20elements%0A%09%09%09//%20http%3A//www.w3.org/TR/2011/REC-css3-selectors-20110929/%23checked%0A%09%09%09//%20IE8%20throws%20error%20here%20and%20will%20not%20see%20later%20tests%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%3Achecked%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Achecked%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Safari%208%2B%2C%20iOS%208%2B%0A%09%09%09//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D136851%0A%09%09%09//%20In-page%20%60selector%23id%20sibling-combinator%20selector%60%20fails%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22a%23%22%20%2B%20expando%20%2B%20%22%2B%2A%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22.%23.%2B%5B%2B~%5D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D3.6%20-%205%20only%0A%09%09%09//%20Old%20Firefox%20doesn%27t%20throw%20on%20a%20badly-escaped%20identifier.%0A%09%09%09el.querySelectorAll%28%20%22%5C%5C%5Cf%22%20%29%3B%0A%09%09%09rbuggyQSA.push%28%20%22%5B%5C%5Cr%5C%5Cn%5C%5Cf%5D%22%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%09%09%09el.innerHTML%20%3D%20%22%3Ca%20href%3D%27%27%20disabled%3D%27disabled%27%3E%3C/a%3E%22%20%2B%0A%09%09%09%09%22%3Cselect%20disabled%3D%27disabled%27%3E%3Coption/%3E%3C/select%3E%22%3B%0A%0A%09%09%09//%20Support%3A%20Windows%208%20Native%20Apps%0A%09%09%09//%20The%20type%20and%20name%20attributes%20are%20restricted%20during%20.innerHTML%20assignment%0A%09%09%09var%20input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09%09%09input.setAttribute%28%20%22type%22%2C%20%22hidden%22%20%29%3B%0A%09%09%09el.appendChild%28%20input%20%29.setAttribute%28%20%22name%22%2C%20%22D%22%20%29%3B%0A%0A%09%09%09//%20Support%3A%20IE8%0A%09%09%09//%20Enforce%20case-sensitivity%20of%20name%20attribute%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%5Bname%3Dd%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22name%22%20%2B%20whitespace%20%2B%20%22%2A%5B%2A%5E%24%7C%21~%5D%3F%3D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20FF%203.5%20-%20%3Aenabled/%3Adisabled%20and%20hidden%20elements%20%28hidden%20elements%20are%20still%20enabled%29%0A%09%09%09//%20IE8%20throws%20error%20here%20and%20will%20not%20see%20later%20tests%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%3Aenabled%22%20%29.length%20%21%3D%3D%202%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Aenabled%22%2C%20%22%3Adisabled%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE9-11%2B%0A%09%09%09//%20IE%27s%20%3Adisabled%20selector%20does%20not%20pick%20up%20the%20children%20of%20disabled%20fieldsets%0A%09%09%09docElem.appendChild%28%20el%20%29.disabled%20%3D%20true%3B%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%3Adisabled%22%20%29.length%20%21%3D%3D%202%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Aenabled%22%2C%20%22%3Adisabled%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Opera%2010%20-%2011%20only%0A%09%09%09//%20Opera%2010-11%20does%20not%20throw%20on%20post-comma%20invalid%20pseudos%0A%09%09%09el.querySelectorAll%28%20%22%2A%2C%3Ax%22%20%29%3B%0A%09%09%09rbuggyQSA.push%28%20%22%2C.%2A%3A%22%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09if%20%28%20%28%20support.matchesSelector%20%3D%20rnative.test%28%20%28%20matches%20%3D%20docElem.matches%20%7C%7C%0A%09%09docElem.webkitMatchesSelector%20%7C%7C%0A%09%09docElem.mozMatchesSelector%20%7C%7C%0A%09%09docElem.oMatchesSelector%20%7C%7C%0A%09%09docElem.msMatchesSelector%20%29%20%29%20%29%20%29%20%7B%0A%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%0A%09%09%09//%20Check%20to%20see%20if%20it%27s%20possible%20to%20do%20matchesSelector%0A%09%09%09//%20on%20a%20disconnected%20node%20%28IE%209%29%0A%09%09%09support.disconnectedMatch%20%3D%20matches.call%28%20el%2C%20%22%2A%22%20%29%3B%0A%0A%09%09%09//%20This%20should%20fail%20with%20an%20exception%0A%09%09%09//%20Gecko%20does%20not%20error%2C%20returns%20false%20instead%0A%09%09%09matches.call%28%20el%2C%20%22%5Bs%21%3D%27%27%5D%3Ax%22%20%29%3B%0A%09%09%09rbuggyMatches.push%28%20%22%21%3D%22%2C%20pseudos%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09rbuggyQSA%20%3D%20rbuggyQSA.length%20%26%26%20new%20RegExp%28%20rbuggyQSA.join%28%20%22%7C%22%20%29%20%29%3B%0A%09rbuggyMatches%20%3D%20rbuggyMatches.length%20%26%26%20new%20RegExp%28%20rbuggyMatches.join%28%20%22%7C%22%20%29%20%29%3B%0A%0A%09/%2A%20Contains%0A%09----------------------------------------------------------------------%20%2A/%0A%09hasCompare%20%3D%20rnative.test%28%20docElem.compareDocumentPosition%20%29%3B%0A%0A%09//%20Element%20contains%20another%0A%09//%20Purposefully%20self-exclusive%0A%09//%20As%20in%2C%20an%20element%20does%20not%20contain%20itself%0A%09contains%20%3D%20hasCompare%20%7C%7C%20rnative.test%28%20docElem.contains%20%29%20%3F%0A%09%09function%28%20a%2C%20b%20%29%20%7B%0A%09%09%09var%20adown%20%3D%20a.nodeType%20%3D%3D%3D%209%20%3F%20a.documentElement%20%3A%20a%2C%0A%09%09%09%09bup%20%3D%20b%20%26%26%20b.parentNode%3B%0A%09%09%09return%20a%20%3D%3D%3D%20bup%20%7C%7C%20%21%21%28%20bup%20%26%26%20bup.nodeType%20%3D%3D%3D%201%20%26%26%20%28%0A%09%09%09%09adown.contains%20%3F%0A%09%09%09%09%09adown.contains%28%20bup%20%29%20%3A%0A%09%09%09%09%09a.compareDocumentPosition%20%26%26%20a.compareDocumentPosition%28%20bup%20%29%20%26%2016%0A%09%09%09%29%20%29%3B%0A%09%09%7D%20%3A%0A%09%09function%28%20a%2C%20b%20%29%20%7B%0A%09%09%09if%20%28%20b%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20b%20%3D%20b.parentNode%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20b%20%3D%3D%3D%20a%20%29%20%7B%0A%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%3B%0A%0A%09/%2A%20Sorting%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Document%20order%20sorting%0A%09sortOrder%20%3D%20hasCompare%20%3F%0A%09function%28%20a%2C%20b%20%29%20%7B%0A%0A%09%09//%20Flag%20for%20duplicate%20removal%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09//%20Sort%20on%20method%20existence%20if%20only%20one%20input%20has%20compareDocumentPosition%0A%09%09var%20compare%20%3D%20%21a.compareDocumentPosition%20-%20%21b.compareDocumentPosition%3B%0A%09%09if%20%28%20compare%20%29%20%7B%0A%09%09%09return%20compare%3B%0A%09%09%7D%0A%0A%09%09//%20Calculate%20position%20if%20both%20inputs%20belong%20to%20the%20same%20document%0A%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09compare%20%3D%20%28%20a.ownerDocument%20%7C%7C%20a%20%29%20%3D%3D%20%28%20b.ownerDocument%20%7C%7C%20b%20%29%20%3F%0A%09%09%09a.compareDocumentPosition%28%20b%20%29%20%3A%0A%0A%09%09%09//%20Otherwise%20we%20know%20they%20are%20disconnected%0A%09%09%091%3B%0A%0A%09%09//%20Disconnected%20nodes%0A%09%09if%20%28%20compare%20%26%201%20%7C%7C%0A%09%09%09%28%20%21support.sortDetached%20%26%26%20b.compareDocumentPosition%28%20a%20%29%20%3D%3D%3D%20compare%20%29%20%29%20%7B%0A%0A%09%09%09//%20Choose%20the%20first%20element%20that%20is%20related%20to%20our%20preferred%20document%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09if%20%28%20a%20%3D%3D%20document%20%7C%7C%20a.ownerDocument%20%3D%3D%20preferredDoc%20%26%26%0A%09%09%09%09contains%28%20preferredDoc%2C%20a%20%29%20%29%20%7B%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09if%20%28%20b%20%3D%3D%20document%20%7C%7C%20b.ownerDocument%20%3D%3D%20preferredDoc%20%26%26%0A%09%09%09%09contains%28%20preferredDoc%2C%20b%20%29%20%29%20%7B%0A%09%09%09%09return%201%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Maintain%20original%20order%0A%09%09%09return%20sortInput%20%3F%0A%09%09%09%09%28%20indexOf%28%20sortInput%2C%20a%20%29%20-%20indexOf%28%20sortInput%2C%20b%20%29%20%29%20%3A%0A%09%09%09%090%3B%0A%09%09%7D%0A%0A%09%09return%20compare%20%26%204%20%3F%20-1%20%3A%201%3B%0A%09%7D%20%3A%0A%09function%28%20a%2C%20b%20%29%20%7B%0A%0A%09%09//%20Exit%20early%20if%20the%20nodes%20are%20identical%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09var%20cur%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09aup%20%3D%20a.parentNode%2C%0A%09%09%09bup%20%3D%20b.parentNode%2C%0A%09%09%09ap%20%3D%20%5B%20a%20%5D%2C%0A%09%09%09bp%20%3D%20%5B%20b%20%5D%3B%0A%0A%09%09//%20Parentless%20nodes%20are%20either%20documents%20or%20disconnected%0A%09%09if%20%28%20%21aup%20%7C%7C%20%21bup%20%29%20%7B%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09/%2A%20eslint-disable%20eqeqeq%20%2A/%0A%09%09%09return%20a%20%3D%3D%20document%20%3F%20-1%20%3A%0A%09%09%09%09b%20%3D%3D%20document%20%3F%201%20%3A%0A%09%09%09%09/%2A%20eslint-enable%20eqeqeq%20%2A/%0A%09%09%09%09aup%20%3F%20-1%20%3A%0A%09%09%09%09bup%20%3F%201%20%3A%0A%09%09%09%09sortInput%20%3F%0A%09%09%09%09%28%20indexOf%28%20sortInput%2C%20a%20%29%20-%20indexOf%28%20sortInput%2C%20b%20%29%20%29%20%3A%0A%09%09%09%090%3B%0A%0A%09%09//%20If%20the%20nodes%20are%20siblings%2C%20we%20can%20do%20a%20quick%20check%0A%09%09%7D%20else%20if%20%28%20aup%20%3D%3D%3D%20bup%20%29%20%7B%0A%09%09%09return%20siblingCheck%28%20a%2C%20b%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Otherwise%20we%20need%20full%20lists%20of%20their%20ancestors%20for%20comparison%0A%09%09cur%20%3D%20a%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.parentNode%20%29%20%29%20%7B%0A%09%09%09ap.unshift%28%20cur%20%29%3B%0A%09%09%7D%0A%09%09cur%20%3D%20b%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.parentNode%20%29%20%29%20%7B%0A%09%09%09bp.unshift%28%20cur%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Walk%20down%20the%20tree%20looking%20for%20a%20discrepancy%0A%09%09while%20%28%20ap%5B%20i%20%5D%20%3D%3D%3D%20bp%5B%20i%20%5D%20%29%20%7B%0A%09%09%09i%2B%2B%3B%0A%09%09%7D%0A%0A%09%09return%20i%20%3F%0A%0A%09%09%09//%20Do%20a%20sibling%20check%20if%20the%20nodes%20have%20a%20common%20ancestor%0A%09%09%09siblingCheck%28%20ap%5B%20i%20%5D%2C%20bp%5B%20i%20%5D%20%29%20%3A%0A%0A%09%09%09//%20Otherwise%20nodes%20in%20our%20document%20sort%20first%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09/%2A%20eslint-disable%20eqeqeq%20%2A/%0A%09%09%09ap%5B%20i%20%5D%20%3D%3D%20preferredDoc%20%3F%20-1%20%3A%0A%09%09%09bp%5B%20i%20%5D%20%3D%3D%20preferredDoc%20%3F%201%20%3A%0A%09%09%09/%2A%20eslint-enable%20eqeqeq%20%2A/%0A%09%09%090%3B%0A%09%7D%3B%0A%0A%09return%20document%3B%0A%7D%3B%0A%0ASizzle.matches%20%3D%20function%28%20expr%2C%20elements%20%29%20%7B%0A%09return%20Sizzle%28%20expr%2C%20null%2C%20null%2C%20elements%20%29%3B%0A%7D%3B%0A%0ASizzle.matchesSelector%20%3D%20function%28%20elem%2C%20expr%20%29%20%7B%0A%09setDocument%28%20elem%20%29%3B%0A%0A%09if%20%28%20support.matchesSelector%20%26%26%20documentIsHTML%20%26%26%0A%09%09%21nonnativeSelectorCache%5B%20expr%20%2B%20%22%20%22%20%5D%20%26%26%0A%09%09%28%20%21rbuggyMatches%20%7C%7C%20%21rbuggyMatches.test%28%20expr%20%29%20%29%20%26%26%0A%09%09%28%20%21rbuggyQSA%20%20%20%20%20%7C%7C%20%21rbuggyQSA.test%28%20expr%20%29%20%29%20%29%20%7B%0A%0A%09%09try%20%7B%0A%09%09%09var%20ret%20%3D%20matches.call%28%20elem%2C%20expr%20%29%3B%0A%0A%09%09%09//%20IE%209%27s%20matchesSelector%20returns%20false%20on%20disconnected%20nodes%0A%09%09%09if%20%28%20ret%20%7C%7C%20support.disconnectedMatch%20%7C%7C%0A%0A%09%09%09%09//%20As%20well%2C%20disconnected%20nodes%20are%20said%20to%20be%20in%20a%20document%0A%09%09%09%09//%20fragment%20in%20IE%209%0A%09%09%09%09elem.document%20%26%26%20elem.document.nodeType%20%21%3D%3D%2011%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09%09nonnativeSelectorCache%28%20expr%2C%20true%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20Sizzle%28%20expr%2C%20document%2C%20null%2C%20%5B%20elem%20%5D%20%29.length%20%3E%200%3B%0A%7D%3B%0A%0ASizzle.contains%20%3D%20function%28%20context%2C%20elem%20%29%20%7B%0A%0A%09//%20Set%20document%20vars%20if%20needed%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20%28%20context.ownerDocument%20%7C%7C%20context%20%29%20%21%3D%20document%20%29%20%7B%0A%09%09setDocument%28%20context%20%29%3B%0A%09%7D%0A%09return%20contains%28%20context%2C%20elem%20%29%3B%0A%7D%3B%0A%0ASizzle.attr%20%3D%20function%28%20elem%2C%20name%20%29%20%7B%0A%0A%09//%20Set%20document%20vars%20if%20needed%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20%28%20elem.ownerDocument%20%7C%7C%20elem%20%29%20%21%3D%20document%20%29%20%7B%0A%09%09setDocument%28%20elem%20%29%3B%0A%09%7D%0A%0A%09var%20fn%20%3D%20Expr.attrHandle%5B%20name.toLowerCase%28%29%20%5D%2C%0A%0A%09%09//%20Don%27t%20get%20fooled%20by%20Object.prototype%20properties%20%28jQuery%20%2313807%29%0A%09%09val%20%3D%20fn%20%26%26%20hasOwn.call%28%20Expr.attrHandle%2C%20name.toLowerCase%28%29%20%29%20%3F%0A%09%09%09fn%28%20elem%2C%20name%2C%20%21documentIsHTML%20%29%20%3A%0A%09%09%09undefined%3B%0A%0A%09return%20val%20%21%3D%3D%20undefined%20%3F%0A%09%09val%20%3A%0A%09%09support.attributes%20%7C%7C%20%21documentIsHTML%20%3F%0A%09%09%09elem.getAttribute%28%20name%20%29%20%3A%0A%09%09%09%28%20val%20%3D%20elem.getAttributeNode%28%20name%20%29%20%29%20%26%26%20val.specified%20%3F%0A%09%09%09%09val.value%20%3A%0A%09%09%09%09null%3B%0A%7D%3B%0A%0ASizzle.escape%20%3D%20function%28%20sel%20%29%20%7B%0A%09return%20%28%20sel%20%2B%20%22%22%20%29.replace%28%20rcssescape%2C%20fcssescape%20%29%3B%0A%7D%3B%0A%0ASizzle.error%20%3D%20function%28%20msg%20%29%20%7B%0A%09throw%20new%20Error%28%20%22Syntax%20error%2C%20unrecognized%20expression%3A%20%22%20%2B%20msg%20%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Document%20sorting%20and%20removing%20duplicates%0A%20%2A%20%40param%20%7BArrayLike%7D%20results%0A%20%2A/%0ASizzle.uniqueSort%20%3D%20function%28%20results%20%29%20%7B%0A%09var%20elem%2C%0A%09%09duplicates%20%3D%20%5B%5D%2C%0A%09%09j%20%3D%200%2C%0A%09%09i%20%3D%200%3B%0A%0A%09//%20Unless%20we%20%2Aknow%2A%20we%20can%20detect%20duplicates%2C%20assume%20their%20presence%0A%09hasDuplicate%20%3D%20%21support.detectDuplicates%3B%0A%09sortInput%20%3D%20%21support.sortStable%20%26%26%20results.slice%28%200%20%29%3B%0A%09results.sort%28%20sortOrder%20%29%3B%0A%0A%09if%20%28%20hasDuplicate%20%29%20%7B%0A%09%09while%20%28%20%28%20elem%20%3D%20results%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20elem%20%3D%3D%3D%20results%5B%20i%20%5D%20%29%20%7B%0A%09%09%09%09j%20%3D%20duplicates.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09results.splice%28%20duplicates%5B%20j%20%5D%2C%201%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Clear%20input%20after%20sorting%20to%20release%20objects%0A%09//%20See%20https%3A//github.com/jquery/sizzle/pull/225%0A%09sortInput%20%3D%20null%3B%0A%0A%09return%20results%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Utility%20function%20for%20retrieving%20the%20text%20value%20of%20an%20array%20of%20DOM%20nodes%0A%20%2A%20%40param%20%7BArray%7CElement%7D%20elem%0A%20%2A/%0AgetText%20%3D%20Sizzle.getText%20%3D%20function%28%20elem%20%29%20%7B%0A%09var%20node%2C%0A%09%09ret%20%3D%20%22%22%2C%0A%09%09i%20%3D%200%2C%0A%09%09nodeType%20%3D%20elem.nodeType%3B%0A%0A%09if%20%28%20%21nodeType%20%29%20%7B%0A%0A%09%09//%20If%20no%20nodeType%2C%20this%20is%20expected%20to%20be%20an%20array%0A%09%09while%20%28%20%28%20node%20%3D%20elem%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09//%20Do%20not%20traverse%20comment%20nodes%0A%09%09%09ret%20%2B%3D%20getText%28%20node%20%29%3B%0A%09%09%7D%0A%09%7D%20else%20if%20%28%20nodeType%20%3D%3D%3D%201%20%7C%7C%20nodeType%20%3D%3D%3D%209%20%7C%7C%20nodeType%20%3D%3D%3D%2011%20%29%20%7B%0A%0A%09%09//%20Use%20textContent%20for%20elements%0A%09%09//%20innerText%20usage%20removed%20for%20consistency%20of%20new%20lines%20%28jQuery%20%2311153%29%0A%09%09if%20%28%20typeof%20elem.textContent%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20elem.textContent%3B%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Traverse%20its%20children%0A%09%09%09for%20%28%20elem%20%3D%20elem.firstChild%3B%20elem%3B%20elem%20%3D%20elem.nextSibling%20%29%20%7B%0A%09%09%09%09ret%20%2B%3D%20getText%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20else%20if%20%28%20nodeType%20%3D%3D%3D%203%20%7C%7C%20nodeType%20%3D%3D%3D%204%20%29%20%7B%0A%09%09return%20elem.nodeValue%3B%0A%09%7D%0A%0A%09//%20Do%20not%20include%20comment%20or%20processing%20instruction%20nodes%0A%0A%09return%20ret%3B%0A%7D%3B%0A%0AExpr%20%3D%20Sizzle.selectors%20%3D%20%7B%0A%0A%09//%20Can%20be%20adjusted%20by%20the%20user%0A%09cacheLength%3A%2050%2C%0A%0A%09createPseudo%3A%20markFunction%2C%0A%0A%09match%3A%20matchExpr%2C%0A%0A%09attrHandle%3A%20%7B%7D%2C%0A%0A%09find%3A%20%7B%7D%2C%0A%0A%09relative%3A%20%7B%0A%09%09%22%3E%22%3A%20%7B%20dir%3A%20%22parentNode%22%2C%20first%3A%20true%20%7D%2C%0A%09%09%22%20%22%3A%20%7B%20dir%3A%20%22parentNode%22%20%7D%2C%0A%09%09%22%2B%22%3A%20%7B%20dir%3A%20%22previousSibling%22%2C%20first%3A%20true%20%7D%2C%0A%09%09%22~%22%3A%20%7B%20dir%3A%20%22previousSibling%22%20%7D%0A%09%7D%2C%0A%0A%09preFilter%3A%20%7B%0A%09%09%22ATTR%22%3A%20function%28%20match%20%29%20%7B%0A%09%09%09match%5B%201%20%5D%20%3D%20match%5B%201%20%5D.replace%28%20runescape%2C%20funescape%20%29%3B%0A%0A%09%09%09//%20Move%20the%20given%20value%20to%20match%5B3%5D%20whether%20quoted%20or%20unquoted%0A%09%09%09match%5B%203%20%5D%20%3D%20%28%20match%5B%203%20%5D%20%7C%7C%20match%5B%204%20%5D%20%7C%7C%0A%09%09%09%09match%5B%205%20%5D%20%7C%7C%20%22%22%20%29.replace%28%20runescape%2C%20funescape%20%29%3B%0A%0A%09%09%09if%20%28%20match%5B%202%20%5D%20%3D%3D%3D%20%22~%3D%22%20%29%20%7B%0A%09%09%09%09match%5B%203%20%5D%20%3D%20%22%20%22%20%2B%20match%5B%203%20%5D%20%2B%20%22%20%22%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20match.slice%28%200%2C%204%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22CHILD%22%3A%20function%28%20match%20%29%20%7B%0A%0A%09%09%09/%2A%20matches%20from%20matchExpr%5B%22CHILD%22%5D%0A%09%09%09%091%20type%20%28only%7Cnth%7C...%29%0A%09%09%09%092%20what%20%28child%7Cof-type%29%0A%09%09%09%093%20argument%20%28even%7Codd%7C%5Cd%2A%7C%5Cd%2An%28%5B%2B-%5D%5Cd%2B%29%3F%7C...%29%0A%09%09%09%094%20xn-component%20of%20xn%2By%20argument%20%28%5B%2B-%5D%3F%5Cd%2An%7C%29%0A%09%09%09%095%20sign%20of%20xn-component%0A%09%09%09%096%20x%20of%20xn-component%0A%09%09%09%097%20sign%20of%20y-component%0A%09%09%09%098%20y%20of%20y-component%0A%09%09%09%2A/%0A%09%09%09match%5B%201%20%5D%20%3D%20match%5B%201%20%5D.toLowerCase%28%29%3B%0A%0A%09%09%09if%20%28%20match%5B%201%20%5D.slice%28%200%2C%203%20%29%20%3D%3D%3D%20%22nth%22%20%29%20%7B%0A%0A%09%09%09%09//%20nth-%2A%20requires%20argument%0A%09%09%09%09if%20%28%20%21match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09%09Sizzle.error%28%20match%5B%200%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20numeric%20x%20and%20y%20parameters%20for%20Expr.filter.CHILD%0A%09%09%09%09//%20remember%20that%20false/true%20cast%20respectively%20to%200/1%0A%09%09%09%09match%5B%204%20%5D%20%3D%20%2B%28%20match%5B%204%20%5D%20%3F%0A%09%09%09%09%09match%5B%205%20%5D%20%2B%20%28%20match%5B%206%20%5D%20%7C%7C%201%20%29%20%3A%0A%09%09%09%09%092%20%2A%20%28%20match%5B%203%20%5D%20%3D%3D%3D%20%22even%22%20%7C%7C%20match%5B%203%20%5D%20%3D%3D%3D%20%22odd%22%20%29%20%29%3B%0A%09%09%09%09match%5B%205%20%5D%20%3D%20%2B%28%20%28%20match%5B%207%20%5D%20%2B%20match%5B%208%20%5D%20%29%20%7C%7C%20match%5B%203%20%5D%20%3D%3D%3D%20%22odd%22%20%29%3B%0A%0A%09%09%09%09//%20other%20types%20prohibit%20arguments%0A%09%09%09%7D%20else%20if%20%28%20match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09Sizzle.error%28%20match%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20match%3B%0A%09%09%7D%2C%0A%0A%09%09%22PSEUDO%22%3A%20function%28%20match%20%29%20%7B%0A%09%09%09var%20excess%2C%0A%09%09%09%09unquoted%20%3D%20%21match%5B%206%20%5D%20%26%26%20match%5B%202%20%5D%3B%0A%0A%09%09%09if%20%28%20matchExpr%5B%20%22CHILD%22%20%5D.test%28%20match%5B%200%20%5D%20%29%20%29%20%7B%0A%09%09%09%09return%20null%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Accept%20quoted%20arguments%20as-is%0A%09%09%09if%20%28%20match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09match%5B%202%20%5D%20%3D%20match%5B%204%20%5D%20%7C%7C%20match%5B%205%20%5D%20%7C%7C%20%22%22%3B%0A%0A%09%09%09//%20Strip%20excess%20characters%20from%20unquoted%20arguments%0A%09%09%09%7D%20else%20if%20%28%20unquoted%20%26%26%20rpseudo.test%28%20unquoted%20%29%20%26%26%0A%0A%09%09%09%09//%20Get%20excess%20from%20tokenize%20%28recursively%29%0A%09%09%09%09%28%20excess%20%3D%20tokenize%28%20unquoted%2C%20true%20%29%20%29%20%26%26%0A%0A%09%09%09%09//%20advance%20to%20the%20next%20closing%20parenthesis%0A%09%09%09%09%28%20excess%20%3D%20unquoted.indexOf%28%20%22%29%22%2C%20unquoted.length%20-%20excess%20%29%20-%20unquoted.length%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20excess%20is%20a%20negative%20index%0A%09%09%09%09match%5B%200%20%5D%20%3D%20match%5B%200%20%5D.slice%28%200%2C%20excess%20%29%3B%0A%09%09%09%09match%5B%202%20%5D%20%3D%20unquoted.slice%28%200%2C%20excess%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Return%20only%20captures%20needed%20by%20the%20pseudo%20filter%20method%20%28type%20and%20argument%29%0A%09%09%09return%20match.slice%28%200%2C%203%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09filter%3A%20%7B%0A%0A%09%09%22TAG%22%3A%20function%28%20nodeNameSelector%20%29%20%7B%0A%09%09%09var%20nodeName%20%3D%20nodeNameSelector.replace%28%20runescape%2C%20funescape%20%29.toLowerCase%28%29%3B%0A%09%09%09return%20nodeNameSelector%20%3D%3D%3D%20%22%2A%22%20%3F%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%20%3A%0A%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09return%20elem.nodeName%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20nodeName%3B%0A%09%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22CLASS%22%3A%20function%28%20className%20%29%20%7B%0A%09%09%09var%20pattern%20%3D%20classCache%5B%20className%20%2B%20%22%20%22%20%5D%3B%0A%0A%09%09%09return%20pattern%20%7C%7C%0A%09%09%09%09%28%20pattern%20%3D%20new%20RegExp%28%20%22%28%5E%7C%22%20%2B%20whitespace%20%2B%0A%09%09%09%09%09%22%29%22%20%2B%20className%20%2B%20%22%28%22%20%2B%20whitespace%20%2B%20%22%7C%24%29%22%20%29%20%29%20%26%26%20classCache%28%0A%09%09%09%09%09%09className%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09return%20pattern.test%28%0A%09%09%09%09%09%09%09%09typeof%20elem.className%20%3D%3D%3D%20%22string%22%20%26%26%20elem.className%20%7C%7C%0A%09%09%09%09%09%09%09%09typeof%20elem.getAttribute%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%09%09%09%09%09%09elem.getAttribute%28%20%22class%22%20%29%20%7C%7C%0A%09%09%09%09%09%09%09%09%22%22%0A%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22ATTR%22%3A%20function%28%20name%2C%20operator%2C%20check%20%29%20%7B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20result%20%3D%20Sizzle.attr%28%20elem%2C%20name%20%29%3B%0A%0A%09%09%09%09if%20%28%20result%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09return%20operator%20%3D%3D%3D%20%22%21%3D%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28%20%21operator%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09result%20%2B%3D%20%22%22%3B%0A%0A%09%09%09%09/%2A%20eslint-disable%20max-len%20%2A/%0A%0A%09%09%09%09return%20operator%20%3D%3D%3D%20%22%3D%22%20%3F%20result%20%3D%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%21%3D%22%20%3F%20result%20%21%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%5E%3D%22%20%3F%20check%20%26%26%20result.indexOf%28%20check%20%29%20%3D%3D%3D%200%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%2A%3D%22%20%3F%20check%20%26%26%20result.indexOf%28%20check%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%24%3D%22%20%3F%20check%20%26%26%20result.slice%28%20-check.length%20%29%20%3D%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22~%3D%22%20%3F%20%28%20%22%20%22%20%2B%20result.replace%28%20rwhitespace%2C%20%22%20%22%20%29%20%2B%20%22%20%22%20%29.indexOf%28%20check%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%7C%3D%22%20%3F%20result%20%3D%3D%3D%20check%20%7C%7C%20result.slice%28%200%2C%20check.length%20%2B%201%20%29%20%3D%3D%3D%20check%20%2B%20%22-%22%20%3A%0A%09%09%09%09%09false%3B%0A%09%09%09%09/%2A%20eslint-enable%20max-len%20%2A/%0A%0A%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22CHILD%22%3A%20function%28%20type%2C%20what%2C%20_argument%2C%20first%2C%20last%20%29%20%7B%0A%09%09%09var%20simple%20%3D%20type.slice%28%200%2C%203%20%29%20%21%3D%3D%20%22nth%22%2C%0A%09%09%09%09forward%20%3D%20type.slice%28%20-4%20%29%20%21%3D%3D%20%22last%22%2C%0A%09%09%09%09ofType%20%3D%20what%20%3D%3D%3D%20%22of-type%22%3B%0A%0A%09%09%09return%20first%20%3D%3D%3D%201%20%26%26%20last%20%3D%3D%3D%200%20%3F%0A%0A%09%09%09%09//%20Shortcut%20for%20%3Anth-%2A%28n%29%0A%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09return%20%21%21elem.parentNode%3B%0A%09%09%09%09%7D%20%3A%0A%0A%09%09%09%09function%28%20elem%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09var%20cache%2C%20uniqueCache%2C%20outerCache%2C%20node%2C%20nodeIndex%2C%20start%2C%0A%09%09%09%09%09%09dir%20%3D%20simple%20%21%3D%3D%20forward%20%3F%20%22nextSibling%22%20%3A%20%22previousSibling%22%2C%0A%09%09%09%09%09%09parent%20%3D%20elem.parentNode%2C%0A%09%09%09%09%09%09name%20%3D%20ofType%20%26%26%20elem.nodeName.toLowerCase%28%29%2C%0A%09%09%09%09%09%09useCache%20%3D%20%21xml%20%26%26%20%21ofType%2C%0A%09%09%09%09%09%09diff%20%3D%20false%3B%0A%0A%09%09%09%09%09if%20%28%20parent%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20%3A%28first%7Clast%7Conly%29-%28child%7Cof-type%29%0A%09%09%09%09%09%09if%20%28%20simple%20%29%20%7B%0A%09%09%09%09%09%09%09while%20%28%20dir%20%29%20%7B%0A%09%09%09%09%09%09%09%09node%20%3D%20elem%3B%0A%09%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20node%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09if%20%28%20ofType%20%3F%0A%09%09%09%09%09%09%09%09%09%09node.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name%20%3A%0A%09%09%09%09%09%09%09%09%09%09node.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09return%20false%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09//%20Reverse%20direction%20for%20%3Aonly-%2A%20%28if%20we%20haven%27t%20yet%20done%20so%29%0A%09%09%09%09%09%09%09%09start%20%3D%20dir%20%3D%20type%20%3D%3D%3D%20%22only%22%20%26%26%20%21start%20%26%26%20%22nextSibling%22%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09start%20%3D%20%5B%20forward%20%3F%20parent.firstChild%20%3A%20parent.lastChild%20%5D%3B%0A%0A%09%09%09%09%09%09//%20non-xml%20%3Anth-child%28...%29%20stores%20cache%20data%20on%20%60parent%60%0A%09%09%09%09%09%09if%20%28%20forward%20%26%26%20useCache%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Seek%20%60elem%60%20from%20a%20previously-cached%20index%0A%0A%09%09%09%09%09%09%09//%20...in%20a%20gzip-friendly%20way%0A%09%09%09%09%09%09%09node%20%3D%20parent%3B%0A%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%20%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09cache%20%3D%20uniqueCache%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09%09%09nodeIndex%20%3D%20cache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20cache%5B%201%20%5D%3B%0A%09%09%09%09%09%09%09diff%20%3D%20nodeIndex%20%26%26%20cache%5B%202%20%5D%3B%0A%09%09%09%09%09%09%09node%20%3D%20nodeIndex%20%26%26%20parent.childNodes%5B%20nodeIndex%20%5D%3B%0A%0A%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20%2B%2BnodeIndex%20%26%26%20node%20%26%26%20node%5B%20dir%20%5D%20%7C%7C%0A%0A%09%09%09%09%09%09%09%09//%20Fallback%20to%20seeking%20%60elem%60%20from%20the%20start%0A%09%09%09%09%09%09%09%09%28%20diff%20%3D%20nodeIndex%20%3D%200%20%29%20%7C%7C%20start.pop%28%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20When%20found%2C%20cache%20indexes%20on%20%60parent%60%20and%20break%0A%09%09%09%09%09%09%09%09if%20%28%20node.nodeType%20%3D%3D%3D%201%20%26%26%20%2B%2Bdiff%20%26%26%20node%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09uniqueCache%5B%20type%20%5D%20%3D%20%5B%20dirruns%2C%20nodeIndex%2C%20diff%20%5D%3B%0A%09%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Use%20previously-cached%20element%20index%20if%20available%0A%09%09%09%09%09%09%09if%20%28%20useCache%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20...in%20a%20gzip-friendly%20way%0A%09%09%09%09%09%09%09%09node%20%3D%20elem%3B%0A%09%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%20%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09cache%20%3D%20uniqueCache%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09%09%09%09nodeIndex%20%3D%20cache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20cache%5B%201%20%5D%3B%0A%09%09%09%09%09%09%09%09diff%20%3D%20nodeIndex%3B%0A%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09//%20xml%20%3Anth-child%28...%29%0A%09%09%09%09%09%09%09//%20or%20%3Anth-last-child%28...%29%20or%20%3Anth%28-last%29%3F-of-type%28...%29%0A%09%09%09%09%09%09%09if%20%28%20diff%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Use%20the%20same%20loop%20as%20above%20to%20seek%20%60elem%60%20from%20the%20start%0A%09%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20%2B%2BnodeIndex%20%26%26%20node%20%26%26%20node%5B%20dir%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%28%20diff%20%3D%20nodeIndex%20%3D%200%20%29%20%7C%7C%20start.pop%28%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09if%20%28%20%28%20ofType%20%3F%0A%09%09%09%09%09%09%09%09%09%09node.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name%20%3A%0A%09%09%09%09%09%09%09%09%09%09node.nodeType%20%3D%3D%3D%201%20%29%20%26%26%0A%09%09%09%09%09%09%09%09%09%09%2B%2Bdiff%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Cache%20the%20index%20of%20each%20encountered%20element%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20useCache%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09%09%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09uniqueCache%5B%20type%20%5D%20%3D%20%5B%20dirruns%2C%20diff%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20node%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09//%20Incorporate%20the%20offset%2C%20then%20check%20against%20cycle%20size%0A%09%09%09%09%09%09diff%20-%3D%20last%3B%0A%09%09%09%09%09%09return%20diff%20%3D%3D%3D%20first%20%7C%7C%20%28%20diff%20%25%20first%20%3D%3D%3D%200%20%26%26%20diff%20/%20first%20%3E%3D%200%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22PSEUDO%22%3A%20function%28%20pseudo%2C%20argument%20%29%20%7B%0A%0A%09%09%09//%20pseudo-class%20names%20are%20case-insensitive%0A%09%09%09//%20http%3A//www.w3.org/TR/selectors/%23pseudo-classes%0A%09%09%09//%20Prioritize%20by%20case%20sensitivity%20in%20case%20custom%20pseudos%20are%20added%20with%20uppercase%20letters%0A%09%09%09//%20Remember%20that%20setFilters%20inherits%20from%20pseudos%0A%09%09%09var%20args%2C%0A%09%09%09%09fn%20%3D%20Expr.pseudos%5B%20pseudo%20%5D%20%7C%7C%20Expr.setFilters%5B%20pseudo.toLowerCase%28%29%20%5D%20%7C%7C%0A%09%09%09%09%09Sizzle.error%28%20%22unsupported%20pseudo%3A%20%22%20%2B%20pseudo%20%29%3B%0A%0A%09%09%09//%20The%20user%20may%20use%20createPseudo%20to%20indicate%20that%0A%09%09%09//%20arguments%20are%20needed%20to%20create%20the%20filter%20function%0A%09%09%09//%20just%20as%20Sizzle%20does%0A%09%09%09if%20%28%20fn%5B%20expando%20%5D%20%29%20%7B%0A%09%09%09%09return%20fn%28%20argument%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20But%20maintain%20support%20for%20old%20signatures%0A%09%09%09if%20%28%20fn.length%20%3E%201%20%29%20%7B%0A%09%09%09%09args%20%3D%20%5B%20pseudo%2C%20pseudo%2C%20%22%22%2C%20argument%20%5D%3B%0A%09%09%09%09return%20Expr.setFilters.hasOwnProperty%28%20pseudo.toLowerCase%28%29%20%29%20%3F%0A%09%09%09%09%09markFunction%28%20function%28%20seed%2C%20matches%20%29%20%7B%0A%09%09%09%09%09%09var%20idx%2C%0A%09%09%09%09%09%09%09matched%20%3D%20fn%28%20seed%2C%20argument%20%29%2C%0A%09%09%09%09%09%09%09i%20%3D%20matched.length%3B%0A%09%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09%09idx%20%3D%20indexOf%28%20seed%2C%20matched%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%09%09seed%5B%20idx%20%5D%20%3D%20%21%28%20matches%5B%20idx%20%5D%20%3D%20matched%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09%09return%20fn%28%20elem%2C%200%2C%20args%20%29%3B%0A%09%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20fn%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09pseudos%3A%20%7B%0A%0A%09%09//%20Potentially%20complex%20pseudos%0A%09%09%22not%22%3A%20markFunction%28%20function%28%20selector%20%29%20%7B%0A%0A%09%09%09//%20Trim%20the%20selector%20passed%20to%20compile%0A%09%09%09//%20to%20avoid%20treating%20leading%20and%20trailing%0A%09%09%09//%20spaces%20as%20combinators%0A%09%09%09var%20input%20%3D%20%5B%5D%2C%0A%09%09%09%09results%20%3D%20%5B%5D%2C%0A%09%09%09%09matcher%20%3D%20compile%28%20selector.replace%28%20rtrim%2C%20%22%241%22%20%29%20%29%3B%0A%0A%09%09%09return%20matcher%5B%20expando%20%5D%20%3F%0A%09%09%09%09markFunction%28%20function%28%20seed%2C%20matches%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09var%20elem%2C%0A%09%09%09%09%09%09unmatched%20%3D%20matcher%28%20seed%2C%20null%2C%20xml%2C%20%5B%5D%20%29%2C%0A%09%09%09%09%09%09i%20%3D%20seed.length%3B%0A%0A%09%09%09%09%09//%20Match%20elements%20unmatched%20by%20%60matcher%60%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20unmatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09seed%5B%20i%20%5D%20%3D%20%21%28%20matches%5B%20i%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09function%28%20elem%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09input%5B%200%20%5D%20%3D%20elem%3B%0A%09%09%09%09%09matcher%28%20input%2C%20null%2C%20xml%2C%20results%20%29%3B%0A%0A%09%09%09%09%09//%20Don%27t%20keep%20the%20element%20%28issue%20%23299%29%0A%09%09%09%09%09input%5B%200%20%5D%20%3D%20null%3B%0A%09%09%09%09%09return%20%21results.pop%28%29%3B%0A%09%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22has%22%3A%20markFunction%28%20function%28%20selector%20%29%20%7B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20Sizzle%28%20selector%2C%20elem%20%29.length%20%3E%200%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22contains%22%3A%20markFunction%28%20function%28%20text%20%29%20%7B%0A%09%09%09text%20%3D%20text.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20%28%20elem.textContent%20%7C%7C%20getText%28%20elem%20%29%20%29.indexOf%28%20text%20%29%20%3E%20-1%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09//%20%22Whether%20an%20element%20is%20represented%20by%20a%20%3Alang%28%29%20selector%0A%09%09//%20is%20based%20solely%20on%20the%20element%27s%20language%20value%0A%09%09//%20being%20equal%20to%20the%20identifier%20C%2C%0A%09%09//%20or%20beginning%20with%20the%20identifier%20C%20immediately%20followed%20by%20%22-%22.%0A%09%09//%20The%20matching%20of%20C%20against%20the%20element%27s%20language%20value%20is%20performed%20case-insensitively.%0A%09%09//%20The%20identifier%20C%20does%20not%20have%20to%20be%20a%20valid%20language%20name.%22%0A%09%09//%20http%3A//www.w3.org/TR/selectors/%23lang-pseudo%0A%09%09%22lang%22%3A%20markFunction%28%20function%28%20lang%20%29%20%7B%0A%0A%09%09%09//%20lang%20value%20must%20be%20a%20valid%20identifier%0A%09%09%09if%20%28%20%21ridentifier.test%28%20lang%20%7C%7C%20%22%22%20%29%20%29%20%7B%0A%09%09%09%09Sizzle.error%28%20%22unsupported%20lang%3A%20%22%20%2B%20lang%20%29%3B%0A%09%09%09%7D%0A%09%09%09lang%20%3D%20lang.replace%28%20runescape%2C%20funescape%20%29.toLowerCase%28%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20elemLang%3B%0A%09%09%09%09do%20%7B%0A%09%09%09%09%09if%20%28%20%28%20elemLang%20%3D%20documentIsHTML%20%3F%0A%09%09%09%09%09%09elem.lang%20%3A%0A%09%09%09%09%09%09elem.getAttribute%28%20%22xml%3Alang%22%20%29%20%7C%7C%20elem.getAttribute%28%20%22lang%22%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09elemLang%20%3D%20elemLang.toLowerCase%28%29%3B%0A%09%09%09%09%09%09return%20elemLang%20%3D%3D%3D%20lang%20%7C%7C%20elemLang.indexOf%28%20lang%20%2B%20%22-%22%20%29%20%3D%3D%3D%200%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20while%20%28%20%28%20elem%20%3D%20elem.parentNode%20%29%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%3B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09//%20Miscellaneous%0A%09%09%22target%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20hash%20%3D%20window.location%20%26%26%20window.location.hash%3B%0A%09%09%09return%20hash%20%26%26%20hash.slice%28%201%20%29%20%3D%3D%3D%20elem.id%3B%0A%09%09%7D%2C%0A%0A%09%09%22root%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20docElem%3B%0A%09%09%7D%2C%0A%0A%09%09%22focus%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20document.activeElement%20%26%26%0A%09%09%09%09%28%20%21document.hasFocus%20%7C%7C%20document.hasFocus%28%29%20%29%20%26%26%0A%09%09%09%09%21%21%28%20elem.type%20%7C%7C%20elem.href%20%7C%7C%20~elem.tabIndex%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Boolean%20properties%0A%09%09%22enabled%22%3A%20createDisabledPseudo%28%20false%20%29%2C%0A%09%09%22disabled%22%3A%20createDisabledPseudo%28%20true%20%29%2C%0A%0A%09%09%22checked%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20In%20CSS3%2C%20%3Achecked%20should%20return%20both%20checked%20and%20selected%20elements%0A%09%09%09//%20http%3A//www.w3.org/TR/2011/REC-css3-selectors-20110929/%23checked%0A%09%09%09var%20nodeName%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09%09return%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%26%26%20%21%21elem.checked%20%29%20%7C%7C%0A%09%09%09%09%28%20nodeName%20%3D%3D%3D%20%22option%22%20%26%26%20%21%21elem.selected%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22selected%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20Accessing%20this%20property%20makes%20selected-by-default%0A%09%09%09//%20options%20in%20Safari%20work%20properly%0A%09%09%09if%20%28%20elem.parentNode%20%29%20%7B%0A%09%09%09%09//%20eslint-disable-next-line%20no-unused-expressions%0A%09%09%09%09elem.parentNode.selectedIndex%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20elem.selected%20%3D%3D%3D%20true%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Contents%0A%09%09%22empty%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20http%3A//www.w3.org/TR/selectors/%23empty-pseudo%0A%09%09%09//%20%3Aempty%20is%20negated%20by%20element%20%281%29%20or%20content%20nodes%20%28text%3A%203%3B%20cdata%3A%204%3B%20entity%20ref%3A%205%29%2C%0A%09%09%09//%20%20%20but%20not%20by%20others%20%28comment%3A%208%3B%20processing%20instruction%3A%207%3B%20etc.%29%0A%09%09%09//%20nodeType%20%3C%206%20works%20because%20attributes%20%282%29%20do%20not%20appear%20as%20children%0A%09%09%09for%20%28%20elem%20%3D%20elem.firstChild%3B%20elem%3B%20elem%20%3D%20elem.nextSibling%20%29%20%7B%0A%09%09%09%09if%20%28%20elem.nodeType%20%3C%206%20%29%20%7B%0A%09%09%09%09%09return%20false%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20true%3B%0A%09%09%7D%2C%0A%0A%09%09%22parent%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%21Expr.pseudos%5B%20%22empty%22%20%5D%28%20elem%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Element/input%20types%0A%09%09%22header%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20rheader.test%28%20elem.nodeName%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22input%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20rinputs.test%28%20elem.nodeName%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22button%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09%09return%20name%20%3D%3D%3D%20%22input%22%20%26%26%20elem.type%20%3D%3D%3D%20%22button%22%20%7C%7C%20name%20%3D%3D%3D%20%22button%22%3B%0A%09%09%7D%2C%0A%0A%09%09%22text%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20attr%3B%0A%09%09%09return%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22input%22%20%26%26%0A%09%09%09%09elem.type%20%3D%3D%3D%20%22text%22%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20IE%3C8%0A%09%09%09%09//%20New%20HTML5%20attribute%20values%20%28e.g.%2C%20%22search%22%29%20appear%20with%20elem.type%20%3D%3D%3D%20%22text%22%0A%09%09%09%09%28%20%28%20attr%20%3D%20elem.getAttribute%28%20%22type%22%20%29%20%29%20%3D%3D%20null%20%7C%7C%0A%09%09%09%09%09attr.toLowerCase%28%29%20%3D%3D%3D%20%22text%22%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Position-in-collection%0A%09%09%22first%22%3A%20createPositionalPseudo%28%20function%28%29%20%7B%0A%09%09%09return%20%5B%200%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22last%22%3A%20createPositionalPseudo%28%20function%28%20_matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09return%20%5B%20length%20-%201%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22eq%22%3A%20createPositionalPseudo%28%20function%28%20_matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09return%20%5B%20argument%20%3C%200%20%3F%20argument%20%2B%20length%20%3A%20argument%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22even%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%20%2B%3D%202%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22odd%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09var%20i%20%3D%201%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%20%2B%3D%202%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22lt%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09var%20i%20%3D%20argument%20%3C%200%20%3F%0A%09%09%09%09argument%20%2B%20length%20%3A%0A%09%09%09%09argument%20%3E%20length%20%3F%0A%09%09%09%09%09length%20%3A%0A%09%09%09%09%09argument%3B%0A%09%09%09for%20%28%20%3B%20--i%20%3E%3D%200%3B%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22gt%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09var%20i%20%3D%20argument%20%3C%200%20%3F%20argument%20%2B%20length%20%3A%20argument%3B%0A%09%09%09for%20%28%20%3B%20%2B%2Bi%20%3C%20length%3B%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%0A%09%7D%0A%7D%3B%0A%0AExpr.pseudos%5B%20%22nth%22%20%5D%20%3D%20Expr.pseudos%5B%20%22eq%22%20%5D%3B%0A%0A//%20Add%20button/input%20type%20pseudos%0Afor%20%28%20i%20in%20%7B%20radio%3A%20true%2C%20checkbox%3A%20true%2C%20file%3A%20true%2C%20password%3A%20true%2C%20image%3A%20true%20%7D%20%29%20%7B%0A%09Expr.pseudos%5B%20i%20%5D%20%3D%20createInputPseudo%28%20i%20%29%3B%0A%7D%0Afor%20%28%20i%20in%20%7B%20submit%3A%20true%2C%20reset%3A%20true%20%7D%20%29%20%7B%0A%09Expr.pseudos%5B%20i%20%5D%20%3D%20createButtonPseudo%28%20i%20%29%3B%0A%7D%0A%0A//%20Easy%20API%20for%20creating%20new%20setFilters%0Afunction%20setFilters%28%29%20%7B%7D%0AsetFilters.prototype%20%3D%20Expr.filters%20%3D%20Expr.pseudos%3B%0AExpr.setFilters%20%3D%20new%20setFilters%28%29%3B%0A%0Atokenize%20%3D%20Sizzle.tokenize%20%3D%20function%28%20selector%2C%20parseOnly%20%29%20%7B%0A%09var%20matched%2C%20match%2C%20tokens%2C%20type%2C%0A%09%09soFar%2C%20groups%2C%20preFilters%2C%0A%09%09cached%20%3D%20tokenCache%5B%20selector%20%2B%20%22%20%22%20%5D%3B%0A%0A%09if%20%28%20cached%20%29%20%7B%0A%09%09return%20parseOnly%20%3F%200%20%3A%20cached.slice%28%200%20%29%3B%0A%09%7D%0A%0A%09soFar%20%3D%20selector%3B%0A%09groups%20%3D%20%5B%5D%3B%0A%09preFilters%20%3D%20Expr.preFilter%3B%0A%0A%09while%20%28%20soFar%20%29%20%7B%0A%0A%09%09//%20Comma%20and%20first%20run%0A%09%09if%20%28%20%21matched%20%7C%7C%20%28%20match%20%3D%20rcomma.exec%28%20soFar%20%29%20%29%20%29%20%7B%0A%09%09%09if%20%28%20match%20%29%20%7B%0A%0A%09%09%09%09//%20Don%27t%20consume%20trailing%20commas%20as%20valid%0A%09%09%09%09soFar%20%3D%20soFar.slice%28%20match%5B%200%20%5D.length%20%29%20%7C%7C%20soFar%3B%0A%09%09%09%7D%0A%09%09%09groups.push%28%20%28%20tokens%20%3D%20%5B%5D%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09matched%20%3D%20false%3B%0A%0A%09%09//%20Combinators%0A%09%09if%20%28%20%28%20match%20%3D%20rcombinators.exec%28%20soFar%20%29%20%29%20%29%20%7B%0A%09%09%09matched%20%3D%20match.shift%28%29%3B%0A%09%09%09tokens.push%28%20%7B%0A%09%09%09%09value%3A%20matched%2C%0A%0A%09%09%09%09//%20Cast%20descendant%20combinators%20to%20space%0A%09%09%09%09type%3A%20match%5B%200%20%5D.replace%28%20rtrim%2C%20%22%20%22%20%29%0A%09%09%09%7D%20%29%3B%0A%09%09%09soFar%20%3D%20soFar.slice%28%20matched.length%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Filters%0A%09%09for%20%28%20type%20in%20Expr.filter%20%29%20%7B%0A%09%09%09if%20%28%20%28%20match%20%3D%20matchExpr%5B%20type%20%5D.exec%28%20soFar%20%29%20%29%20%26%26%20%28%20%21preFilters%5B%20type%20%5D%20%7C%7C%0A%09%09%09%09%28%20match%20%3D%20preFilters%5B%20type%20%5D%28%20match%20%29%20%29%20%29%20%29%20%7B%0A%09%09%09%09matched%20%3D%20match.shift%28%29%3B%0A%09%09%09%09tokens.push%28%20%7B%0A%09%09%09%09%09value%3A%20matched%2C%0A%09%09%09%09%09type%3A%20type%2C%0A%09%09%09%09%09matches%3A%20match%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%09soFar%20%3D%20soFar.slice%28%20matched.length%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20%21matched%20%29%20%7B%0A%09%09%09break%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20length%20of%20the%20invalid%20excess%0A%09//%20if%20we%27re%20just%20parsing%0A%09//%20Otherwise%2C%20throw%20an%20error%20or%20return%20tokens%0A%09return%20parseOnly%20%3F%0A%09%09soFar.length%20%3A%0A%09%09soFar%20%3F%0A%09%09%09Sizzle.error%28%20selector%20%29%20%3A%0A%0A%09%09%09//%20Cache%20the%20tokens%0A%09%09%09tokenCache%28%20selector%2C%20groups%20%29.slice%28%200%20%29%3B%0A%7D%3B%0A%0Afunction%20toSelector%28%20tokens%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20tokens.length%2C%0A%09%09selector%20%3D%20%22%22%3B%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09selector%20%2B%3D%20tokens%5B%20i%20%5D.value%3B%0A%09%7D%0A%09return%20selector%3B%0A%7D%0A%0Afunction%20addCombinator%28%20matcher%2C%20combinator%2C%20base%20%29%20%7B%0A%09var%20dir%20%3D%20combinator.dir%2C%0A%09%09skip%20%3D%20combinator.next%2C%0A%09%09key%20%3D%20skip%20%7C%7C%20dir%2C%0A%09%09checkNonElements%20%3D%20base%20%26%26%20key%20%3D%3D%3D%20%22parentNode%22%2C%0A%09%09doneName%20%3D%20done%2B%2B%3B%0A%0A%09return%20combinator.first%20%3F%0A%0A%09%09//%20Check%20against%20closest%20ancestor/preceding%20element%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09return%20matcher%28%20elem%2C%20context%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%20%3A%0A%0A%09%09//%20Check%20against%20all%20ancestor/preceding%20elements%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20oldCache%2C%20uniqueCache%2C%20outerCache%2C%0A%09%09%09%09newCache%20%3D%20%5B%20dirruns%2C%20doneName%20%5D%3B%0A%0A%09%09%09//%20We%20can%27t%20set%20arbitrary%20data%20on%20XML%20nodes%2C%20so%20they%20don%27t%20benefit%20from%20combinator%20caching%0A%09%09%09if%20%28%20xml%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20matcher%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09%09outerCache%20%3D%20elem%5B%20expando%20%5D%20%7C%7C%20%28%20elem%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20elem.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%28%20outerCache%5B%20elem.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09if%20%28%20skip%20%26%26%20skip%20%3D%3D%3D%20elem.nodeName.toLowerCase%28%29%20%29%20%7B%0A%09%09%09%09%09%09%09elem%20%3D%20elem%5B%20dir%20%5D%20%7C%7C%20elem%3B%0A%09%09%09%09%09%09%7D%20else%20if%20%28%20%28%20oldCache%20%3D%20uniqueCache%5B%20key%20%5D%20%29%20%26%26%0A%09%09%09%09%09%09%09oldCache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20oldCache%5B%201%20%5D%20%3D%3D%3D%20doneName%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Assign%20to%20newCache%20so%20results%20back-propagate%20to%20previous%20elements%0A%09%09%09%09%09%09%09return%20%28%20newCache%5B%202%20%5D%20%3D%20oldCache%5B%202%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Reuse%20newcache%20so%20results%20back-propagate%20to%20previous%20elements%0A%09%09%09%09%09%09%09uniqueCache%5B%20key%20%5D%20%3D%20newCache%3B%0A%0A%09%09%09%09%09%09%09//%20A%20match%20means%20we%27re%20done%3B%20a%20fail%20means%20we%20have%20to%20keep%20checking%0A%09%09%09%09%09%09%09if%20%28%20%28%20newCache%5B%202%20%5D%20%3D%20matcher%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%3B%0A%7D%0A%0Afunction%20elementMatcher%28%20matchers%20%29%20%7B%0A%09return%20matchers.length%20%3E%201%20%3F%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20i%20%3D%20matchers.length%3B%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20%21matchers%5B%20i%20%5D%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09return%20false%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20true%3B%0A%09%09%7D%20%3A%0A%09%09matchers%5B%200%20%5D%3B%0A%7D%0A%0Afunction%20multipleContexts%28%20selector%2C%20contexts%2C%20results%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20contexts.length%3B%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09Sizzle%28%20selector%2C%20contexts%5B%20i%20%5D%2C%20results%20%29%3B%0A%09%7D%0A%09return%20results%3B%0A%7D%0A%0Afunction%20condense%28%20unmatched%2C%20map%2C%20filter%2C%20context%2C%20xml%20%29%20%7B%0A%09var%20elem%2C%0A%09%09newUnmatched%20%3D%20%5B%5D%2C%0A%09%09i%20%3D%200%2C%0A%09%09len%20%3D%20unmatched.length%2C%0A%09%09mapped%20%3D%20map%20%21%3D%20null%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20elem%20%3D%20unmatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20%21filter%20%7C%7C%20filter%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09newUnmatched.push%28%20elem%20%29%3B%0A%09%09%09%09if%20%28%20mapped%20%29%20%7B%0A%09%09%09%09%09map.push%28%20i%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20newUnmatched%3B%0A%7D%0A%0Afunction%20setMatcher%28%20preFilter%2C%20selector%2C%20matcher%2C%20postFilter%2C%20postFinder%2C%20postSelector%20%29%20%7B%0A%09if%20%28%20postFilter%20%26%26%20%21postFilter%5B%20expando%20%5D%20%29%20%7B%0A%09%09postFilter%20%3D%20setMatcher%28%20postFilter%20%29%3B%0A%09%7D%0A%09if%20%28%20postFinder%20%26%26%20%21postFinder%5B%20expando%20%5D%20%29%20%7B%0A%09%09postFinder%20%3D%20setMatcher%28%20postFinder%2C%20postSelector%20%29%3B%0A%09%7D%0A%09return%20markFunction%28%20function%28%20seed%2C%20results%2C%20context%2C%20xml%20%29%20%7B%0A%09%09var%20temp%2C%20i%2C%20elem%2C%0A%09%09%09preMap%20%3D%20%5B%5D%2C%0A%09%09%09postMap%20%3D%20%5B%5D%2C%0A%09%09%09preexisting%20%3D%20results.length%2C%0A%0A%09%09%09//%20Get%20initial%20elements%20from%20seed%20or%20context%0A%09%09%09elems%20%3D%20seed%20%7C%7C%20multipleContexts%28%0A%09%09%09%09selector%20%7C%7C%20%22%2A%22%2C%0A%09%09%09%09context.nodeType%20%3F%20%5B%20context%20%5D%20%3A%20context%2C%0A%09%09%09%09%5B%5D%0A%09%09%09%29%2C%0A%0A%09%09%09//%20Prefilter%20to%20get%20matcher%20input%2C%20preserving%20a%20map%20for%20seed-results%20synchronization%0A%09%09%09matcherIn%20%3D%20preFilter%20%26%26%20%28%20seed%20%7C%7C%20%21selector%20%29%20%3F%0A%09%09%09%09condense%28%20elems%2C%20preMap%2C%20preFilter%2C%20context%2C%20xml%20%29%20%3A%0A%09%09%09%09elems%2C%0A%0A%09%09%09matcherOut%20%3D%20matcher%20%3F%0A%0A%09%09%09%09//%20If%20we%20have%20a%20postFinder%2C%20or%20filtered%20seed%2C%20or%20non-seed%20postFilter%20or%20preexisting%20results%2C%0A%09%09%09%09postFinder%20%7C%7C%20%28%20seed%20%3F%20preFilter%20%3A%20preexisting%20%7C%7C%20postFilter%20%29%20%3F%0A%0A%09%09%09%09%09//%20...intermediate%20processing%20is%20necessary%0A%09%09%09%09%09%5B%5D%20%3A%0A%0A%09%09%09%09%09//%20...otherwise%20use%20results%20directly%0A%09%09%09%09%09results%20%3A%0A%09%09%09%09matcherIn%3B%0A%0A%09%09//%20Find%20primary%20matches%0A%09%09if%20%28%20matcher%20%29%20%7B%0A%09%09%09matcher%28%20matcherIn%2C%20matcherOut%2C%20context%2C%20xml%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20postFilter%0A%09%09if%20%28%20postFilter%20%29%20%7B%0A%09%09%09temp%20%3D%20condense%28%20matcherOut%2C%20postMap%20%29%3B%0A%09%09%09postFilter%28%20temp%2C%20%5B%5D%2C%20context%2C%20xml%20%29%3B%0A%0A%09%09%09//%20Un-match%20failing%20elements%20by%20moving%20them%20back%20to%20matcherIn%0A%09%09%09i%20%3D%20temp.length%3B%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20%28%20elem%20%3D%20temp%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09matcherOut%5B%20postMap%5B%20i%20%5D%20%5D%20%3D%20%21%28%20matcherIn%5B%20postMap%5B%20i%20%5D%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20seed%20%29%20%7B%0A%09%09%09if%20%28%20postFinder%20%7C%7C%20preFilter%20%29%20%7B%0A%09%09%09%09if%20%28%20postFinder%20%29%20%7B%0A%0A%09%09%09%09%09//%20Get%20the%20final%20matcherOut%20by%20condensing%20this%20intermediate%20into%20postFinder%20contexts%0A%09%09%09%09%09temp%20%3D%20%5B%5D%3B%0A%09%09%09%09%09i%20%3D%20matcherOut.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20matcherOut%5B%20i%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Restore%20matcherIn%20since%20elem%20is%20not%20yet%20a%20final%20match%0A%09%09%09%09%09%09%09temp.push%28%20%28%20matcherIn%5B%20i%20%5D%20%3D%20elem%20%29%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09postFinder%28%20null%2C%20%28%20matcherOut%20%3D%20%5B%5D%20%29%2C%20temp%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Move%20matched%20elements%20from%20seed%20to%20results%20to%20keep%20them%20synchronized%0A%09%09%09%09i%20%3D%20matcherOut.length%3B%0A%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20matcherOut%5B%20i%20%5D%20%29%20%26%26%0A%09%09%09%09%09%09%28%20temp%20%3D%20postFinder%20%3F%20indexOf%28%20seed%2C%20elem%20%29%20%3A%20preMap%5B%20i%20%5D%20%29%20%3E%20-1%20%29%20%7B%0A%0A%09%09%09%09%09%09seed%5B%20temp%20%5D%20%3D%20%21%28%20results%5B%20temp%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Add%20elements%20to%20results%2C%20through%20postFinder%20if%20defined%0A%09%09%7D%20else%20%7B%0A%09%09%09matcherOut%20%3D%20condense%28%0A%09%09%09%09matcherOut%20%3D%3D%3D%20results%20%3F%0A%09%09%09%09%09matcherOut.splice%28%20preexisting%2C%20matcherOut.length%20%29%20%3A%0A%09%09%09%09%09matcherOut%0A%09%09%09%29%3B%0A%09%09%09if%20%28%20postFinder%20%29%20%7B%0A%09%09%09%09postFinder%28%20null%2C%20results%2C%20matcherOut%2C%20xml%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09push.apply%28%20results%2C%20matcherOut%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0Afunction%20matcherFromTokens%28%20tokens%20%29%20%7B%0A%09var%20checkContext%2C%20matcher%2C%20j%2C%0A%09%09len%20%3D%20tokens.length%2C%0A%09%09leadingRelative%20%3D%20Expr.relative%5B%20tokens%5B%200%20%5D.type%20%5D%2C%0A%09%09implicitRelative%20%3D%20leadingRelative%20%7C%7C%20Expr.relative%5B%20%22%20%22%20%5D%2C%0A%09%09i%20%3D%20leadingRelative%20%3F%201%20%3A%200%2C%0A%0A%09%09//%20The%20foundational%20matcher%20ensures%20that%20elements%20are%20reachable%20from%20top-level%20context%28s%29%0A%09%09matchContext%20%3D%20addCombinator%28%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20checkContext%3B%0A%09%09%7D%2C%20implicitRelative%2C%20true%20%29%2C%0A%09%09matchAnyContext%20%3D%20addCombinator%28%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20indexOf%28%20checkContext%2C%20elem%20%29%20%3E%20-1%3B%0A%09%09%7D%2C%20implicitRelative%2C%20true%20%29%2C%0A%09%09matchers%20%3D%20%5B%20function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20ret%20%3D%20%28%20%21leadingRelative%20%26%26%20%28%20xml%20%7C%7C%20context%20%21%3D%3D%20outermostContext%20%29%20%29%20%7C%7C%20%28%0A%09%09%09%09%28%20checkContext%20%3D%20context%20%29.nodeType%20%3F%0A%09%09%09%09%09matchContext%28%20elem%2C%20context%2C%20xml%20%29%20%3A%0A%09%09%09%09%09matchAnyContext%28%20elem%2C%20context%2C%20xml%20%29%20%29%3B%0A%0A%09%09%09//%20Avoid%20hanging%20onto%20element%20%28issue%20%23299%29%0A%09%09%09checkContext%20%3D%20null%3B%0A%09%09%09return%20ret%3B%0A%09%09%7D%20%5D%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20matcher%20%3D%20Expr.relative%5B%20tokens%5B%20i%20%5D.type%20%5D%20%29%20%29%20%7B%0A%09%09%09matchers%20%3D%20%5B%20addCombinator%28%20elementMatcher%28%20matchers%20%29%2C%20matcher%20%29%20%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09matcher%20%3D%20Expr.filter%5B%20tokens%5B%20i%20%5D.type%20%5D.apply%28%20null%2C%20tokens%5B%20i%20%5D.matches%20%29%3B%0A%0A%09%09%09//%20Return%20special%20upon%20seeing%20a%20positional%20matcher%0A%09%09%09if%20%28%20matcher%5B%20expando%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Find%20the%20next%20relative%20operator%20%28if%20any%29%20for%20proper%20handling%0A%09%09%09%09j%20%3D%20%2B%2Bi%3B%0A%09%09%09%09for%20%28%20%3B%20j%20%3C%20len%3B%20j%2B%2B%20%29%20%7B%0A%09%09%09%09%09if%20%28%20Expr.relative%5B%20tokens%5B%20j%20%5D.type%20%5D%20%29%20%7B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20setMatcher%28%0A%09%09%09%09%09i%20%3E%201%20%26%26%20elementMatcher%28%20matchers%20%29%2C%0A%09%09%09%09%09i%20%3E%201%20%26%26%20toSelector%28%0A%0A%09%09%09%09%09//%20If%20the%20preceding%20token%20was%20a%20descendant%20combinator%2C%20insert%20an%20implicit%20any-element%20%60%2A%60%0A%09%09%09%09%09tokens%0A%09%09%09%09%09%09.slice%28%200%2C%20i%20-%201%20%29%0A%09%09%09%09%09%09.concat%28%20%7B%20value%3A%20tokens%5B%20i%20-%202%20%5D.type%20%3D%3D%3D%20%22%20%22%20%3F%20%22%2A%22%20%3A%20%22%22%20%7D%20%29%0A%09%09%09%09%09%29.replace%28%20rtrim%2C%20%22%241%22%20%29%2C%0A%09%09%09%09%09matcher%2C%0A%09%09%09%09%09i%20%3C%20j%20%26%26%20matcherFromTokens%28%20tokens.slice%28%20i%2C%20j%20%29%20%29%2C%0A%09%09%09%09%09j%20%3C%20len%20%26%26%20matcherFromTokens%28%20%28%20tokens%20%3D%20tokens.slice%28%20j%20%29%20%29%20%29%2C%0A%09%09%09%09%09j%20%3C%20len%20%26%26%20toSelector%28%20tokens%20%29%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%09matchers.push%28%20matcher%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elementMatcher%28%20matchers%20%29%3B%0A%7D%0A%0Afunction%20matcherFromGroupMatchers%28%20elementMatchers%2C%20setMatchers%20%29%20%7B%0A%09var%20bySet%20%3D%20setMatchers.length%20%3E%200%2C%0A%09%09byElement%20%3D%20elementMatchers.length%20%3E%200%2C%0A%09%09superMatcher%20%3D%20function%28%20seed%2C%20context%2C%20xml%2C%20results%2C%20outermost%20%29%20%7B%0A%09%09%09var%20elem%2C%20j%2C%20matcher%2C%0A%09%09%09%09matchedCount%20%3D%200%2C%0A%09%09%09%09i%20%3D%20%220%22%2C%0A%09%09%09%09unmatched%20%3D%20seed%20%26%26%20%5B%5D%2C%0A%09%09%09%09setMatched%20%3D%20%5B%5D%2C%0A%09%09%09%09contextBackup%20%3D%20outermostContext%2C%0A%0A%09%09%09%09//%20We%20must%20always%20have%20either%20seed%20elements%20or%20outermost%20context%0A%09%09%09%09elems%20%3D%20seed%20%7C%7C%20byElement%20%26%26%20Expr.find%5B%20%22TAG%22%20%5D%28%20%22%2A%22%2C%20outermost%20%29%2C%0A%0A%09%09%09%09//%20Use%20integer%20dirruns%20iff%20this%20is%20the%20outermost%20matcher%0A%09%09%09%09dirrunsUnique%20%3D%20%28%20dirruns%20%2B%3D%20contextBackup%20%3D%3D%20null%20%3F%201%20%3A%20Math.random%28%29%20%7C%7C%200.1%20%29%2C%0A%09%09%09%09len%20%3D%20elems.length%3B%0A%0A%09%09%09if%20%28%20outermost%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09%09outermostContext%20%3D%20context%20%3D%3D%20document%20%7C%7C%20context%20%7C%7C%20outermost%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20elements%20passing%20elementMatchers%20directly%20to%20results%0A%09%09%09//%20Support%3A%20IE%3C9%2C%20Safari%0A%09%09%09//%20Tolerate%20NodeList%20properties%20%28IE%3A%20%22length%22%3B%20Safari%3A%20%3Cnumber%3E%29%20matching%20elements%20by%20id%0A%09%09%09for%20%28%20%3B%20i%20%21%3D%3D%20len%20%26%26%20%28%20elem%20%3D%20elems%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20byElement%20%26%26%20elem%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%0A%09%09%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09%09%09if%20%28%20%21context%20%26%26%20elem.ownerDocument%20%21%3D%20document%20%29%20%7B%0A%09%09%09%09%09%09setDocument%28%20elem%20%29%3B%0A%09%09%09%09%09%09xml%20%3D%20%21documentIsHTML%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09while%20%28%20%28%20matcher%20%3D%20elementMatchers%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20matcher%28%20elem%2C%20context%20%7C%7C%20document%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20outermost%20%29%20%7B%0A%09%09%09%09%09%09dirruns%20%3D%20dirrunsUnique%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Track%20unmatched%20elements%20for%20set%20filters%0A%09%09%09%09if%20%28%20bySet%20%29%20%7B%0A%0A%09%09%09%09%09//%20They%20will%20have%20gone%20through%20all%20possible%20matchers%0A%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20%21matcher%20%26%26%20elem%20%29%20%29%20%7B%0A%09%09%09%09%09%09matchedCount--%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Lengthen%20the%20array%20for%20every%20element%2C%20matched%20or%20not%0A%09%09%09%09%09if%20%28%20seed%20%29%20%7B%0A%09%09%09%09%09%09unmatched.push%28%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20%60i%60%20is%20now%20the%20count%20of%20elements%20visited%20above%2C%20and%20adding%20it%20to%20%60matchedCount%60%0A%09%09%09//%20makes%20the%20latter%20nonnegative.%0A%09%09%09matchedCount%20%2B%3D%20i%3B%0A%0A%09%09%09//%20Apply%20set%20filters%20to%20unmatched%20elements%0A%09%09%09//%20NOTE%3A%20This%20can%20be%20skipped%20if%20there%20are%20no%20unmatched%20elements%20%28i.e.%2C%20%60matchedCount%60%0A%09%09%09//%20equals%20%60i%60%29%2C%20unless%20we%20didn%27t%20visit%20_any_%20elements%20in%20the%20above%20loop%20because%20we%20have%0A%09%09%09//%20no%20element%20matchers%20and%20no%20seed.%0A%09%09%09//%20Incrementing%20an%20initially-string%20%220%22%20%60i%60%20allows%20%60i%60%20to%20remain%20a%20string%20only%20in%20that%0A%09%09%09//%20case%2C%20which%20will%20result%20in%20a%20%2200%22%20%60matchedCount%60%20that%20differs%20from%20%60i%60%20but%20is%20also%0A%09%09%09//%20numerically%20zero.%0A%09%09%09if%20%28%20bySet%20%26%26%20i%20%21%3D%3D%20matchedCount%20%29%20%7B%0A%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09while%20%28%20%28%20matcher%20%3D%20setMatchers%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09matcher%28%20unmatched%2C%20setMatched%2C%20context%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09if%20%28%20seed%20%29%20%7B%0A%0A%09%09%09%09%09//%20Reintegrate%20element%20matches%20to%20eliminate%20the%20need%20for%20sorting%0A%09%09%09%09%09if%20%28%20matchedCount%20%3E%200%20%29%20%7B%0A%09%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20%21%28%20unmatched%5B%20i%20%5D%20%7C%7C%20setMatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09setMatched%5B%20i%20%5D%20%3D%20pop.call%28%20results%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Discard%20index%20placeholder%20values%20to%20get%20only%20actual%20matches%0A%09%09%09%09%09setMatched%20%3D%20condense%28%20setMatched%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Add%20matches%20to%20results%0A%09%09%09%09push.apply%28%20results%2C%20setMatched%20%29%3B%0A%0A%09%09%09%09//%20Seedless%20set%20matches%20succeeding%20multiple%20successful%20matchers%20stipulate%20sorting%0A%09%09%09%09if%20%28%20outermost%20%26%26%20%21seed%20%26%26%20setMatched.length%20%3E%200%20%26%26%0A%09%09%09%09%09%28%20matchedCount%20%2B%20setMatchers.length%20%29%20%3E%201%20%29%20%7B%0A%0A%09%09%09%09%09Sizzle.uniqueSort%28%20results%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Override%20manipulation%20of%20globals%20by%20nested%20matchers%0A%09%09%09if%20%28%20outermost%20%29%20%7B%0A%09%09%09%09dirruns%20%3D%20dirrunsUnique%3B%0A%09%09%09%09outermostContext%20%3D%20contextBackup%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20unmatched%3B%0A%09%09%7D%3B%0A%0A%09return%20bySet%20%3F%0A%09%09markFunction%28%20superMatcher%20%29%20%3A%0A%09%09superMatcher%3B%0A%7D%0A%0Acompile%20%3D%20Sizzle.compile%20%3D%20function%28%20selector%2C%20match%20/%2A%20Internal%20Use%20Only%20%2A/%20%29%20%7B%0A%09var%20i%2C%0A%09%09setMatchers%20%3D%20%5B%5D%2C%0A%09%09elementMatchers%20%3D%20%5B%5D%2C%0A%09%09cached%20%3D%20compilerCache%5B%20selector%20%2B%20%22%20%22%20%5D%3B%0A%0A%09if%20%28%20%21cached%20%29%20%7B%0A%0A%09%09//%20Generate%20a%20function%20of%20recursive%20functions%20that%20can%20be%20used%20to%20check%20each%20element%0A%09%09if%20%28%20%21match%20%29%20%7B%0A%09%09%09match%20%3D%20tokenize%28%20selector%20%29%3B%0A%09%09%7D%0A%09%09i%20%3D%20match.length%3B%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09cached%20%3D%20matcherFromTokens%28%20match%5B%20i%20%5D%20%29%3B%0A%09%09%09if%20%28%20cached%5B%20expando%20%5D%20%29%20%7B%0A%09%09%09%09setMatchers.push%28%20cached%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09elementMatchers.push%28%20cached%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Cache%20the%20compiled%20function%0A%09%09cached%20%3D%20compilerCache%28%0A%09%09%09selector%2C%0A%09%09%09matcherFromGroupMatchers%28%20elementMatchers%2C%20setMatchers%20%29%0A%09%09%29%3B%0A%0A%09%09//%20Save%20selector%20and%20tokenization%0A%09%09cached.selector%20%3D%20selector%3B%0A%09%7D%0A%09return%20cached%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20A%20low-level%20selection%20function%20that%20works%20with%20Sizzle%27s%20compiled%0A%20%2A%20%20selector%20functions%0A%20%2A%20%40param%20%7BString%7CFunction%7D%20selector%20A%20selector%20or%20a%20pre-compiled%0A%20%2A%20%20selector%20function%20built%20with%20Sizzle.compile%0A%20%2A%20%40param%20%7BElement%7D%20context%0A%20%2A%20%40param%20%7BArray%7D%20%5Bresults%5D%0A%20%2A%20%40param%20%7BArray%7D%20%5Bseed%5D%20A%20set%20of%20elements%20to%20match%20against%0A%20%2A/%0Aselect%20%3D%20Sizzle.select%20%3D%20function%28%20selector%2C%20context%2C%20results%2C%20seed%20%29%20%7B%0A%09var%20i%2C%20tokens%2C%20token%2C%20type%2C%20find%2C%0A%09%09compiled%20%3D%20typeof%20selector%20%3D%3D%3D%20%22function%22%20%26%26%20selector%2C%0A%09%09match%20%3D%20%21seed%20%26%26%20tokenize%28%20%28%20selector%20%3D%20compiled.selector%20%7C%7C%20selector%20%29%20%29%3B%0A%0A%09results%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09//%20Try%20to%20minimize%20operations%20if%20there%20is%20only%20one%20selector%20in%20the%20list%20and%20no%20seed%0A%09//%20%28the%20latter%20of%20which%20guarantees%20us%20context%29%0A%09if%20%28%20match.length%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09//%20Reduce%20context%20if%20the%20leading%20compound%20selector%20is%20an%20ID%0A%09%09tokens%20%3D%20match%5B%200%20%5D%20%3D%20match%5B%200%20%5D.slice%28%200%20%29%3B%0A%09%09if%20%28%20tokens.length%20%3E%202%20%26%26%20%28%20token%20%3D%20tokens%5B%200%20%5D%20%29.type%20%3D%3D%3D%20%22ID%22%20%26%26%0A%09%09%09context.nodeType%20%3D%3D%3D%209%20%26%26%20documentIsHTML%20%26%26%20Expr.relative%5B%20tokens%5B%201%20%5D.type%20%5D%20%29%20%7B%0A%0A%09%09%09context%20%3D%20%28%20Expr.find%5B%20%22ID%22%20%5D%28%20token.matches%5B%200%20%5D%0A%09%09%09%09.replace%28%20runescape%2C%20funescape%20%29%2C%20context%20%29%20%7C%7C%20%5B%5D%20%29%5B%200%20%5D%3B%0A%09%09%09if%20%28%20%21context%20%29%20%7B%0A%09%09%09%09return%20results%3B%0A%0A%09%09%09//%20Precompiled%20matchers%20will%20still%20verify%20ancestry%2C%20so%20step%20up%20a%20level%0A%09%09%09%7D%20else%20if%20%28%20compiled%20%29%20%7B%0A%09%09%09%09context%20%3D%20context.parentNode%3B%0A%09%09%09%7D%0A%0A%09%09%09selector%20%3D%20selector.slice%28%20tokens.shift%28%29.value.length%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Fetch%20a%20seed%20set%20for%20right-to-left%20matching%0A%09%09i%20%3D%20matchExpr%5B%20%22needsContext%22%20%5D.test%28%20selector%20%29%20%3F%200%20%3A%20tokens.length%3B%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09token%20%3D%20tokens%5B%20i%20%5D%3B%0A%0A%09%09%09//%20Abort%20if%20we%20hit%20a%20combinator%0A%09%09%09if%20%28%20Expr.relative%5B%20%28%20type%20%3D%20token.type%20%29%20%5D%20%29%20%7B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20%28%20find%20%3D%20Expr.find%5B%20type%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Search%2C%20expanding%20context%20for%20leading%20sibling%20combinators%0A%09%09%09%09if%20%28%20%28%20seed%20%3D%20find%28%0A%09%09%09%09%09token.matches%5B%200%20%5D.replace%28%20runescape%2C%20funescape%20%29%2C%0A%09%09%09%09%09rsibling.test%28%20tokens%5B%200%20%5D.type%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%0A%09%09%09%09%09%09context%0A%09%09%09%09%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20If%20seed%20is%20empty%20or%20no%20tokens%20remain%2C%20we%20can%20return%20early%0A%09%09%09%09%09tokens.splice%28%20i%2C%201%20%29%3B%0A%09%09%09%09%09selector%20%3D%20seed.length%20%26%26%20toSelector%28%20tokens%20%29%3B%0A%09%09%09%09%09if%20%28%20%21selector%20%29%20%7B%0A%09%09%09%09%09%09push.apply%28%20results%2C%20seed%20%29%3B%0A%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Compile%20and%20execute%20a%20filtering%20function%20if%20one%20is%20not%20provided%0A%09//%20Provide%20%60match%60%20to%20avoid%20retokenization%20if%20we%20modified%20the%20selector%20above%0A%09%28%20compiled%20%7C%7C%20compile%28%20selector%2C%20match%20%29%20%29%28%0A%09%09seed%2C%0A%09%09context%2C%0A%09%09%21documentIsHTML%2C%0A%09%09results%2C%0A%09%09%21context%20%7C%7C%20rsibling.test%28%20selector%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%20context%0A%09%29%3B%0A%09return%20results%3B%0A%7D%3B%0A%0A//%20One-time%20assignments%0A%0A//%20Sort%20stability%0Asupport.sortStable%20%3D%20expando.split%28%20%22%22%20%29.sort%28%20sortOrder%20%29.join%28%20%22%22%20%29%20%3D%3D%3D%20expando%3B%0A%0A//%20Support%3A%20Chrome%2014-35%2B%0A//%20Always%20assume%20duplicates%20if%20they%20aren%27t%20passed%20to%20the%20comparison%20function%0Asupport.detectDuplicates%20%3D%20%21%21hasDuplicate%3B%0A%0A//%20Initialize%20against%20the%20default%20document%0AsetDocument%28%29%3B%0A%0A//%20Support%3A%20Webkit%3C537.32%20-%20Safari%206.0.3/Chrome%2025%20%28fixed%20in%20Chrome%2027%29%0A//%20Detached%20nodes%20confoundingly%20follow%20%2Aeach%20other%2A%0Asupport.sortDetached%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%0A%09//%20Should%20return%201%2C%20but%20returns%204%20%28following%29%0A%09return%20el.compareDocumentPosition%28%20document.createElement%28%20%22fieldset%22%20%29%20%29%20%26%201%3B%0A%7D%20%29%3B%0A%0A//%20Support%3A%20IE%3C8%0A//%20Prevent%20attribute/property%20%22interpolation%22%0A//%20https%3A//msdn.microsoft.com/en-us/library/ms536429%2528VS.85%2529.aspx%0Aif%20%28%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09el.innerHTML%20%3D%20%22%3Ca%20href%3D%27%23%27%3E%3C/a%3E%22%3B%0A%09return%20el.firstChild.getAttribute%28%20%22href%22%20%29%20%3D%3D%3D%20%22%23%22%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20%22type%7Chref%7Cheight%7Cwidth%22%2C%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%09%09%09return%20elem.getAttribute%28%20name%2C%20name.toLowerCase%28%29%20%3D%3D%3D%20%22type%22%20%3F%201%20%3A%202%20%29%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%3C9%0A//%20Use%20defaultValue%20in%20place%20of%20getAttribute%28%22value%22%29%0Aif%20%28%20%21support.attributes%20%7C%7C%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09el.innerHTML%20%3D%20%22%3Cinput/%3E%22%3B%0A%09el.firstChild.setAttribute%28%20%22value%22%2C%20%22%22%20%29%3B%0A%09return%20el.firstChild.getAttribute%28%20%22value%22%20%29%20%3D%3D%3D%20%22%22%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20%22value%22%2C%20function%28%20elem%2C%20_name%2C%20isXML%20%29%20%7B%0A%09%09if%20%28%20%21isXML%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22input%22%20%29%20%7B%0A%09%09%09return%20elem.defaultValue%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%3C9%0A//%20Use%20getAttributeNode%20to%20fetch%20booleans%20when%20getAttribute%20lies%0Aif%20%28%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09return%20el.getAttribute%28%20%22disabled%22%20%29%20%3D%3D%20null%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20booleans%2C%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09var%20val%3B%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%09%09%09return%20elem%5B%20name%20%5D%20%3D%3D%3D%20true%20%3F%20name.toLowerCase%28%29%20%3A%0A%09%09%09%09%28%20val%20%3D%20elem.getAttributeNode%28%20name%20%29%20%29%20%26%26%20val.specified%20%3F%0A%09%09%09%09%09val.value%20%3A%0A%09%09%09%09%09null%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0Areturn%20Sizzle%3B%0A%0A%7D%20%29%28%20window%20%29%3B%0A%0A%0A%0AjQuery.find%20%3D%20Sizzle%3B%0AjQuery.expr%20%3D%20Sizzle.selectors%3B%0A%0A//%20Deprecated%0AjQuery.expr%5B%20%22%3A%22%20%5D%20%3D%20jQuery.expr.pseudos%3B%0AjQuery.uniqueSort%20%3D%20jQuery.unique%20%3D%20Sizzle.uniqueSort%3B%0AjQuery.text%20%3D%20Sizzle.getText%3B%0AjQuery.isXMLDoc%20%3D%20Sizzle.isXML%3B%0AjQuery.contains%20%3D%20Sizzle.contains%3B%0AjQuery.escapeSelector%20%3D%20Sizzle.escape%3B%0A%0A%0A%0A%0Avar%20dir%20%3D%20function%28%20elem%2C%20dir%2C%20until%20%29%20%7B%0A%09var%20matched%20%3D%20%5B%5D%2C%0A%09%09truncate%20%3D%20until%20%21%3D%3D%20undefined%3B%0A%0A%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%26%26%20elem.nodeType%20%21%3D%3D%209%20%29%20%7B%0A%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09if%20%28%20truncate%20%26%26%20jQuery%28%20elem%20%29.is%28%20until%20%29%20%29%20%7B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09matched.push%28%20elem%20%29%3B%0A%09%09%7D%0A%09%7D%0A%09return%20matched%3B%0A%7D%3B%0A%0A%0Avar%20siblings%20%3D%20function%28%20n%2C%20elem%20%29%20%7B%0A%09var%20matched%20%3D%20%5B%5D%3B%0A%0A%09for%20%28%20%3B%20n%3B%20n%20%3D%20n.nextSibling%20%29%20%7B%0A%09%09if%20%28%20n.nodeType%20%3D%3D%3D%201%20%26%26%20n%20%21%3D%3D%20elem%20%29%20%7B%0A%09%09%09matched.push%28%20n%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20matched%3B%0A%7D%3B%0A%0A%0Avar%20rneedsContext%20%3D%20jQuery.expr.match.needsContext%3B%0A%0A%0A%0Afunction%20nodeName%28%20elem%2C%20name%20%29%20%7B%0A%0A%20%20return%20elem.nodeName%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name.toLowerCase%28%29%3B%0A%0A%7D%3B%0Avar%20rsingleTag%20%3D%20%28%20/%5E%3C%28%5Ba-z%5D%5B%5E%5C/%5C0%3E%3A%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%29%5B%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%5C/%3F%3E%28%3F%3A%3C%5C/%5C1%3E%7C%29%24/i%20%29%3B%0A%0A%0A%0A//%20Implement%20the%20identical%20functionality%20for%20filter%20and%20not%0Afunction%20winnow%28%20elements%2C%20qualifier%2C%20not%20%29%20%7B%0A%09if%20%28%20isFunction%28%20qualifier%20%29%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%2C%20i%20%29%20%7B%0A%09%09%09return%20%21%21qualifier.call%28%20elem%2C%20i%2C%20elem%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Single%20element%0A%09if%20%28%20qualifier.nodeType%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%28%20elem%20%3D%3D%3D%20qualifier%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Arraylike%20of%20elements%20%28jQuery%2C%20arguments%2C%20Array%29%0A%09if%20%28%20typeof%20qualifier%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%28%20indexOf.call%28%20qualifier%2C%20elem%20%29%20%3E%20-1%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Filtered%20directly%20for%20both%20simple%20and%20complex%20selectors%0A%09return%20jQuery.filter%28%20qualifier%2C%20elements%2C%20not%20%29%3B%0A%7D%0A%0AjQuery.filter%20%3D%20function%28%20expr%2C%20elems%2C%20not%20%29%20%7B%0A%09var%20elem%20%3D%20elems%5B%200%20%5D%3B%0A%0A%09if%20%28%20not%20%29%20%7B%0A%09%09expr%20%3D%20%22%3Anot%28%22%20%2B%20expr%20%2B%20%22%29%22%3B%0A%09%7D%0A%0A%09if%20%28%20elems.length%20%3D%3D%3D%201%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09return%20jQuery.find.matchesSelector%28%20elem%2C%20expr%20%29%20%3F%20%5B%20elem%20%5D%20%3A%20%5B%5D%3B%0A%09%7D%0A%0A%09return%20jQuery.find.matches%28%20expr%2C%20jQuery.grep%28%20elems%2C%20function%28%20elem%20%29%20%7B%0A%09%09return%20elem.nodeType%20%3D%3D%3D%201%3B%0A%09%7D%20%29%20%29%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09find%3A%20function%28%20selector%20%29%20%7B%0A%09%09var%20i%2C%20ret%2C%0A%09%09%09len%20%3D%20this.length%2C%0A%09%09%09self%20%3D%20this%3B%0A%0A%09%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20this.pushStack%28%20jQuery%28%20selector%20%29.filter%28%20function%28%29%20%7B%0A%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09if%20%28%20jQuery.contains%28%20self%5B%20i%20%5D%2C%20this%20%29%20%29%20%7B%0A%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09ret%20%3D%20this.pushStack%28%20%5B%5D%20%29%3B%0A%0A%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09jQuery.find%28%20selector%2C%20self%5B%20i%20%5D%2C%20ret%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20len%20%3E%201%20%3F%20jQuery.uniqueSort%28%20ret%20%29%20%3A%20ret%3B%0A%09%7D%2C%0A%09filter%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.pushStack%28%20winnow%28%20this%2C%20selector%20%7C%7C%20%5B%5D%2C%20false%20%29%20%29%3B%0A%09%7D%2C%0A%09not%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.pushStack%28%20winnow%28%20this%2C%20selector%20%7C%7C%20%5B%5D%2C%20true%20%29%20%29%3B%0A%09%7D%2C%0A%09is%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20%21%21winnow%28%0A%09%09%09this%2C%0A%0A%09%09%09//%20If%20this%20is%20a%20positional/relative%20selector%2C%20check%20membership%20in%20the%20returned%20set%0A%09%09%09//%20so%20%24%28%22p%3Afirst%22%29.is%28%22p%3Alast%22%29%20won%27t%20return%20true%20for%20a%20doc%20with%20two%20%22p%22.%0A%09%09%09typeof%20selector%20%3D%3D%3D%20%22string%22%20%26%26%20rneedsContext.test%28%20selector%20%29%20%3F%0A%09%09%09%09jQuery%28%20selector%20%29%20%3A%0A%09%09%09%09selector%20%7C%7C%20%5B%5D%2C%0A%09%09%09false%0A%09%09%29.length%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20Initialize%20a%20jQuery%20object%0A%0A%0A//%20A%20central%20reference%20to%20the%20root%20jQuery%28document%29%0Avar%20rootjQuery%2C%0A%0A%09//%20A%20simple%20way%20to%20check%20for%20HTML%20strings%0A%09//%20Prioritize%20%23id%20over%20%3Ctag%3E%20to%20avoid%20XSS%20via%20location.hash%20%28%239521%29%0A%09//%20Strict%20HTML%20recognition%20%28%2311290%3A%20must%20start%20with%20%3C%29%0A%09//%20Shortcut%20simple%20%23id%20case%20for%20speed%0A%09rquickExpr%20%3D%20/%5E%28%3F%3A%5Cs%2A%28%3C%5B%5Cw%5CW%5D%2B%3E%29%5B%5E%3E%5D%2A%7C%23%28%5B%5Cw-%5D%2B%29%29%24/%2C%0A%0A%09init%20%3D%20jQuery.fn.init%20%3D%20function%28%20selector%2C%20context%2C%20root%20%29%20%7B%0A%09%09var%20match%2C%20elem%3B%0A%0A%09%09//%20HANDLE%3A%20%24%28%22%22%29%2C%20%24%28null%29%2C%20%24%28undefined%29%2C%20%24%28false%29%0A%09%09if%20%28%20%21selector%20%29%20%7B%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%0A%09%09//%20Method%20init%28%29%20accepts%20an%20alternate%20rootjQuery%0A%09%09//%20so%20migrate%20can%20support%20jQuery.sub%20%28gh-2101%29%0A%09%09root%20%3D%20root%20%7C%7C%20rootjQuery%3B%0A%0A%09%09//%20Handle%20HTML%20strings%0A%09%09if%20%28%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09if%20%28%20selector%5B%200%20%5D%20%3D%3D%3D%20%22%3C%22%20%26%26%0A%09%09%09%09selector%5B%20selector.length%20-%201%20%5D%20%3D%3D%3D%20%22%3E%22%20%26%26%0A%09%09%09%09selector.length%20%3E%3D%203%20%29%20%7B%0A%0A%09%09%09%09//%20Assume%20that%20strings%20that%20start%20and%20end%20with%20%3C%3E%20are%20HTML%20and%20skip%20the%20regex%20check%0A%09%09%09%09match%20%3D%20%5B%20null%2C%20selector%2C%20null%20%5D%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09match%20%3D%20rquickExpr.exec%28%20selector%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Match%20html%20or%20make%20sure%20no%20context%20is%20specified%20for%20%23id%0A%09%09%09if%20%28%20match%20%26%26%20%28%20match%5B%201%20%5D%20%7C%7C%20%21context%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20HANDLE%3A%20%24%28html%29%20-%3E%20%24%28array%29%0A%09%09%09%09if%20%28%20match%5B%201%20%5D%20%29%20%7B%0A%09%09%09%09%09context%20%3D%20context%20instanceof%20jQuery%20%3F%20context%5B%200%20%5D%20%3A%20context%3B%0A%0A%09%09%09%09%09//%20Option%20to%20run%20scripts%20is%20true%20for%20back-compat%0A%09%09%09%09%09//%20Intentionally%20let%20the%20error%20be%20thrown%20if%20parseHTML%20is%20not%20present%0A%09%09%09%09%09jQuery.merge%28%20this%2C%20jQuery.parseHTML%28%0A%09%09%09%09%09%09match%5B%201%20%5D%2C%0A%09%09%09%09%09%09context%20%26%26%20context.nodeType%20%3F%20context.ownerDocument%20%7C%7C%20context%20%3A%20document%2C%0A%09%09%09%09%09%09true%0A%09%09%09%09%09%29%20%29%3B%0A%0A%09%09%09%09%09//%20HANDLE%3A%20%24%28html%2C%20props%29%0A%09%09%09%09%09if%20%28%20rsingleTag.test%28%20match%5B%201%20%5D%20%29%20%26%26%20jQuery.isPlainObject%28%20context%20%29%20%29%20%7B%0A%09%09%09%09%09%09for%20%28%20match%20in%20context%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Properties%20of%20context%20are%20called%20as%20methods%20if%20possible%0A%09%09%09%09%09%09%09if%20%28%20isFunction%28%20this%5B%20match%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09this%5B%20match%20%5D%28%20context%5B%20match%20%5D%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20...and%20otherwise%20set%20as%20attributes%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09this.attr%28%20match%2C%20context%5B%20match%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09return%20this%3B%0A%0A%09%09%09%09//%20HANDLE%3A%20%24%28%23id%29%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09elem%20%3D%20document.getElementById%28%20match%5B%202%20%5D%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20elem%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Inject%20the%20element%20directly%20into%20the%20jQuery%20object%0A%09%09%09%09%09%09this%5B%200%20%5D%20%3D%20elem%3B%0A%09%09%09%09%09%09this.length%20%3D%201%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%0A%09%09%09//%20HANDLE%3A%20%24%28expr%2C%20%24%28...%29%29%0A%09%09%09%7D%20else%20if%20%28%20%21context%20%7C%7C%20context.jquery%20%29%20%7B%0A%09%09%09%09return%20%28%20context%20%7C%7C%20root%20%29.find%28%20selector%20%29%3B%0A%0A%09%09%09//%20HANDLE%3A%20%24%28expr%2C%20context%29%0A%09%09%09//%20%28which%20is%20just%20equivalent%20to%3A%20%24%28context%29.find%28expr%29%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09return%20this.constructor%28%20context%20%29.find%28%20selector%20%29%3B%0A%09%09%09%7D%0A%0A%09%09//%20HANDLE%3A%20%24%28DOMElement%29%0A%09%09%7D%20else%20if%20%28%20selector.nodeType%20%29%20%7B%0A%09%09%09this%5B%200%20%5D%20%3D%20selector%3B%0A%09%09%09this.length%20%3D%201%3B%0A%09%09%09return%20this%3B%0A%0A%09%09//%20HANDLE%3A%20%24%28function%29%0A%09%09//%20Shortcut%20for%20document%20ready%0A%09%09%7D%20else%20if%20%28%20isFunction%28%20selector%20%29%20%29%20%7B%0A%09%09%09return%20root.ready%20%21%3D%3D%20undefined%20%3F%0A%09%09%09%09root.ready%28%20selector%20%29%20%3A%0A%0A%09%09%09%09//%20Execute%20immediately%20if%20ready%20is%20not%20present%0A%09%09%09%09selector%28%20jQuery%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20jQuery.makeArray%28%20selector%2C%20this%20%29%3B%0A%09%7D%3B%0A%0A//%20Give%20the%20init%20function%20the%20jQuery%20prototype%20for%20later%20instantiation%0Ainit.prototype%20%3D%20jQuery.fn%3B%0A%0A//%20Initialize%20central%20reference%0ArootjQuery%20%3D%20jQuery%28%20document%20%29%3B%0A%0A%0Avar%20rparentsprev%20%3D%20/%5E%28%3F%3Aparents%7Cprev%28%3F%3AUntil%7CAll%29%29/%2C%0A%0A%09//%20Methods%20guaranteed%20to%20produce%20a%20unique%20set%20when%20starting%20from%20a%20unique%20set%0A%09guaranteedUnique%20%3D%20%7B%0A%09%09children%3A%20true%2C%0A%09%09contents%3A%20true%2C%0A%09%09next%3A%20true%2C%0A%09%09prev%3A%20true%0A%09%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09has%3A%20function%28%20target%20%29%20%7B%0A%09%09var%20targets%20%3D%20jQuery%28%20target%2C%20this%20%29%2C%0A%09%09%09l%20%3D%20targets.length%3B%0A%0A%09%09return%20this.filter%28%20function%28%29%20%7B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20jQuery.contains%28%20this%2C%20targets%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09closest%3A%20function%28%20selectors%2C%20context%20%29%20%7B%0A%09%09var%20cur%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09l%20%3D%20this.length%2C%0A%09%09%09matched%20%3D%20%5B%5D%2C%0A%09%09%09targets%20%3D%20typeof%20selectors%20%21%3D%3D%20%22string%22%20%26%26%20jQuery%28%20selectors%20%29%3B%0A%0A%09%09//%20Positional%20selectors%20never%20match%2C%20since%20there%27s%20no%20_selection_%20context%0A%09%09if%20%28%20%21rneedsContext.test%28%20selectors%20%29%20%29%20%7B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09for%20%28%20cur%20%3D%20this%5B%20i%20%5D%3B%20cur%20%26%26%20cur%20%21%3D%3D%20context%3B%20cur%20%3D%20cur.parentNode%20%29%20%7B%0A%0A%09%09%09%09%09//%20Always%20skip%20document%20fragments%0A%09%09%09%09%09if%20%28%20cur.nodeType%20%3C%2011%20%26%26%20%28%20targets%20%3F%0A%09%09%09%09%09%09targets.index%28%20cur%20%29%20%3E%20-1%20%3A%0A%0A%09%09%09%09%09%09//%20Don%27t%20pass%20non-elements%20to%20Sizzle%0A%09%09%09%09%09%09cur.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%09%09%09jQuery.find.matchesSelector%28%20cur%2C%20selectors%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09matched.push%28%20cur%20%29%3B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20matched.length%20%3E%201%20%3F%20jQuery.uniqueSort%28%20matched%20%29%20%3A%20matched%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Determine%20the%20position%20of%20an%20element%20within%20the%20set%0A%09index%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20No%20argument%2C%20return%20index%20in%20parent%0A%09%09if%20%28%20%21elem%20%29%20%7B%0A%09%09%09return%20%28%20this%5B%200%20%5D%20%26%26%20this%5B%200%20%5D.parentNode%20%29%20%3F%20this.first%28%29.prevAll%28%29.length%20%3A%20-1%3B%0A%09%09%7D%0A%0A%09%09//%20Index%20in%20selector%0A%09%09if%20%28%20typeof%20elem%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20indexOf.call%28%20jQuery%28%20elem%20%29%2C%20this%5B%200%20%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Locate%20the%20position%20of%20the%20desired%20element%0A%09%09return%20indexOf.call%28%20this%2C%0A%0A%09%09%09//%20If%20it%20receives%20a%20jQuery%20object%2C%20the%20first%20element%20is%20used%0A%09%09%09elem.jquery%20%3F%20elem%5B%200%20%5D%20%3A%20elem%0A%09%09%29%3B%0A%09%7D%2C%0A%0A%09add%3A%20function%28%20selector%2C%20context%20%29%20%7B%0A%09%09return%20this.pushStack%28%0A%09%09%09jQuery.uniqueSort%28%0A%09%09%09%09jQuery.merge%28%20this.get%28%29%2C%20jQuery%28%20selector%2C%20context%20%29%20%29%0A%09%09%09%29%0A%09%09%29%3B%0A%09%7D%2C%0A%0A%09addBack%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.add%28%20selector%20%3D%3D%20null%20%3F%0A%09%09%09this.prevObject%20%3A%20this.prevObject.filter%28%20selector%20%29%0A%09%09%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0Afunction%20sibling%28%20cur%2C%20dir%20%29%20%7B%0A%09while%20%28%20%28%20cur%20%3D%20cur%5B%20dir%20%5D%20%29%20%26%26%20cur.nodeType%20%21%3D%3D%201%20%29%20%7B%7D%0A%09return%20cur%3B%0A%7D%0A%0AjQuery.each%28%20%7B%0A%09parent%3A%20function%28%20elem%20%29%20%7B%0A%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09return%20parent%20%26%26%20parent.nodeType%20%21%3D%3D%2011%20%3F%20parent%20%3A%20null%3B%0A%09%7D%2C%0A%09parents%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22parentNode%22%20%29%3B%0A%09%7D%2C%0A%09parentsUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22parentNode%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09next%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20sibling%28%20elem%2C%20%22nextSibling%22%20%29%3B%0A%09%7D%2C%0A%09prev%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20sibling%28%20elem%2C%20%22previousSibling%22%20%29%3B%0A%09%7D%2C%0A%09nextAll%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22nextSibling%22%20%29%3B%0A%09%7D%2C%0A%09prevAll%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22previousSibling%22%20%29%3B%0A%09%7D%2C%0A%09nextUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22nextSibling%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09prevUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22previousSibling%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09siblings%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20siblings%28%20%28%20elem.parentNode%20%7C%7C%20%7B%7D%20%29.firstChild%2C%20elem%20%29%3B%0A%09%7D%2C%0A%09children%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20siblings%28%20elem.firstChild%20%29%3B%0A%09%7D%2C%0A%09contents%3A%20function%28%20elem%20%29%20%7B%0A%09%09if%20%28%20elem.contentDocument%20%21%3D%20null%20%26%26%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%0A%09%09%09//%20%3Cobject%3E%20elements%20with%20no%20%60data%60%20attribute%20has%20an%20object%0A%09%09%09//%20%60contentDocument%60%20with%20a%20%60null%60%20prototype.%0A%09%09%09getProto%28%20elem.contentDocument%20%29%20%29%20%7B%0A%0A%09%09%09return%20elem.contentDocument%3B%0A%09%09%7D%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%20only%2C%20iOS%207%20only%2C%20Android%20Browser%20%3C%3D4.3%20only%0A%09%09//%20Treat%20the%20template%20element%20as%20a%20regular%20one%20in%20browsers%20that%0A%09%09//%20don%27t%20support%20it.%0A%09%09if%20%28%20nodeName%28%20elem%2C%20%22template%22%20%29%20%29%20%7B%0A%09%09%09elem%20%3D%20elem.content%20%7C%7C%20elem%3B%0A%09%09%7D%0A%0A%09%09return%20jQuery.merge%28%20%5B%5D%2C%20elem.childNodes%20%29%3B%0A%09%7D%0A%7D%2C%20function%28%20name%2C%20fn%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20until%2C%20selector%20%29%20%7B%0A%09%09var%20matched%20%3D%20jQuery.map%28%20this%2C%20fn%2C%20until%20%29%3B%0A%0A%09%09if%20%28%20name.slice%28%20-5%20%29%20%21%3D%3D%20%22Until%22%20%29%20%7B%0A%09%09%09selector%20%3D%20until%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20selector%20%26%26%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09matched%20%3D%20jQuery.filter%28%20selector%2C%20matched%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20this.length%20%3E%201%20%29%20%7B%0A%0A%09%09%09//%20Remove%20duplicates%0A%09%09%09if%20%28%20%21guaranteedUnique%5B%20name%20%5D%20%29%20%7B%0A%09%09%09%09jQuery.uniqueSort%28%20matched%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Reverse%20order%20for%20parents%2A%20and%20prev-derivatives%0A%09%09%09if%20%28%20rparentsprev.test%28%20name%20%29%20%29%20%7B%0A%09%09%09%09matched.reverse%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20matched%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0Avar%20rnothtmlwhite%20%3D%20%28%20/%5B%5E%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2B/g%20%29%3B%0A%0A%0A%0A//%20Convert%20String-formatted%20options%20into%20Object-formatted%20ones%0Afunction%20createOptions%28%20options%20%29%20%7B%0A%09var%20object%20%3D%20%7B%7D%3B%0A%09jQuery.each%28%20options.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%2C%20function%28%20_%2C%20flag%20%29%20%7B%0A%09%09object%5B%20flag%20%5D%20%3D%20true%3B%0A%09%7D%20%29%3B%0A%09return%20object%3B%0A%7D%0A%0A/%2A%0A%20%2A%20Create%20a%20callback%20list%20using%20the%20following%20parameters%3A%0A%20%2A%0A%20%2A%09options%3A%20an%20optional%20list%20of%20space-separated%20options%20that%20will%20change%20how%0A%20%2A%09%09%09the%20callback%20list%20behaves%20or%20a%20more%20traditional%20option%20object%0A%20%2A%0A%20%2A%20By%20default%20a%20callback%20list%20will%20act%20like%20an%20event%20callback%20list%20and%20can%20be%0A%20%2A%20%22fired%22%20multiple%20times.%0A%20%2A%0A%20%2A%20Possible%20options%3A%0A%20%2A%0A%20%2A%09once%3A%09%09%09will%20ensure%20the%20callback%20list%20can%20only%20be%20fired%20once%20%28like%20a%20Deferred%29%0A%20%2A%0A%20%2A%09memory%3A%09%09%09will%20keep%20track%20of%20previous%20values%20and%20will%20call%20any%20callback%20added%0A%20%2A%09%09%09%09%09after%20the%20list%20has%20been%20fired%20right%20away%20with%20the%20latest%20%22memorized%22%0A%20%2A%09%09%09%09%09values%20%28like%20a%20Deferred%29%0A%20%2A%0A%20%2A%09unique%3A%09%09%09will%20ensure%20a%20callback%20can%20only%20be%20added%20once%20%28no%20duplicate%20in%20the%20list%29%0A%20%2A%0A%20%2A%09stopOnFalse%3A%09interrupt%20callings%20when%20a%20callback%20returns%20false%0A%20%2A%0A%20%2A/%0AjQuery.Callbacks%20%3D%20function%28%20options%20%29%20%7B%0A%0A%09//%20Convert%20options%20from%20String-formatted%20to%20Object-formatted%20if%20needed%0A%09//%20%28we%20check%20in%20cache%20first%29%0A%09options%20%3D%20typeof%20options%20%3D%3D%3D%20%22string%22%20%3F%0A%09%09createOptions%28%20options%20%29%20%3A%0A%09%09jQuery.extend%28%20%7B%7D%2C%20options%20%29%3B%0A%0A%09var%20//%20Flag%20to%20know%20if%20list%20is%20currently%20firing%0A%09%09firing%2C%0A%0A%09%09//%20Last%20fire%20value%20for%20non-forgettable%20lists%0A%09%09memory%2C%0A%0A%09%09//%20Flag%20to%20know%20if%20list%20was%20already%20fired%0A%09%09fired%2C%0A%0A%09%09//%20Flag%20to%20prevent%20firing%0A%09%09locked%2C%0A%0A%09%09//%20Actual%20callback%20list%0A%09%09list%20%3D%20%5B%5D%2C%0A%0A%09%09//%20Queue%20of%20execution%20data%20for%20repeatable%20lists%0A%09%09queue%20%3D%20%5B%5D%2C%0A%0A%09%09//%20Index%20of%20currently%20firing%20callback%20%28modified%20by%20add/remove%20as%20needed%29%0A%09%09firingIndex%20%3D%20-1%2C%0A%0A%09%09//%20Fire%20callbacks%0A%09%09fire%20%3D%20function%28%29%20%7B%0A%0A%09%09%09//%20Enforce%20single-firing%0A%09%09%09locked%20%3D%20locked%20%7C%7C%20options.once%3B%0A%0A%09%09%09//%20Execute%20callbacks%20for%20all%20pending%20executions%2C%0A%09%09%09//%20respecting%20firingIndex%20overrides%20and%20runtime%20changes%0A%09%09%09fired%20%3D%20firing%20%3D%20true%3B%0A%09%09%09for%20%28%20%3B%20queue.length%3B%20firingIndex%20%3D%20-1%20%29%20%7B%0A%09%09%09%09memory%20%3D%20queue.shift%28%29%3B%0A%09%09%09%09while%20%28%20%2B%2BfiringIndex%20%3C%20list.length%20%29%20%7B%0A%0A%09%09%09%09%09//%20Run%20callback%20and%20check%20for%20early%20termination%0A%09%09%09%09%09if%20%28%20list%5B%20firingIndex%20%5D.apply%28%20memory%5B%200%20%5D%2C%20memory%5B%201%20%5D%20%29%20%3D%3D%3D%20false%20%26%26%0A%09%09%09%09%09%09options.stopOnFalse%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Jump%20to%20end%20and%20forget%20the%20data%20so%20.add%20doesn%27t%20re-fire%0A%09%09%09%09%09%09firingIndex%20%3D%20list.length%3B%0A%09%09%09%09%09%09memory%20%3D%20false%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Forget%20the%20data%20if%20we%27re%20done%20with%20it%0A%09%09%09if%20%28%20%21options.memory%20%29%20%7B%0A%09%09%09%09memory%20%3D%20false%3B%0A%09%09%09%7D%0A%0A%09%09%09firing%20%3D%20false%3B%0A%0A%09%09%09//%20Clean%20up%20if%20we%27re%20done%20firing%20for%20good%0A%09%09%09if%20%28%20locked%20%29%20%7B%0A%0A%09%09%09%09//%20Keep%20an%20empty%20list%20if%20we%20have%20data%20for%20future%20add%20calls%0A%09%09%09%09if%20%28%20memory%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20%5B%5D%3B%0A%0A%09%09%09%09//%20Otherwise%2C%20this%20object%20is%20spent%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09list%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09//%20Actual%20Callbacks%20object%0A%09%09self%20%3D%20%7B%0A%0A%09%09%09//%20Add%20a%20callback%20or%20a%20collection%20of%20callbacks%20to%20the%20list%0A%09%09%09add%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20list%20%29%20%7B%0A%0A%09%09%09%09%09//%20If%20we%20have%20memory%20from%20a%20past%20run%2C%20we%20should%20fire%20after%20adding%0A%09%09%09%09%09if%20%28%20memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09firingIndex%20%3D%20list.length%20-%201%3B%0A%09%09%09%09%09%09queue.push%28%20memory%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%28%20function%20add%28%20args%20%29%20%7B%0A%09%09%09%09%09%09jQuery.each%28%20args%2C%20function%28%20_%2C%20arg%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20isFunction%28%20arg%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09if%20%28%20%21options.unique%20%7C%7C%20%21self.has%28%20arg%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09list.push%28%20arg%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20else%20if%20%28%20arg%20%26%26%20arg.length%20%26%26%20toType%28%20arg%20%29%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Inspect%20recursively%0A%09%09%09%09%09%09%09%09add%28%20arg%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%7D%20%29%28%20arguments%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09fire%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Remove%20a%20callback%20from%20the%20list%0A%09%09%09remove%3A%20function%28%29%20%7B%0A%09%09%09%09jQuery.each%28%20arguments%2C%20function%28%20_%2C%20arg%20%29%20%7B%0A%09%09%09%09%09var%20index%3B%0A%09%09%09%09%09while%20%28%20%28%20index%20%3D%20jQuery.inArray%28%20arg%2C%20list%2C%20index%20%29%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09%09list.splice%28%20index%2C%201%20%29%3B%0A%0A%09%09%09%09%09%09//%20Handle%20firing%20indexes%0A%09%09%09%09%09%09if%20%28%20index%20%3C%3D%20firingIndex%20%29%20%7B%0A%09%09%09%09%09%09%09firingIndex--%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Check%20if%20a%20given%20callback%20is%20in%20the%20list.%0A%09%09%09//%20If%20no%20argument%20is%20given%2C%20return%20whether%20or%20not%20list%20has%20callbacks%20attached.%0A%09%09%09has%3A%20function%28%20fn%20%29%20%7B%0A%09%09%09%09return%20fn%20%3F%0A%09%09%09%09%09jQuery.inArray%28%20fn%2C%20list%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09list.length%20%3E%200%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Remove%20all%20callbacks%20from%20the%20list%0A%09%09%09empty%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20list%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20%5B%5D%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Disable%20.fire%20and%20.add%0A%09%09%09//%20Abort%20any%20current/pending%20executions%0A%09%09%09//%20Clear%20all%20callbacks%20and%20values%0A%09%09%09disable%3A%20function%28%29%20%7B%0A%09%09%09%09locked%20%3D%20queue%20%3D%20%5B%5D%3B%0A%09%09%09%09list%20%3D%20memory%20%3D%20%22%22%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%09%09%09disabled%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21list%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Disable%20.fire%0A%09%09%09//%20Also%20disable%20.add%20unless%20we%20have%20memory%20%28since%20it%20would%20have%20no%20effect%29%0A%09%09%09//%20Abort%20any%20pending%20executions%0A%09%09%09lock%3A%20function%28%29%20%7B%0A%09%09%09%09locked%20%3D%20queue%20%3D%20%5B%5D%3B%0A%09%09%09%09if%20%28%20%21memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20memory%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%09%09%09locked%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21%21locked%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Call%20all%20callbacks%20with%20the%20given%20context%20and%20arguments%0A%09%09%09fireWith%3A%20function%28%20context%2C%20args%20%29%20%7B%0A%09%09%09%09if%20%28%20%21locked%20%29%20%7B%0A%09%09%09%09%09args%20%3D%20args%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09args%20%3D%20%5B%20context%2C%20args.slice%20%3F%20args.slice%28%29%20%3A%20args%20%5D%3B%0A%09%09%09%09%09queue.push%28%20args%20%29%3B%0A%09%09%09%09%09if%20%28%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09fire%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Call%20all%20the%20callbacks%20with%20the%20given%20arguments%0A%09%09%09fire%3A%20function%28%29%20%7B%0A%09%09%09%09self.fireWith%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20To%20know%20if%20the%20callbacks%20have%20already%20been%20called%20at%20least%20once%0A%09%09%09fired%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21%21fired%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%0A%09return%20self%3B%0A%7D%3B%0A%0A%0Afunction%20Identity%28%20v%20%29%20%7B%0A%09return%20v%3B%0A%7D%0Afunction%20Thrower%28%20ex%20%29%20%7B%0A%09throw%20ex%3B%0A%7D%0A%0Afunction%20adoptValue%28%20value%2C%20resolve%2C%20reject%2C%20noValue%20%29%20%7B%0A%09var%20method%3B%0A%0A%09try%20%7B%0A%0A%09%09//%20Check%20for%20promise%20aspect%20first%20to%20privilege%20synchronous%20behavior%0A%09%09if%20%28%20value%20%26%26%20isFunction%28%20%28%20method%20%3D%20value.promise%20%29%20%29%20%29%20%7B%0A%09%09%09method.call%28%20value%20%29.done%28%20resolve%20%29.fail%28%20reject%20%29%3B%0A%0A%09%09//%20Other%20thenables%0A%09%09%7D%20else%20if%20%28%20value%20%26%26%20isFunction%28%20%28%20method%20%3D%20value.then%20%29%20%29%20%29%20%7B%0A%09%09%09method.call%28%20value%2C%20resolve%2C%20reject%20%29%3B%0A%0A%09%09//%20Other%20non-thenables%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Control%20%60resolve%60%20arguments%20by%20letting%20Array%23slice%20cast%20boolean%20%60noValue%60%20to%20integer%3A%0A%09%09%09//%20%2A%20false%3A%20%5B%20value%20%5D.slice%28%200%20%29%20%3D%3E%20resolve%28%20value%20%29%0A%09%09%09//%20%2A%20true%3A%20%5B%20value%20%5D.slice%28%201%20%29%20%3D%3E%20resolve%28%29%0A%09%09%09resolve.apply%28%20undefined%2C%20%5B%20value%20%5D.slice%28%20noValue%20%29%20%29%3B%0A%09%09%7D%0A%0A%09//%20For%20Promises/A%2B%2C%20convert%20exceptions%20into%20rejections%0A%09//%20Since%20jQuery.when%20doesn%27t%20unwrap%20thenables%2C%20we%20can%20skip%20the%20extra%20checks%20appearing%20in%0A%09//%20Deferred%23then%20to%20conditionally%20suppress%20rejection.%0A%09%7D%20catch%20%28%20value%20%29%20%7B%0A%0A%09%09//%20Support%3A%20Android%204.0%20only%0A%09%09//%20Strict%20mode%20functions%20invoked%20without%20.call/.apply%20get%20global-object%20context%0A%09%09reject.apply%28%20undefined%2C%20%5B%20value%20%5D%20%29%3B%0A%09%7D%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09Deferred%3A%20function%28%20func%20%29%20%7B%0A%09%09var%20tuples%20%3D%20%5B%0A%0A%09%09%09%09//%20action%2C%20add%20listener%2C%20callbacks%2C%0A%09%09%09%09//%20...%20.then%20handlers%2C%20argument%20index%2C%20%5Bfinal%20state%5D%0A%09%09%09%09%5B%20%22notify%22%2C%20%22progress%22%2C%20jQuery.Callbacks%28%20%22memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22memory%22%20%29%2C%202%20%5D%2C%0A%09%09%09%09%5B%20%22resolve%22%2C%20%22done%22%2C%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%200%2C%20%22resolved%22%20%5D%2C%0A%09%09%09%09%5B%20%22reject%22%2C%20%22fail%22%2C%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%201%2C%20%22rejected%22%20%5D%0A%09%09%09%5D%2C%0A%09%09%09state%20%3D%20%22pending%22%2C%0A%09%09%09promise%20%3D%20%7B%0A%09%09%09%09state%3A%20function%28%29%20%7B%0A%09%09%09%09%09return%20state%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09always%3A%20function%28%29%20%7B%0A%09%09%09%09%09deferred.done%28%20arguments%20%29.fail%28%20arguments%20%29%3B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09%22catch%22%3A%20function%28%20fn%20%29%20%7B%0A%09%09%09%09%09return%20promise.then%28%20null%2C%20fn%20%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Keep%20pipe%20for%20back-compat%0A%09%09%09%09pipe%3A%20function%28%20/%2A%20fnDone%2C%20fnFail%2C%20fnProgress%20%2A/%20%29%20%7B%0A%09%09%09%09%09var%20fns%20%3D%20arguments%3B%0A%0A%09%09%09%09%09return%20jQuery.Deferred%28%20function%28%20newDefer%20%29%20%7B%0A%09%09%09%09%09%09jQuery.each%28%20tuples%2C%20function%28%20_i%2C%20tuple%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Map%20tuples%20%28progress%2C%20done%2C%20fail%29%20to%20arguments%20%28done%2C%20fail%2C%20progress%29%0A%09%09%09%09%09%09%09var%20fn%20%3D%20isFunction%28%20fns%5B%20tuple%5B%204%20%5D%20%5D%20%29%20%26%26%20fns%5B%20tuple%5B%204%20%5D%20%5D%3B%0A%0A%09%09%09%09%09%09%09//%20deferred.progress%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.notify%20%7D%29%0A%09%09%09%09%09%09%09//%20deferred.done%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.resolve%20%7D%29%0A%09%09%09%09%09%09%09//%20deferred.fail%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.reject%20%7D%29%0A%09%09%09%09%09%09%09deferred%5B%20tuple%5B%201%20%5D%20%5D%28%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09var%20returned%20%3D%20fn%20%26%26%20fn.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09%09%09%09%09if%20%28%20returned%20%26%26%20isFunction%28%20returned.promise%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09returned.promise%28%29%0A%09%09%09%09%09%09%09%09%09%09.progress%28%20newDefer.notify%20%29%0A%09%09%09%09%09%09%09%09%09%09.done%28%20newDefer.resolve%20%29%0A%09%09%09%09%09%09%09%09%09%09.fail%28%20newDefer.reject%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09%09newDefer%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%28%0A%09%09%09%09%09%09%09%09%09%09this%2C%0A%09%09%09%09%09%09%09%09%09%09fn%20%3F%20%5B%20returned%20%5D%20%3A%20arguments%0A%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09fns%20%3D%20null%3B%0A%09%09%09%09%09%7D%20%29.promise%28%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09then%3A%20function%28%20onFulfilled%2C%20onRejected%2C%20onProgress%20%29%20%7B%0A%09%09%09%09%09var%20maxDepth%20%3D%200%3B%0A%09%09%09%09%09function%20resolve%28%20depth%2C%20deferred%2C%20handler%2C%20special%20%29%20%7B%0A%09%09%09%09%09%09return%20function%28%29%20%7B%0A%09%09%09%09%09%09%09var%20that%20%3D%20this%2C%0A%09%09%09%09%09%09%09%09args%20%3D%20arguments%2C%0A%09%09%09%09%09%09%09%09mightThrow%20%3D%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09%09var%20returned%2C%20then%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.3%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-59%0A%09%09%09%09%09%09%09%09%09//%20Ignore%20double-resolution%20attempts%0A%09%09%09%09%09%09%09%09%09if%20%28%20depth%20%3C%20maxDepth%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09returned%20%3D%20handler.apply%28%20that%2C%20args%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.1%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-48%0A%09%09%09%09%09%09%09%09%09if%20%28%20returned%20%3D%3D%3D%20deferred.promise%28%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09throw%20new%20TypeError%28%20%22Thenable%20self-resolution%22%20%29%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20sections%202.3.3.1%2C%203.5%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-54%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-75%0A%09%09%09%09%09%09%09%09%09//%20Retrieve%20%60then%60%20only%20once%0A%09%09%09%09%09%09%09%09%09then%20%3D%20returned%20%26%26%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.4%0A%09%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-64%0A%09%09%09%09%09%09%09%09%09%09//%20Only%20check%20objects%20and%20functions%20for%20thenability%0A%09%09%09%09%09%09%09%09%09%09%28%20typeof%20returned%20%3D%3D%3D%20%22object%22%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09typeof%20returned%20%3D%3D%3D%20%22function%22%20%29%20%26%26%0A%09%09%09%09%09%09%09%09%09%09returned.then%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Handle%20a%20returned%20thenable%0A%09%09%09%09%09%09%09%09%09if%20%28%20isFunction%28%20then%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Special%20processors%20%28notify%29%20just%20wait%20for%20resolution%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20special%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09then.call%28%0A%09%09%09%09%09%09%09%09%09%09%09%09returned%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Thrower%2C%20special%20%29%0A%09%09%09%09%09%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Normal%20processors%20%28resolve%29%20also%20hook%20into%20progress%0A%09%09%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20...and%20disregard%20older%20resolution%20values%0A%09%09%09%09%09%09%09%09%09%09%09maxDepth%2B%2B%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09then.call%28%0A%09%09%09%09%09%09%09%09%09%09%09%09returned%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Thrower%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09%09deferred.notifyWith%20%29%0A%09%09%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09//%20Handle%20all%20other%20returned%20values%0A%09%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Only%20substitute%20handlers%20pass%20on%20context%0A%09%09%09%09%09%09%09%09%09%09//%20and%20multiple%20values%20%28non-spec%20behavior%29%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20handler%20%21%3D%3D%20Identity%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09that%20%3D%20undefined%3B%0A%09%09%09%09%09%09%09%09%09%09%09args%20%3D%20%5B%20returned%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Process%20the%20value%28s%29%0A%09%09%09%09%09%09%09%09%09%09//%20Default%20process%20is%20resolve%0A%09%09%09%09%09%09%09%09%09%09%28%20special%20%7C%7C%20deferred.resolveWith%20%29%28%20that%2C%20args%20%29%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09%09%09%09//%20Only%20normal%20processors%20%28resolve%29%20catch%20and%20reject%20exceptions%0A%09%09%09%09%09%09%09%09process%20%3D%20special%20%3F%0A%09%09%09%09%09%09%09%09%09mightThrow%20%3A%0A%09%09%09%09%09%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09mightThrow%28%29%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09if%20%28%20jQuery.Deferred.exceptionHook%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09%09jQuery.Deferred.exceptionHook%28%20e%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09%09process.stackTrace%20%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.4.1%0A%09%09%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-61%0A%09%09%09%09%09%09%09%09%09%09%09//%20Ignore%20post-resolution%20exceptions%0A%09%09%09%09%09%09%09%09%09%09%09if%20%28%20depth%20%2B%201%20%3E%3D%20maxDepth%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09%09//%20Only%20substitute%20handlers%20pass%20on%20context%0A%09%09%09%09%09%09%09%09%09%09%09%09//%20and%20multiple%20values%20%28non-spec%20behavior%29%0A%09%09%09%09%09%09%09%09%09%09%09%09if%20%28%20handler%20%21%3D%3D%20Thrower%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09%09%09that%20%3D%20undefined%3B%0A%09%09%09%09%09%09%09%09%09%09%09%09%09args%20%3D%20%5B%20e%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09%09%09deferred.rejectWith%28%20that%2C%20args%20%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%7D%3B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.1%0A%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-57%0A%09%09%09%09%09%09%09//%20Re-resolve%20promises%20immediately%20to%20dodge%20false%20rejection%20from%0A%09%09%09%09%09%09%09//%20subsequent%20errors%0A%09%09%09%09%09%09%09if%20%28%20depth%20%29%20%7B%0A%09%09%09%09%09%09%09%09process%28%29%3B%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Call%20an%20optional%20hook%20to%20record%20the%20stack%2C%20in%20case%20of%20exception%0A%09%09%09%09%09%09%09%09//%20since%20it%27s%20otherwise%20lost%20when%20execution%20goes%20async%0A%09%09%09%09%09%09%09%09if%20%28%20jQuery.Deferred.getStackHook%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09process.stackTrace%20%3D%20jQuery.Deferred.getStackHook%28%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09window.setTimeout%28%20process%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09return%20jQuery.Deferred%28%20function%28%20newDefer%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20progress_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%200%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onProgress%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onProgress%20%3A%0A%09%09%09%09%09%09%09%09%09Identity%2C%0A%09%09%09%09%09%09%09%09newDefer.notifyWith%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09//%20fulfilled_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%201%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onFulfilled%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onFulfilled%20%3A%0A%09%09%09%09%09%09%09%09%09Identity%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09//%20rejected_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%202%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onRejected%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onRejected%20%3A%0A%09%09%09%09%09%09%09%09%09Thrower%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%7D%20%29.promise%28%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Get%20a%20promise%20for%20this%20deferred%0A%09%09%09%09//%20If%20obj%20is%20provided%2C%20the%20promise%20aspect%20is%20added%20to%20the%20object%0A%09%09%09%09promise%3A%20function%28%20obj%20%29%20%7B%0A%09%09%09%09%09return%20obj%20%21%3D%20null%20%3F%20jQuery.extend%28%20obj%2C%20promise%20%29%20%3A%20promise%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%09%09%09deferred%20%3D%20%7B%7D%3B%0A%0A%09%09//%20Add%20list-specific%20methods%0A%09%09jQuery.each%28%20tuples%2C%20function%28%20i%2C%20tuple%20%29%20%7B%0A%09%09%09var%20list%20%3D%20tuple%5B%202%20%5D%2C%0A%09%09%09%09stateString%20%3D%20tuple%5B%205%20%5D%3B%0A%0A%09%09%09//%20promise.progress%20%3D%20list.add%0A%09%09%09//%20promise.done%20%3D%20list.add%0A%09%09%09//%20promise.fail%20%3D%20list.add%0A%09%09%09promise%5B%20tuple%5B%201%20%5D%20%5D%20%3D%20list.add%3B%0A%0A%09%09%09//%20Handle%20state%0A%09%09%09if%20%28%20stateString%20%29%20%7B%0A%09%09%09%09list.add%28%0A%09%09%09%09%09function%28%29%20%7B%0A%0A%09%09%09%09%09%09//%20state%20%3D%20%22resolved%22%20%28i.e.%2C%20fulfilled%29%0A%09%09%09%09%09%09//%20state%20%3D%20%22rejected%22%0A%09%09%09%09%09%09state%20%3D%20stateString%3B%0A%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09//%20rejected_callbacks.disable%0A%09%09%09%09%09//%20fulfilled_callbacks.disable%0A%09%09%09%09%09tuples%5B%203%20-%20i%20%5D%5B%202%20%5D.disable%2C%0A%0A%09%09%09%09%09//%20rejected_handlers.disable%0A%09%09%09%09%09//%20fulfilled_handlers.disable%0A%09%09%09%09%09tuples%5B%203%20-%20i%20%5D%5B%203%20%5D.disable%2C%0A%0A%09%09%09%09%09//%20progress_callbacks.lock%0A%09%09%09%09%09tuples%5B%200%20%5D%5B%202%20%5D.lock%2C%0A%0A%09%09%09%09%09//%20progress_handlers.lock%0A%09%09%09%09%09tuples%5B%200%20%5D%5B%203%20%5D.lock%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20progress_handlers.fire%0A%09%09%09//%20fulfilled_handlers.fire%0A%09%09%09//%20rejected_handlers.fire%0A%09%09%09list.add%28%20tuple%5B%203%20%5D.fire%20%29%3B%0A%0A%09%09%09//%20deferred.notify%20%3D%20function%28%29%20%7B%20deferred.notifyWith%28...%29%20%7D%0A%09%09%09//%20deferred.resolve%20%3D%20function%28%29%20%7B%20deferred.resolveWith%28...%29%20%7D%0A%09%09%09//%20deferred.reject%20%3D%20function%28%29%20%7B%20deferred.rejectWith%28...%29%20%7D%0A%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%28%20this%20%3D%3D%3D%20deferred%20%3F%20undefined%20%3A%20this%2C%20arguments%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%3B%0A%0A%09%09%09//%20deferred.notifyWith%20%3D%20list.fireWith%0A%09%09%09//%20deferred.resolveWith%20%3D%20list.fireWith%0A%09%09%09//%20deferred.rejectWith%20%3D%20list.fireWith%0A%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%20%3D%20list.fireWith%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09//%20Make%20the%20deferred%20a%20promise%0A%09%09promise.promise%28%20deferred%20%29%3B%0A%0A%09%09//%20Call%20given%20func%20if%20any%0A%09%09if%20%28%20func%20%29%20%7B%0A%09%09%09func.call%28%20deferred%2C%20deferred%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20All%20done%21%0A%09%09return%20deferred%3B%0A%09%7D%2C%0A%0A%09//%20Deferred%20helper%0A%09when%3A%20function%28%20singleValue%20%29%20%7B%0A%09%09var%0A%0A%09%09%09//%20count%20of%20uncompleted%20subordinates%0A%09%09%09remaining%20%3D%20arguments.length%2C%0A%0A%09%09%09//%20count%20of%20unprocessed%20arguments%0A%09%09%09i%20%3D%20remaining%2C%0A%0A%09%09%09//%20subordinate%20fulfillment%20data%0A%09%09%09resolveContexts%20%3D%20Array%28%20i%20%29%2C%0A%09%09%09resolveValues%20%3D%20slice.call%28%20arguments%20%29%2C%0A%0A%09%09%09//%20the%20master%20Deferred%0A%09%09%09master%20%3D%20jQuery.Deferred%28%29%2C%0A%0A%09%09%09//%20subordinate%20callback%20factory%0A%09%09%09updateFunc%20%3D%20function%28%20i%20%29%20%7B%0A%09%09%09%09return%20function%28%20value%20%29%20%7B%0A%09%09%09%09%09resolveContexts%5B%20i%20%5D%20%3D%20this%3B%0A%09%09%09%09%09resolveValues%5B%20i%20%5D%20%3D%20arguments.length%20%3E%201%20%3F%20slice.call%28%20arguments%20%29%20%3A%20value%3B%0A%09%09%09%09%09if%20%28%20%21%28%20--remaining%20%29%20%29%20%7B%0A%09%09%09%09%09%09master.resolveWith%28%20resolveContexts%2C%20resolveValues%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%0A%09%09//%20Single-%20and%20empty%20arguments%20are%20adopted%20like%20Promise.resolve%0A%09%09if%20%28%20remaining%20%3C%3D%201%20%29%20%7B%0A%09%09%09adoptValue%28%20singleValue%2C%20master.done%28%20updateFunc%28%20i%20%29%20%29.resolve%2C%20master.reject%2C%0A%09%09%09%09%21remaining%20%29%3B%0A%0A%09%09%09//%20Use%20.then%28%29%20to%20unwrap%20secondary%20thenables%20%28cf.%20gh-3000%29%0A%09%09%09if%20%28%20master.state%28%29%20%3D%3D%3D%20%22pending%22%20%7C%7C%0A%09%09%09%09isFunction%28%20resolveValues%5B%20i%20%5D%20%26%26%20resolveValues%5B%20i%20%5D.then%20%29%20%29%20%7B%0A%0A%09%09%09%09return%20master.then%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Multiple%20arguments%20are%20aggregated%20like%20Promise.all%20array%20elements%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09adoptValue%28%20resolveValues%5B%20i%20%5D%2C%20updateFunc%28%20i%20%29%2C%20master.reject%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20master.promise%28%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20These%20usually%20indicate%20a%20programmer%20mistake%20during%20development%2C%0A//%20warn%20about%20them%20ASAP%20rather%20than%20swallowing%20them%20by%20default.%0Avar%20rerrorNames%20%3D%20/%5E%28Eval%7CInternal%7CRange%7CReference%7CSyntax%7CType%7CURI%29Error%24/%3B%0A%0AjQuery.Deferred.exceptionHook%20%3D%20function%28%20error%2C%20stack%20%29%20%7B%0A%0A%09//%20Support%3A%20IE%208%20-%209%20only%0A%09//%20Console%20exists%20when%20dev%20tools%20are%20open%2C%20which%20can%20happen%20at%20any%20time%0A%09if%20%28%20window.console%20%26%26%20window.console.warn%20%26%26%20error%20%26%26%20rerrorNames.test%28%20error.name%20%29%20%29%20%7B%0A%09%09window.console.warn%28%20%22jQuery.Deferred%20exception%3A%20%22%20%2B%20error.message%2C%20error.stack%2C%20stack%20%29%3B%0A%09%7D%0A%7D%3B%0A%0A%0A%0A%0AjQuery.readyException%20%3D%20function%28%20error%20%29%20%7B%0A%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09throw%20error%3B%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0A//%20The%20deferred%20used%20on%20DOM%20ready%0Avar%20readyList%20%3D%20jQuery.Deferred%28%29%3B%0A%0AjQuery.fn.ready%20%3D%20function%28%20fn%20%29%20%7B%0A%0A%09readyList%0A%09%09.then%28%20fn%20%29%0A%0A%09%09//%20Wrap%20jQuery.readyException%20in%20a%20function%20so%20that%20the%20lookup%0A%09%09//%20happens%20at%20the%20time%20of%20error%20handling%20instead%20of%20callback%0A%09%09//%20registration.%0A%09%09.catch%28%20function%28%20error%20%29%20%7B%0A%09%09%09jQuery.readyException%28%20error%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09return%20this%3B%0A%7D%3B%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Is%20the%20DOM%20ready%20to%20be%20used%3F%20Set%20to%20true%20once%20it%20occurs.%0A%09isReady%3A%20false%2C%0A%0A%09//%20A%20counter%20to%20track%20how%20many%20items%20to%20wait%20for%20before%0A%09//%20the%20ready%20event%20fires.%20See%20%236781%0A%09readyWait%3A%201%2C%0A%0A%09//%20Handle%20when%20the%20DOM%20is%20ready%0A%09ready%3A%20function%28%20wait%20%29%20%7B%0A%0A%09%09//%20Abort%20if%20there%20are%20pending%20holds%20or%20we%27re%20already%20ready%0A%09%09if%20%28%20wait%20%3D%3D%3D%20true%20%3F%20--jQuery.readyWait%20%3A%20jQuery.isReady%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Remember%20that%20the%20DOM%20is%20ready%0A%09%09jQuery.isReady%20%3D%20true%3B%0A%0A%09%09//%20If%20a%20normal%20DOM%20Ready%20event%20fired%2C%20decrement%2C%20and%20wait%20if%20need%20be%0A%09%09if%20%28%20wait%20%21%3D%3D%20true%20%26%26%20--jQuery.readyWait%20%3E%200%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20If%20there%20are%20functions%20bound%2C%20to%20execute%0A%09%09readyList.resolveWith%28%20document%2C%20%5B%20jQuery%20%5D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.ready.then%20%3D%20readyList.then%3B%0A%0A//%20The%20ready%20event%20handler%20and%20self%20cleanup%20method%0Afunction%20completed%28%29%20%7B%0A%09document.removeEventListener%28%20%22DOMContentLoaded%22%2C%20completed%20%29%3B%0A%09window.removeEventListener%28%20%22load%22%2C%20completed%20%29%3B%0A%09jQuery.ready%28%29%3B%0A%7D%0A%0A//%20Catch%20cases%20where%20%24%28document%29.ready%28%29%20is%20called%0A//%20after%20the%20browser%20event%20has%20already%20occurred.%0A//%20Support%3A%20IE%20%3C%3D9%20-%2010%20only%0A//%20Older%20IE%20sometimes%20signals%20%22interactive%22%20too%20soon%0Aif%20%28%20document.readyState%20%3D%3D%3D%20%22complete%22%20%7C%7C%0A%09%28%20document.readyState%20%21%3D%3D%20%22loading%22%20%26%26%20%21document.documentElement.doScroll%20%29%20%29%20%7B%0A%0A%09//%20Handle%20it%20asynchronously%20to%20allow%20scripts%20the%20opportunity%20to%20delay%20ready%0A%09window.setTimeout%28%20jQuery.ready%20%29%3B%0A%0A%7D%20else%20%7B%0A%0A%09//%20Use%20the%20handy%20event%20callback%0A%09document.addEventListener%28%20%22DOMContentLoaded%22%2C%20completed%20%29%3B%0A%0A%09//%20A%20fallback%20to%20window.onload%2C%20that%20will%20always%20work%0A%09window.addEventListener%28%20%22load%22%2C%20completed%20%29%3B%0A%7D%0A%0A%0A%0A%0A//%20Multifunctional%20method%20to%20get%20and%20set%20values%20of%20a%20collection%0A//%20The%20value/s%20can%20optionally%20be%20executed%20if%20it%27s%20a%20function%0Avar%20access%20%3D%20function%28%20elems%2C%20fn%2C%20key%2C%20value%2C%20chainable%2C%20emptyGet%2C%20raw%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20elems.length%2C%0A%09%09bulk%20%3D%20key%20%3D%3D%20null%3B%0A%0A%09//%20Sets%20many%20values%0A%09if%20%28%20toType%28%20key%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09chainable%20%3D%20true%3B%0A%09%09for%20%28%20i%20in%20key%20%29%20%7B%0A%09%09%09access%28%20elems%2C%20fn%2C%20i%2C%20key%5B%20i%20%5D%2C%20true%2C%20emptyGet%2C%20raw%20%29%3B%0A%09%09%7D%0A%0A%09//%20Sets%20one%20value%0A%09%7D%20else%20if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09chainable%20%3D%20true%3B%0A%0A%09%09if%20%28%20%21isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09raw%20%3D%20true%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20bulk%20%29%20%7B%0A%0A%09%09%09//%20Bulk%20operations%20run%20against%20the%20entire%20set%0A%09%09%09if%20%28%20raw%20%29%20%7B%0A%09%09%09%09fn.call%28%20elems%2C%20value%20%29%3B%0A%09%09%09%09fn%20%3D%20null%3B%0A%0A%09%09%09//%20...except%20when%20executing%20function%20values%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09bulk%20%3D%20fn%3B%0A%09%09%09%09fn%20%3D%20function%28%20elem%2C%20_key%2C%20value%20%29%20%7B%0A%09%09%09%09%09return%20bulk.call%28%20jQuery%28%20elem%20%29%2C%20value%20%29%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20fn%20%29%20%7B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09fn%28%0A%09%09%09%09%09elems%5B%20i%20%5D%2C%20key%2C%20raw%20%3F%0A%09%09%09%09%09value%20%3A%0A%09%09%09%09%09value.call%28%20elems%5B%20i%20%5D%2C%20i%2C%20fn%28%20elems%5B%20i%20%5D%2C%20key%20%29%20%29%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20chainable%20%29%20%7B%0A%09%09return%20elems%3B%0A%09%7D%0A%0A%09//%20Gets%0A%09if%20%28%20bulk%20%29%20%7B%0A%09%09return%20fn.call%28%20elems%20%29%3B%0A%09%7D%0A%0A%09return%20len%20%3F%20fn%28%20elems%5B%200%20%5D%2C%20key%20%29%20%3A%20emptyGet%3B%0A%7D%3B%0A%0A%0A//%20Matches%20dashed%20string%20for%20camelizing%0Avar%20rmsPrefix%20%3D%20/%5E-ms-/%2C%0A%09rdashAlpha%20%3D%20/-%28%5Ba-z%5D%29/g%3B%0A%0A//%20Used%20by%20camelCase%20as%20callback%20to%20replace%28%29%0Afunction%20fcamelCase%28%20_all%2C%20letter%20%29%20%7B%0A%09return%20letter.toUpperCase%28%29%3B%0A%7D%0A%0A//%20Convert%20dashed%20to%20camelCase%3B%20used%20by%20the%20css%20and%20data%20modules%0A//%20Support%3A%20IE%20%3C%3D9%20-%2011%2C%20Edge%2012%20-%2015%0A//%20Microsoft%20forgot%20to%20hump%20their%20vendor%20prefix%20%28%239572%29%0Afunction%20camelCase%28%20string%20%29%20%7B%0A%09return%20string.replace%28%20rmsPrefix%2C%20%22ms-%22%20%29.replace%28%20rdashAlpha%2C%20fcamelCase%20%29%3B%0A%7D%0Avar%20acceptData%20%3D%20function%28%20owner%20%29%20%7B%0A%0A%09//%20Accepts%20only%3A%0A%09//%20%20-%20Node%0A%09//%20%20%20%20-%20Node.ELEMENT_NODE%0A%09//%20%20%20%20-%20Node.DOCUMENT_NODE%0A%09//%20%20-%20Object%0A%09//%20%20%20%20-%20Any%0A%09return%20owner.nodeType%20%3D%3D%3D%201%20%7C%7C%20owner.nodeType%20%3D%3D%3D%209%20%7C%7C%20%21%28%20%2Bowner.nodeType%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0Afunction%20Data%28%29%20%7B%0A%09this.expando%20%3D%20jQuery.expando%20%2B%20Data.uid%2B%2B%3B%0A%7D%0A%0AData.uid%20%3D%201%3B%0A%0AData.prototype%20%3D%20%7B%0A%0A%09cache%3A%20function%28%20owner%20%29%20%7B%0A%0A%09%09//%20Check%20if%20the%20owner%20object%20already%20has%20a%20cache%0A%09%09var%20value%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%0A%09%09//%20If%20not%2C%20create%20one%0A%09%09if%20%28%20%21value%20%29%20%7B%0A%09%09%09value%20%3D%20%7B%7D%3B%0A%0A%09%09%09//%20We%20can%20accept%20data%20for%20non-element%20nodes%20in%20modern%20browsers%2C%0A%09%09%09//%20but%20we%20should%20not%2C%20see%20%238335.%0A%09%09%09//%20Always%20return%20an%20empty%20object.%0A%09%09%09if%20%28%20acceptData%28%20owner%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20it%20is%20a%20node%20unlikely%20to%20be%20stringify-ed%20or%20looped%20over%0A%09%09%09%09//%20use%20plain%20assignment%0A%09%09%09%09if%20%28%20owner.nodeType%20%29%20%7B%0A%09%09%09%09%09owner%5B%20this.expando%20%5D%20%3D%20value%3B%0A%0A%09%09%09%09//%20Otherwise%20secure%20it%20in%20a%20non-enumerable%20property%0A%09%09%09%09//%20configurable%20must%20be%20true%20to%20allow%20the%20property%20to%20be%0A%09%09%09%09//%20deleted%20when%20data%20is%20removed%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09Object.defineProperty%28%20owner%2C%20this.expando%2C%20%7B%0A%09%09%09%09%09%09value%3A%20value%2C%0A%09%09%09%09%09%09configurable%3A%20true%0A%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20value%3B%0A%09%7D%2C%0A%09set%3A%20function%28%20owner%2C%20data%2C%20value%20%29%20%7B%0A%09%09var%20prop%2C%0A%09%09%09cache%20%3D%20this.cache%28%20owner%20%29%3B%0A%0A%09%09//%20Handle%3A%20%5B%20owner%2C%20key%2C%20value%20%5D%20args%0A%09%09//%20Always%20use%20camelCase%20key%20%28gh-2257%29%0A%09%09if%20%28%20typeof%20data%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09cache%5B%20camelCase%28%20data%20%29%20%5D%20%3D%20value%3B%0A%0A%09%09//%20Handle%3A%20%5B%20owner%2C%20%7B%20properties%20%7D%20%5D%20args%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Copy%20the%20properties%20one-by-one%20to%20the%20cache%20object%0A%09%09%09for%20%28%20prop%20in%20data%20%29%20%7B%0A%09%09%09%09cache%5B%20camelCase%28%20prop%20%29%20%5D%20%3D%20data%5B%20prop%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20cache%3B%0A%09%7D%2C%0A%09get%3A%20function%28%20owner%2C%20key%20%29%20%7B%0A%09%09return%20key%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09this.cache%28%20owner%20%29%20%3A%0A%0A%09%09%09//%20Always%20use%20camelCase%20key%20%28gh-2257%29%0A%09%09%09owner%5B%20this.expando%20%5D%20%26%26%20owner%5B%20this.expando%20%5D%5B%20camelCase%28%20key%20%29%20%5D%3B%0A%09%7D%2C%0A%09access%3A%20function%28%20owner%2C%20key%2C%20value%20%29%20%7B%0A%0A%09%09//%20In%20cases%20where%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20No%20key%20was%20specified%0A%09%09//%20%20%202.%20A%20string%20key%20was%20specified%2C%20but%20no%20value%20provided%0A%09%09//%0A%09%09//%20Take%20the%20%22read%22%20path%20and%20allow%20the%20get%20method%20to%20determine%0A%09%09//%20which%20value%20to%20return%2C%20respectively%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20The%20entire%20cache%20object%0A%09%09//%20%20%202.%20The%20data%20stored%20at%20the%20key%0A%09%09//%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%7C%7C%0A%09%09%09%09%28%20%28%20key%20%26%26%20typeof%20key%20%3D%3D%3D%20%22string%22%20%29%20%26%26%20value%20%3D%3D%3D%20undefined%20%29%20%29%20%7B%0A%0A%09%09%09return%20this.get%28%20owner%2C%20key%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20When%20the%20key%20is%20not%20a%20string%2C%20or%20both%20a%20key%20and%20value%0A%09%09//%20are%20specified%2C%20set%20or%20extend%20%28existing%20objects%29%20with%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20An%20object%20of%20properties%0A%09%09//%20%20%202.%20A%20key%20and%20value%0A%09%09//%0A%09%09this.set%28%20owner%2C%20key%2C%20value%20%29%3B%0A%0A%09%09//%20Since%20the%20%22set%22%20path%20can%20have%20two%20possible%20entry%20points%0A%09%09//%20return%20the%20expected%20data%20based%20on%20which%20path%20was%20taken%5B%2A%5D%0A%09%09return%20value%20%21%3D%3D%20undefined%20%3F%20value%20%3A%20key%3B%0A%09%7D%2C%0A%09remove%3A%20function%28%20owner%2C%20key%20%29%20%7B%0A%09%09var%20i%2C%0A%09%09%09cache%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%0A%09%09if%20%28%20cache%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20key%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09//%20Support%20array%20or%20space%20separated%20string%20of%20keys%0A%09%09%09if%20%28%20Array.isArray%28%20key%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20key%20is%20an%20array%20of%20keys...%0A%09%09%09%09//%20We%20always%20set%20camelCase%20keys%2C%20so%20remove%20that.%0A%09%09%09%09key%20%3D%20key.map%28%20camelCase%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09key%20%3D%20camelCase%28%20key%20%29%3B%0A%0A%09%09%09%09//%20If%20a%20key%20with%20the%20spaces%20exists%2C%20use%20it.%0A%09%09%09%09//%20Otherwise%2C%20create%20an%20array%20by%20matching%20non-whitespace%0A%09%09%09%09key%20%3D%20key%20in%20cache%20%3F%0A%09%09%09%09%09%5B%20key%20%5D%20%3A%0A%09%09%09%09%09%28%20key.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09i%20%3D%20key.length%3B%0A%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09delete%20cache%5B%20key%5B%20i%20%5D%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Remove%20the%20expando%20if%20there%27s%20no%20more%20data%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%7C%7C%20jQuery.isEmptyObject%28%20cache%20%29%20%29%20%7B%0A%0A%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%0A%09%09%09//%20Webkit%20%26%20Blink%20performance%20suffers%20when%20deleting%20properties%0A%09%09%09//%20from%20DOM%20nodes%2C%20so%20set%20to%20undefined%20instead%0A%09%09%09//%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D378607%20%28bug%20restricted%29%0A%09%09%09if%20%28%20owner.nodeType%20%29%20%7B%0A%09%09%09%09owner%5B%20this.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09delete%20owner%5B%20this.expando%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%09hasData%3A%20function%28%20owner%20%29%20%7B%0A%09%09var%20cache%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%09%09return%20cache%20%21%3D%3D%20undefined%20%26%26%20%21jQuery.isEmptyObject%28%20cache%20%29%3B%0A%09%7D%0A%7D%3B%0Avar%20dataPriv%20%3D%20new%20Data%28%29%3B%0A%0Avar%20dataUser%20%3D%20new%20Data%28%29%3B%0A%0A%0A%0A//%09Implementation%20Summary%0A//%0A//%091.%20Enforce%20API%20surface%20and%20semantic%20compatibility%20with%201.9.x%20branch%0A//%092.%20Improve%20the%20module%27s%20maintainability%20by%20reducing%20the%20storage%0A//%09%09paths%20to%20a%20single%20mechanism.%0A//%093.%20Use%20the%20same%20single%20mechanism%20to%20support%20%22private%22%20and%20%22user%22%20data.%0A//%094.%20_Never_%20expose%20%22private%22%20data%20to%20user%20code%20%28TODO%3A%20Drop%20_data%2C%20_removeData%29%0A//%095.%20Avoid%20exposing%20implementation%20details%20on%20user%20objects%20%28eg.%20expando%20properties%29%0A//%096.%20Provide%20a%20clear%20path%20for%20implementation%20upgrade%20to%20WeakMap%20in%202014%0A%0Avar%20rbrace%20%3D%20/%5E%28%3F%3A%5C%7B%5B%5Cw%5CW%5D%2A%5C%7D%7C%5C%5B%5B%5Cw%5CW%5D%2A%5C%5D%29%24/%2C%0A%09rmultiDash%20%3D%20/%5BA-Z%5D/g%3B%0A%0Afunction%20getData%28%20data%20%29%20%7B%0A%09if%20%28%20data%20%3D%3D%3D%20%22true%22%20%29%20%7B%0A%09%09return%20true%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%3D%20%22false%22%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%3D%20%22null%22%20%29%20%7B%0A%09%09return%20null%3B%0A%09%7D%0A%0A%09//%20Only%20convert%20to%20a%20number%20if%20it%20doesn%27t%20change%20the%20string%0A%09if%20%28%20data%20%3D%3D%3D%20%2Bdata%20%2B%20%22%22%20%29%20%7B%0A%09%09return%20%2Bdata%3B%0A%09%7D%0A%0A%09if%20%28%20rbrace.test%28%20data%20%29%20%29%20%7B%0A%09%09return%20JSON.parse%28%20data%20%29%3B%0A%09%7D%0A%0A%09return%20data%3B%0A%7D%0A%0Afunction%20dataAttr%28%20elem%2C%20key%2C%20data%20%29%20%7B%0A%09var%20name%3B%0A%0A%09//%20If%20nothing%20was%20found%20internally%2C%20try%20to%20fetch%20any%0A%09//%20data%20from%20the%20HTML5%20data-%2A%20attribute%0A%09if%20%28%20data%20%3D%3D%3D%20undefined%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09name%20%3D%20%22data-%22%20%2B%20key.replace%28%20rmultiDash%2C%20%22-%24%26%22%20%29.toLowerCase%28%29%3B%0A%09%09data%20%3D%20elem.getAttribute%28%20name%20%29%3B%0A%0A%09%09if%20%28%20typeof%20data%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09data%20%3D%20getData%28%20data%20%29%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%0A%09%09%09//%20Make%20sure%20we%20set%20the%20data%20so%20it%20isn%27t%20changed%20later%0A%09%09%09dataUser.set%28%20elem%2C%20key%2C%20data%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%0A%09%7D%0A%09return%20data%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%09hasData%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dataUser.hasData%28%20elem%20%29%20%7C%7C%20dataPriv.hasData%28%20elem%20%29%3B%0A%09%7D%2C%0A%0A%09data%3A%20function%28%20elem%2C%20name%2C%20data%20%29%20%7B%0A%09%09return%20dataUser.access%28%20elem%2C%20name%2C%20data%20%29%3B%0A%09%7D%2C%0A%0A%09removeData%3A%20function%28%20elem%2C%20name%20%29%20%7B%0A%09%09dataUser.remove%28%20elem%2C%20name%20%29%3B%0A%09%7D%2C%0A%0A%09//%20TODO%3A%20Now%20that%20all%20calls%20to%20_data%20and%20_removeData%20have%20been%20replaced%0A%09//%20with%20direct%20calls%20to%20dataPriv%20methods%2C%20these%20can%20be%20deprecated.%0A%09_data%3A%20function%28%20elem%2C%20name%2C%20data%20%29%20%7B%0A%09%09return%20dataPriv.access%28%20elem%2C%20name%2C%20data%20%29%3B%0A%09%7D%2C%0A%0A%09_removeData%3A%20function%28%20elem%2C%20name%20%29%20%7B%0A%09%09dataPriv.remove%28%20elem%2C%20name%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09data%3A%20function%28%20key%2C%20value%20%29%20%7B%0A%09%09var%20i%2C%20name%2C%20data%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%2C%0A%09%09%09attrs%20%3D%20elem%20%26%26%20elem.attributes%3B%0A%0A%09%09//%20Gets%20all%20values%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20this.length%20%29%20%7B%0A%09%09%09%09data%20%3D%20dataUser.get%28%20elem%20%29%3B%0A%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%21dataPriv.get%28%20elem%2C%20%22hasDataAttrs%22%20%29%20%29%20%7B%0A%09%09%09%09%09i%20%3D%20attrs.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%2011%20only%0A%09%09%09%09%09%09//%20The%20attrs%20elements%20can%20be%20null%20%28%2314894%29%0A%09%09%09%09%09%09if%20%28%20attrs%5B%20i%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09name%20%3D%20attrs%5B%20i%20%5D.name%3B%0A%09%09%09%09%09%09%09if%20%28%20name.indexOf%28%20%22data-%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09%09%09%09%09%09name%20%3D%20camelCase%28%20name.slice%28%205%20%29%20%29%3B%0A%09%09%09%09%09%09%09%09dataAttr%28%20elem%2C%20name%2C%20data%5B%20name%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09dataPriv.set%28%20elem%2C%20%22hasDataAttrs%22%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09return%20data%3B%0A%09%09%7D%0A%0A%09%09//%20Sets%20multiple%20values%0A%09%09if%20%28%20typeof%20key%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09%09dataUser.set%28%20this%2C%20key%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09var%20data%3B%0A%0A%09%09%09//%20The%20calling%20jQuery%20object%20%28element%20matches%29%20is%20not%20empty%0A%09%09%09//%20%28and%20therefore%20has%20an%20element%20appears%20at%20this%5B%200%20%5D%29%20and%20the%0A%09%09%09//%20%60value%60%20parameter%20was%20not%20undefined.%20An%20empty%20jQuery%20object%0A%09%09%09//%20will%20result%20in%20%60undefined%60%20for%20elem%20%3D%20this%5B%200%20%5D%20which%20will%0A%09%09%09//%20throw%20an%20exception%20if%20an%20attempt%20to%20read%20a%20data%20cache%20is%20made.%0A%09%09%09if%20%28%20elem%20%26%26%20value%20%3D%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09//%20Attempt%20to%20get%20data%20from%20the%20cache%0A%09%09%09%09//%20The%20key%20will%20always%20be%20camelCased%20in%20Data%0A%09%09%09%09data%20%3D%20dataUser.get%28%20elem%2C%20key%20%29%3B%0A%09%09%09%09if%20%28%20data%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09return%20data%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Attempt%20to%20%22discover%22%20the%20data%20in%0A%09%09%09%09//%20HTML5%20custom%20data-%2A%20attrs%0A%09%09%09%09data%20%3D%20dataAttr%28%20elem%2C%20key%20%29%3B%0A%09%09%09%09if%20%28%20data%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09return%20data%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20We%20tried%20really%20hard%2C%20but%20the%20data%20doesn%27t%20exist.%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Set%20the%20data...%0A%09%09%09this.each%28%20function%28%29%20%7B%0A%0A%09%09%09%09//%20We%20always%20store%20the%20camelCased%20key%0A%09%09%09%09dataUser.set%28%20this%2C%20key%2C%20value%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%3E%201%2C%20null%2C%20true%20%29%3B%0A%09%7D%2C%0A%0A%09removeData%3A%20function%28%20key%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09dataUser.remove%28%20this%2C%20key%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery.extend%28%20%7B%0A%09queue%3A%20function%28%20elem%2C%20type%2C%20data%20%29%20%7B%0A%09%09var%20queue%3B%0A%0A%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09type%20%3D%20%28%20type%20%7C%7C%20%22fx%22%20%29%20%2B%20%22queue%22%3B%0A%09%09%09queue%20%3D%20dataPriv.get%28%20elem%2C%20type%20%29%3B%0A%0A%09%09%09//%20Speed%20up%20dequeue%20by%20getting%20out%20quickly%20if%20this%20is%20just%20a%20lookup%0A%09%09%09if%20%28%20data%20%29%20%7B%0A%09%09%09%09if%20%28%20%21queue%20%7C%7C%20Array.isArray%28%20data%20%29%20%29%20%7B%0A%09%09%09%09%09queue%20%3D%20dataPriv.access%28%20elem%2C%20type%2C%20jQuery.makeArray%28%20data%20%29%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09queue.push%28%20data%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20queue%20%7C%7C%20%5B%5D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09dequeue%3A%20function%28%20elem%2C%20type%20%29%20%7B%0A%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09%09var%20queue%20%3D%20jQuery.queue%28%20elem%2C%20type%20%29%2C%0A%09%09%09startLength%20%3D%20queue.length%2C%0A%09%09%09fn%20%3D%20queue.shift%28%29%2C%0A%09%09%09hooks%20%3D%20jQuery._queueHooks%28%20elem%2C%20type%20%29%2C%0A%09%09%09next%20%3D%20function%28%29%20%7B%0A%09%09%09%09jQuery.dequeue%28%20elem%2C%20type%20%29%3B%0A%09%09%09%7D%3B%0A%0A%09%09//%20If%20the%20fx%20queue%20is%20dequeued%2C%20always%20remove%20the%20progress%20sentinel%0A%09%09if%20%28%20fn%20%3D%3D%3D%20%22inprogress%22%20%29%20%7B%0A%09%09%09fn%20%3D%20queue.shift%28%29%3B%0A%09%09%09startLength--%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20fn%20%29%20%7B%0A%0A%09%09%09//%20Add%20a%20progress%20sentinel%20to%20prevent%20the%20fx%20queue%20from%20being%0A%09%09%09//%20automatically%20dequeued%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22fx%22%20%29%20%7B%0A%09%09%09%09queue.unshift%28%20%22inprogress%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Clear%20up%20the%20last%20queue%20stop%20function%0A%09%09%09delete%20hooks.stop%3B%0A%09%09%09fn.call%28%20elem%2C%20next%2C%20hooks%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%21startLength%20%26%26%20hooks%20%29%20%7B%0A%09%09%09hooks.empty.fire%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Not%20public%20-%20generate%20a%20queueHooks%20object%2C%20or%20return%20the%20current%20one%0A%09_queueHooks%3A%20function%28%20elem%2C%20type%20%29%20%7B%0A%09%09var%20key%20%3D%20type%20%2B%20%22queueHooks%22%3B%0A%09%09return%20dataPriv.get%28%20elem%2C%20key%20%29%20%7C%7C%20dataPriv.access%28%20elem%2C%20key%2C%20%7B%0A%09%09%09empty%3A%20jQuery.Callbacks%28%20%22once%20memory%22%20%29.add%28%20function%28%29%20%7B%0A%09%09%09%09dataPriv.remove%28%20elem%2C%20%5B%20type%20%2B%20%22queue%22%2C%20key%20%5D%20%29%3B%0A%09%09%09%7D%20%29%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09queue%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09var%20setter%20%3D%202%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09data%20%3D%20type%3B%0A%09%09%09type%20%3D%20%22fx%22%3B%0A%09%09%09setter--%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20arguments.length%20%3C%20setter%20%29%20%7B%0A%09%09%09return%20jQuery.queue%28%20this%5B%200%20%5D%2C%20type%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20data%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09this%20%3A%0A%09%09%09this.each%28%20function%28%29%20%7B%0A%09%09%09%09var%20queue%20%3D%20jQuery.queue%28%20this%2C%20type%2C%20data%20%29%3B%0A%0A%09%09%09%09//%20Ensure%20a%20hooks%20for%20this%20queue%0A%09%09%09%09jQuery._queueHooks%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09%09if%20%28%20type%20%3D%3D%3D%20%22fx%22%20%26%26%20queue%5B%200%20%5D%20%21%3D%3D%20%22inprogress%22%20%29%20%7B%0A%09%09%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09dequeue%3A%20function%28%20type%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09clearQueue%3A%20function%28%20type%20%29%20%7B%0A%09%09return%20this.queue%28%20type%20%7C%7C%20%22fx%22%2C%20%5B%5D%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Get%20a%20promise%20resolved%20when%20queues%20of%20a%20certain%20type%0A%09//%20are%20emptied%20%28fx%20is%20the%20type%20by%20default%29%0A%09promise%3A%20function%28%20type%2C%20obj%20%29%20%7B%0A%09%09var%20tmp%2C%0A%09%09%09count%20%3D%201%2C%0A%09%09%09defer%20%3D%20jQuery.Deferred%28%29%2C%0A%09%09%09elements%20%3D%20this%2C%0A%09%09%09i%20%3D%20this.length%2C%0A%09%09%09resolve%20%3D%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20%21%28%20--count%20%29%20%29%20%7B%0A%09%09%09%09%09defer.resolveWith%28%20elements%2C%20%5B%20elements%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09obj%20%3D%20type%3B%0A%09%09%09type%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09tmp%20%3D%20dataPriv.get%28%20elements%5B%20i%20%5D%2C%20type%20%2B%20%22queueHooks%22%20%29%3B%0A%09%09%09if%20%28%20tmp%20%26%26%20tmp.empty%20%29%20%7B%0A%09%09%09%09count%2B%2B%3B%0A%09%09%09%09tmp.empty.add%28%20resolve%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09resolve%28%29%3B%0A%09%09return%20defer.promise%28%20obj%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0Avar%20pnum%20%3D%20%28%20/%5B%2B-%5D%3F%28%3F%3A%5Cd%2A%5C.%7C%29%5Cd%2B%28%3F%3A%5BeE%5D%5B%2B-%5D%3F%5Cd%2B%7C%29/%20%29.source%3B%0A%0Avar%20rcssNum%20%3D%20new%20RegExp%28%20%22%5E%28%3F%3A%28%5B%2B-%5D%29%3D%7C%29%28%22%20%2B%20pnum%20%2B%20%22%29%28%5Ba-z%25%5D%2A%29%24%22%2C%20%22i%22%20%29%3B%0A%0A%0Avar%20cssExpand%20%3D%20%5B%20%22Top%22%2C%20%22Right%22%2C%20%22Bottom%22%2C%20%22Left%22%20%5D%3B%0A%0Avar%20documentElement%20%3D%20document.documentElement%3B%0A%0A%0A%0A%09var%20isAttached%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.contains%28%20elem.ownerDocument%2C%20elem%20%29%3B%0A%09%09%7D%2C%0A%09%09composed%20%3D%20%7B%20composed%3A%20true%20%7D%3B%0A%0A%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%2C%20iOS%2010.0%20-%2010.2%20only%0A%09//%20Check%20attachment%20across%20shadow%20DOM%20boundaries%20when%20possible%20%28gh-3504%29%0A%09//%20Support%3A%20iOS%2010.0-10.2%20only%0A%09//%20Early%20iOS%2010%20versions%20support%20%60attachShadow%60%20but%20not%20%60getRootNode%60%2C%0A%09//%20leading%20to%20errors.%20We%20need%20to%20check%20for%20%60getRootNode%60.%0A%09if%20%28%20documentElement.getRootNode%20%29%20%7B%0A%09%09isAttached%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.contains%28%20elem.ownerDocument%2C%20elem%20%29%20%7C%7C%0A%09%09%09%09elem.getRootNode%28%20composed%20%29%20%3D%3D%3D%20elem.ownerDocument%3B%0A%09%09%7D%3B%0A%09%7D%0Avar%20isHiddenWithinTree%20%3D%20function%28%20elem%2C%20el%20%29%20%7B%0A%0A%09%09//%20isHiddenWithinTree%20might%20be%20called%20from%20jQuery%23filter%20function%3B%0A%09%09//%20in%20that%20case%2C%20element%20will%20be%20second%20argument%0A%09%09elem%20%3D%20el%20%7C%7C%20elem%3B%0A%0A%09%09//%20Inline%20style%20trumps%20all%0A%09%09return%20elem.style.display%20%3D%3D%3D%20%22none%22%20%7C%7C%0A%09%09%09elem.style.display%20%3D%3D%3D%20%22%22%20%26%26%0A%0A%09%09%09//%20Otherwise%2C%20check%20computed%20style%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D43%20-%2045%0A%09%09%09//%20Disconnected%20elements%20can%20have%20computed%20display%3A%20none%2C%20so%20first%20confirm%20that%20elem%20is%0A%09%09%09//%20in%20the%20document.%0A%09%09%09isAttached%28%20elem%20%29%20%26%26%0A%0A%09%09%09jQuery.css%28%20elem%2C%20%22display%22%20%29%20%3D%3D%3D%20%22none%22%3B%0A%09%7D%3B%0A%0A%0A%0Afunction%20adjustCSS%28%20elem%2C%20prop%2C%20valueParts%2C%20tween%20%29%20%7B%0A%09var%20adjusted%2C%20scale%2C%0A%09%09maxIterations%20%3D%2020%2C%0A%09%09currentValue%20%3D%20tween%20%3F%0A%09%09%09function%28%29%20%7B%0A%09%09%09%09return%20tween.cur%28%29%3B%0A%09%09%09%7D%20%3A%0A%09%09%09function%28%29%20%7B%0A%09%09%09%09return%20jQuery.css%28%20elem%2C%20prop%2C%20%22%22%20%29%3B%0A%09%09%09%7D%2C%0A%09%09initial%20%3D%20currentValue%28%29%2C%0A%09%09unit%20%3D%20valueParts%20%26%26%20valueParts%5B%203%20%5D%20%7C%7C%20%28%20jQuery.cssNumber%5B%20prop%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%2C%0A%0A%09%09//%20Starting%20value%20computation%20is%20required%20for%20potential%20unit%20mismatches%0A%09%09initialInUnit%20%3D%20elem.nodeType%20%26%26%0A%09%09%09%28%20jQuery.cssNumber%5B%20prop%20%5D%20%7C%7C%20unit%20%21%3D%3D%20%22px%22%20%26%26%20%2Binitial%20%29%20%26%26%0A%09%09%09rcssNum.exec%28%20jQuery.css%28%20elem%2C%20prop%20%29%20%29%3B%0A%0A%09if%20%28%20initialInUnit%20%26%26%20initialInUnit%5B%203%20%5D%20%21%3D%3D%20unit%20%29%20%7B%0A%0A%09%09//%20Support%3A%20Firefox%20%3C%3D54%0A%09%09//%20Halve%20the%20iteration%20target%20value%20to%20prevent%20interference%20from%20CSS%20upper%20bounds%20%28gh-2144%29%0A%09%09initial%20%3D%20initial%20/%202%3B%0A%0A%09%09//%20Trust%20units%20reported%20by%20jQuery.css%0A%09%09unit%20%3D%20unit%20%7C%7C%20initialInUnit%5B%203%20%5D%3B%0A%0A%09%09//%20Iteratively%20approximate%20from%20a%20nonzero%20starting%20point%0A%09%09initialInUnit%20%3D%20%2Binitial%20%7C%7C%201%3B%0A%0A%09%09while%20%28%20maxIterations--%20%29%20%7B%0A%0A%09%09%09//%20Evaluate%20and%20update%20our%20best%20guess%20%28doubling%20guesses%20that%20zero%20out%29.%0A%09%09%09//%20Finish%20if%20the%20scale%20equals%20or%20crosses%201%20%28making%20the%20old%2Anew%20product%20non-positive%29.%0A%09%09%09jQuery.style%28%20elem%2C%20prop%2C%20initialInUnit%20%2B%20unit%20%29%3B%0A%09%09%09if%20%28%20%28%201%20-%20scale%20%29%20%2A%20%28%201%20-%20%28%20scale%20%3D%20currentValue%28%29%20/%20initial%20%7C%7C%200.5%20%29%20%29%20%3C%3D%200%20%29%20%7B%0A%09%09%09%09maxIterations%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%09initialInUnit%20%3D%20initialInUnit%20/%20scale%3B%0A%0A%09%09%7D%0A%0A%09%09initialInUnit%20%3D%20initialInUnit%20%2A%202%3B%0A%09%09jQuery.style%28%20elem%2C%20prop%2C%20initialInUnit%20%2B%20unit%20%29%3B%0A%0A%09%09//%20Make%20sure%20we%20update%20the%20tween%20properties%20later%20on%0A%09%09valueParts%20%3D%20valueParts%20%7C%7C%20%5B%5D%3B%0A%09%7D%0A%0A%09if%20%28%20valueParts%20%29%20%7B%0A%09%09initialInUnit%20%3D%20%2BinitialInUnit%20%7C%7C%20%2Binitial%20%7C%7C%200%3B%0A%0A%09%09//%20Apply%20relative%20offset%20%28%2B%3D/-%3D%29%20if%20specified%0A%09%09adjusted%20%3D%20valueParts%5B%201%20%5D%20%3F%0A%09%09%09initialInUnit%20%2B%20%28%20valueParts%5B%201%20%5D%20%2B%201%20%29%20%2A%20valueParts%5B%202%20%5D%20%3A%0A%09%09%09%2BvalueParts%5B%202%20%5D%3B%0A%09%09if%20%28%20tween%20%29%20%7B%0A%09%09%09tween.unit%20%3D%20unit%3B%0A%09%09%09tween.start%20%3D%20initialInUnit%3B%0A%09%09%09tween.end%20%3D%20adjusted%3B%0A%09%09%7D%0A%09%7D%0A%09return%20adjusted%3B%0A%7D%0A%0A%0Avar%20defaultDisplayMap%20%3D%20%7B%7D%3B%0A%0Afunction%20getDefaultDisplay%28%20elem%20%29%20%7B%0A%09var%20temp%2C%0A%09%09doc%20%3D%20elem.ownerDocument%2C%0A%09%09nodeName%20%3D%20elem.nodeName%2C%0A%09%09display%20%3D%20defaultDisplayMap%5B%20nodeName%20%5D%3B%0A%0A%09if%20%28%20display%20%29%20%7B%0A%09%09return%20display%3B%0A%09%7D%0A%0A%09temp%20%3D%20doc.body.appendChild%28%20doc.createElement%28%20nodeName%20%29%20%29%3B%0A%09display%20%3D%20jQuery.css%28%20temp%2C%20%22display%22%20%29%3B%0A%0A%09temp.parentNode.removeChild%28%20temp%20%29%3B%0A%0A%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09display%20%3D%20%22block%22%3B%0A%09%7D%0A%09defaultDisplayMap%5B%20nodeName%20%5D%20%3D%20display%3B%0A%0A%09return%20display%3B%0A%7D%0A%0Afunction%20showHide%28%20elements%2C%20show%20%29%20%7B%0A%09var%20display%2C%20elem%2C%0A%09%09values%20%3D%20%5B%5D%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20elements.length%3B%0A%0A%09//%20Determine%20new%20display%20value%20for%20elements%20that%20need%20to%20change%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09elem%20%3D%20elements%5B%20index%20%5D%3B%0A%09%09if%20%28%20%21elem.style%20%29%20%7B%0A%09%09%09continue%3B%0A%09%09%7D%0A%0A%09%09display%20%3D%20elem.style.display%3B%0A%09%09if%20%28%20show%20%29%20%7B%0A%0A%09%09%09//%20Since%20we%20force%20visibility%20upon%20cascade-hidden%20elements%2C%20an%20immediate%20%28and%20slow%29%0A%09%09%09//%20check%20is%20required%20in%20this%20first%20loop%20unless%20we%20have%20a%20nonempty%20display%20value%20%28either%0A%09%09%09//%20inline%20or%20about-to-be-restored%29%0A%09%09%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20dataPriv.get%28%20elem%2C%20%22display%22%20%29%20%7C%7C%20null%3B%0A%09%09%09%09if%20%28%20%21values%5B%20index%20%5D%20%29%20%7B%0A%09%09%09%09%09elem.style.display%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09if%20%28%20elem.style.display%20%3D%3D%3D%20%22%22%20%26%26%20isHiddenWithinTree%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20getDefaultDisplay%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28%20display%20%21%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20%22none%22%3B%0A%0A%09%09%09%09//%20Remember%20what%20we%27re%20overwriting%0A%09%09%09%09dataPriv.set%28%20elem%2C%20%22display%22%2C%20display%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Set%20the%20display%20of%20the%20elements%20in%20a%20second%20loop%20to%20avoid%20constant%20reflow%0A%09for%20%28%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09if%20%28%20values%5B%20index%20%5D%20%21%3D%20null%20%29%20%7B%0A%09%09%09elements%5B%20index%20%5D.style.display%20%3D%20values%5B%20index%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elements%3B%0A%7D%0A%0AjQuery.fn.extend%28%20%7B%0A%09show%3A%20function%28%29%20%7B%0A%09%09return%20showHide%28%20this%2C%20true%20%29%3B%0A%09%7D%2C%0A%09hide%3A%20function%28%29%20%7B%0A%09%09return%20showHide%28%20this%20%29%3B%0A%09%7D%2C%0A%09toggle%3A%20function%28%20state%20%29%20%7B%0A%09%09if%20%28%20typeof%20state%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09%09return%20state%20%3F%20this.show%28%29%20%3A%20this.hide%28%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09if%20%28%20isHiddenWithinTree%28%20this%20%29%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.show%28%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.hide%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0Avar%20rcheckableType%20%3D%20%28%20/%5E%28%3F%3Acheckbox%7Cradio%29%24/i%20%29%3B%0A%0Avar%20rtagName%20%3D%20%28%20/%3C%28%5Ba-z%5D%5B%5E%5C/%5C0%3E%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%29/i%20%29%3B%0A%0Avar%20rscriptType%20%3D%20%28%20/%5E%24%7C%5Emodule%24%7C%5C/%28%3F%3Ajava%7Cecma%29script/i%20%29%3B%0A%0A%0A%0A%28%20function%28%29%20%7B%0A%09var%20fragment%20%3D%20document.createDocumentFragment%28%29%2C%0A%09%09div%20%3D%20fragment.appendChild%28%20document.createElement%28%20%22div%22%20%29%20%29%2C%0A%09%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%0A%09//%20Support%3A%20Android%204.0%20-%204.3%20only%0A%09//%20Check%20state%20lost%20if%20the%20name%20is%20set%20%28%2311217%29%0A%09//%20Support%3A%20Windows%20Web%20Apps%20%28WWA%29%0A%09//%20%60name%60%20and%20%60type%60%20must%20use%20.setAttribute%20for%20WWA%20%28%2314901%29%0A%09input.setAttribute%28%20%22type%22%2C%20%22radio%22%20%29%3B%0A%09input.setAttribute%28%20%22checked%22%2C%20%22checked%22%20%29%3B%0A%09input.setAttribute%28%20%22name%22%2C%20%22t%22%20%29%3B%0A%0A%09div.appendChild%28%20input%20%29%3B%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.1%20only%0A%09//%20Older%20WebKit%20doesn%27t%20clone%20checked%20state%20correctly%20in%20fragments%0A%09support.checkClone%20%3D%20div.cloneNode%28%20true%20%29.cloneNode%28%20true%20%29.lastChild.checked%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20Make%20sure%20textarea%20%28and%20checkbox%29%20defaultValue%20is%20properly%20cloned%0A%09div.innerHTML%20%3D%20%22%3Ctextarea%3Ex%3C/textarea%3E%22%3B%0A%09support.noCloneChecked%20%3D%20%21%21div.cloneNode%28%20true%20%29.lastChild.defaultValue%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09//%20IE%20%3C%3D9%20replaces%20%3Coption%3E%20tags%20with%20their%20contents%20when%20inserted%20outside%20of%0A%09//%20the%20select%20element.%0A%09div.innerHTML%20%3D%20%22%3Coption%3E%3C/option%3E%22%3B%0A%09support.option%20%3D%20%21%21div.lastChild%3B%0A%7D%20%29%28%29%3B%0A%0A%0A//%20We%20have%20to%20close%20these%20tags%20to%20support%20XHTML%20%28%2313200%29%0Avar%20wrapMap%20%3D%20%7B%0A%0A%09//%20XHTML%20parsers%20do%20not%20magically%20insert%20elements%20in%20the%0A%09//%20same%20way%20that%20tag%20soup%20parsers%20do.%20So%20we%20cannot%20shorten%0A%09//%20this%20by%20omitting%20%3Ctbody%3E%20or%20other%20required%20elements.%0A%09thead%3A%20%5B%201%2C%20%22%3Ctable%3E%22%2C%20%22%3C/table%3E%22%20%5D%2C%0A%09col%3A%20%5B%202%2C%20%22%3Ctable%3E%3Ccolgroup%3E%22%2C%20%22%3C/colgroup%3E%3C/table%3E%22%20%5D%2C%0A%09tr%3A%20%5B%202%2C%20%22%3Ctable%3E%3Ctbody%3E%22%2C%20%22%3C/tbody%3E%3C/table%3E%22%20%5D%2C%0A%09td%3A%20%5B%203%2C%20%22%3Ctable%3E%3Ctbody%3E%3Ctr%3E%22%2C%20%22%3C/tr%3E%3C/tbody%3E%3C/table%3E%22%20%5D%2C%0A%0A%09_default%3A%20%5B%200%2C%20%22%22%2C%20%22%22%20%5D%0A%7D%3B%0A%0AwrapMap.tbody%20%3D%20wrapMap.tfoot%20%3D%20wrapMap.colgroup%20%3D%20wrapMap.caption%20%3D%20wrapMap.thead%3B%0AwrapMap.th%20%3D%20wrapMap.td%3B%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0Aif%20%28%20%21support.option%20%29%20%7B%0A%09wrapMap.optgroup%20%3D%20wrapMap.option%20%3D%20%5B%201%2C%20%22%3Cselect%20multiple%3D%27multiple%27%3E%22%2C%20%22%3C/select%3E%22%20%5D%3B%0A%7D%0A%0A%0Afunction%20getAll%28%20context%2C%20tag%20%29%20%7B%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09//%20Use%20typeof%20to%20avoid%20zero-argument%20method%20invocation%20on%20host%20objects%20%28%2315151%29%0A%09var%20ret%3B%0A%0A%09if%20%28%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09ret%20%3D%20context.getElementsByTagName%28%20tag%20%7C%7C%20%22%2A%22%20%29%3B%0A%0A%09%7D%20else%20if%20%28%20typeof%20context.querySelectorAll%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09ret%20%3D%20context.querySelectorAll%28%20tag%20%7C%7C%20%22%2A%22%20%29%3B%0A%0A%09%7D%20else%20%7B%0A%09%09ret%20%3D%20%5B%5D%3B%0A%09%7D%0A%0A%09if%20%28%20tag%20%3D%3D%3D%20undefined%20%7C%7C%20tag%20%26%26%20nodeName%28%20context%2C%20tag%20%29%20%29%20%7B%0A%09%09return%20jQuery.merge%28%20%5B%20context%20%5D%2C%20ret%20%29%3B%0A%09%7D%0A%0A%09return%20ret%3B%0A%7D%0A%0A%0A//%20Mark%20scripts%20as%20having%20already%20been%20evaluated%0Afunction%20setGlobalEval%28%20elems%2C%20refElements%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09l%20%3D%20elems.length%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09dataPriv.set%28%0A%09%09%09elems%5B%20i%20%5D%2C%0A%09%09%09%22globalEval%22%2C%0A%09%09%09%21refElements%20%7C%7C%20dataPriv.get%28%20refElements%5B%20i%20%5D%2C%20%22globalEval%22%20%29%0A%09%09%29%3B%0A%09%7D%0A%7D%0A%0A%0Avar%20rhtml%20%3D%20/%3C%7C%26%23%3F%5Cw%2B%3B/%3B%0A%0Afunction%20buildFragment%28%20elems%2C%20context%2C%20scripts%2C%20selection%2C%20ignored%20%29%20%7B%0A%09var%20elem%2C%20tmp%2C%20tag%2C%20wrap%2C%20attached%2C%20j%2C%0A%09%09fragment%20%3D%20context.createDocumentFragment%28%29%2C%0A%09%09nodes%20%3D%20%5B%5D%2C%0A%09%09i%20%3D%200%2C%0A%09%09l%20%3D%20elems.length%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09elem%20%3D%20elems%5B%20i%20%5D%3B%0A%0A%09%09if%20%28%20elem%20%7C%7C%20elem%20%3D%3D%3D%200%20%29%20%7B%0A%0A%09%09%09//%20Add%20nodes%20directly%0A%09%09%09if%20%28%20toType%28%20elem%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09jQuery.merge%28%20nodes%2C%20elem.nodeType%20%3F%20%5B%20elem%20%5D%20%3A%20elem%20%29%3B%0A%0A%09%09%09//%20Convert%20non-html%20into%20a%20text%20node%0A%09%09%09%7D%20else%20if%20%28%20%21rhtml.test%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09nodes.push%28%20context.createTextNode%28%20elem%20%29%20%29%3B%0A%0A%09%09%09//%20Convert%20html%20into%20DOM%20nodes%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09tmp%20%3D%20tmp%20%7C%7C%20fragment.appendChild%28%20context.createElement%28%20%22div%22%20%29%20%29%3B%0A%0A%09%09%09%09//%20Deserialize%20a%20standard%20representation%0A%09%09%09%09tag%20%3D%20%28%20rtagName.exec%28%20elem%20%29%20%7C%7C%20%5B%20%22%22%2C%20%22%22%20%5D%20%29%5B%201%20%5D.toLowerCase%28%29%3B%0A%09%09%09%09wrap%20%3D%20wrapMap%5B%20tag%20%5D%20%7C%7C%20wrapMap._default%3B%0A%09%09%09%09tmp.innerHTML%20%3D%20wrap%5B%201%20%5D%20%2B%20jQuery.htmlPrefilter%28%20elem%20%29%20%2B%20wrap%5B%202%20%5D%3B%0A%0A%09%09%09%09//%20Descend%20through%20wrappers%20to%20the%20right%20content%0A%09%09%09%09j%20%3D%20wrap%5B%200%20%5D%3B%0A%09%09%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09%09%09tmp%20%3D%20tmp.lastChild%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09jQuery.merge%28%20nodes%2C%20tmp.childNodes%20%29%3B%0A%0A%09%09%09%09//%20Remember%20the%20top-level%20container%0A%09%09%09%09tmp%20%3D%20fragment.firstChild%3B%0A%0A%09%09%09%09//%20Ensure%20the%20created%20nodes%20are%20orphaned%20%28%2312392%29%0A%09%09%09%09tmp.textContent%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Remove%20wrapper%20from%20fragment%0A%09fragment.textContent%20%3D%20%22%22%3B%0A%0A%09i%20%3D%200%3B%0A%09while%20%28%20%28%20elem%20%3D%20nodes%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09//%20Skip%20elements%20already%20in%20the%20context%20collection%20%28trac-4087%29%0A%09%09if%20%28%20selection%20%26%26%20jQuery.inArray%28%20elem%2C%20selection%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09if%20%28%20ignored%20%29%20%7B%0A%09%09%09%09ignored.push%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%09continue%3B%0A%09%09%7D%0A%0A%09%09attached%20%3D%20isAttached%28%20elem%20%29%3B%0A%0A%09%09//%20Append%20to%20fragment%0A%09%09tmp%20%3D%20getAll%28%20fragment.appendChild%28%20elem%20%29%2C%20%22script%22%20%29%3B%0A%0A%09%09//%20Preserve%20script%20evaluation%20history%0A%09%09if%20%28%20attached%20%29%20%7B%0A%09%09%09setGlobalEval%28%20tmp%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Capture%20executables%0A%09%09if%20%28%20scripts%20%29%20%7B%0A%09%09%09j%20%3D%200%3B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20tmp%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20rscriptType.test%28%20elem.type%20%7C%7C%20%22%22%20%29%20%29%20%7B%0A%09%09%09%09%09scripts.push%28%20elem%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20fragment%3B%0A%7D%0A%0A%0Avar%0A%09rkeyEvent%20%3D%20/%5Ekey/%2C%0A%09rmouseEvent%20%3D%20/%5E%28%3F%3Amouse%7Cpointer%7Ccontextmenu%7Cdrag%7Cdrop%29%7Cclick/%2C%0A%09rtypenamespace%20%3D%20/%5E%28%5B%5E.%5D%2A%29%28%3F%3A%5C.%28.%2B%29%7C%29/%3B%0A%0Afunction%20returnTrue%28%29%20%7B%0A%09return%20true%3B%0A%7D%0A%0Afunction%20returnFalse%28%29%20%7B%0A%09return%20false%3B%0A%7D%0A%0A//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A//%20focus%28%29%20and%20blur%28%29%20are%20asynchronous%2C%20except%20when%20they%20are%20no-op.%0A//%20So%20expect%20focus%20to%20be%20synchronous%20when%20the%20element%20is%20already%20active%2C%0A//%20and%20blur%20to%20be%20synchronous%20when%20the%20element%20is%20not%20already%20active.%0A//%20%28focus%20and%20blur%20are%20always%20synchronous%20in%20other%20supported%20browsers%2C%0A//%20this%20just%20defines%20when%20we%20can%20count%20on%20it%29.%0Afunction%20expectSync%28%20elem%2C%20type%20%29%20%7B%0A%09return%20%28%20elem%20%3D%3D%3D%20safeActiveElement%28%29%20%29%20%3D%3D%3D%20%28%20type%20%3D%3D%3D%20%22focus%22%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0A//%20Accessing%20document.activeElement%20can%20throw%20unexpectedly%0A//%20https%3A//bugs.jquery.com/ticket/13393%0Afunction%20safeActiveElement%28%29%20%7B%0A%09try%20%7B%0A%09%09return%20document.activeElement%3B%0A%09%7D%20catch%20%28%20err%20%29%20%7B%20%7D%0A%7D%0A%0Afunction%20on%28%20elem%2C%20types%2C%20selector%2C%20data%2C%20fn%2C%20one%20%29%20%7B%0A%09var%20origFn%2C%20type%3B%0A%0A%09//%20Types%20can%20be%20a%20map%20of%20types/handlers%0A%09if%20%28%20typeof%20types%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20%28%20types-Object%2C%20selector%2C%20data%20%29%0A%09%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types-Object%2C%20data%20%29%0A%09%09%09data%20%3D%20data%20%7C%7C%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09for%20%28%20type%20in%20types%20%29%20%7B%0A%09%09%09on%28%20elem%2C%20type%2C%20selector%2C%20data%2C%20types%5B%20type%20%5D%2C%20one%20%29%3B%0A%09%09%7D%0A%09%09return%20elem%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%20null%20%26%26%20fn%20%3D%3D%20null%20%29%20%7B%0A%0A%09%09//%20%28%20types%2C%20fn%20%29%0A%09%09fn%20%3D%20selector%3B%0A%09%09data%20%3D%20selector%20%3D%20undefined%3B%0A%09%7D%20else%20if%20%28%20fn%20%3D%3D%20null%20%29%20%7B%0A%09%09if%20%28%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types%2C%20selector%2C%20fn%20%29%0A%09%09%09fn%20%3D%20data%3B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20%28%20types%2C%20data%2C%20fn%20%29%0A%09%09%09fn%20%3D%20data%3B%0A%09%09%09data%20%3D%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%7D%0A%09if%20%28%20fn%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09fn%20%3D%20returnFalse%3B%0A%09%7D%20else%20if%20%28%20%21fn%20%29%20%7B%0A%09%09return%20elem%3B%0A%09%7D%0A%0A%09if%20%28%20one%20%3D%3D%3D%201%20%29%20%7B%0A%09%09origFn%20%3D%20fn%3B%0A%09%09fn%20%3D%20function%28%20event%20%29%20%7B%0A%0A%09%09%09//%20Can%20use%20an%20empty%20set%2C%20since%20event%20contains%20the%20info%0A%09%09%09jQuery%28%29.off%28%20event%20%29%3B%0A%09%09%09return%20origFn.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Use%20same%20guid%20so%20caller%20can%20remove%20using%20origFn%0A%09%09fn.guid%20%3D%20origFn.guid%20%7C%7C%20%28%20origFn.guid%20%3D%20jQuery.guid%2B%2B%20%29%3B%0A%09%7D%0A%09return%20elem.each%28%20function%28%29%20%7B%0A%09%09jQuery.event.add%28%20this%2C%20types%2C%20fn%2C%20data%2C%20selector%20%29%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A/%2A%0A%20%2A%20Helper%20functions%20for%20managing%20events%20--%20not%20part%20of%20the%20public%20interface.%0A%20%2A%20Props%20to%20Dean%20Edwards%27%20addEvent%20library%20for%20many%20of%20the%20ideas.%0A%20%2A/%0AjQuery.event%20%3D%20%7B%0A%0A%09global%3A%20%7B%7D%2C%0A%0A%09add%3A%20function%28%20elem%2C%20types%2C%20handler%2C%20data%2C%20selector%20%29%20%7B%0A%0A%09%09var%20handleObjIn%2C%20eventHandle%2C%20tmp%2C%0A%09%09%09events%2C%20t%2C%20handleObj%2C%0A%09%09%09special%2C%20handlers%2C%20type%2C%20namespaces%2C%20origType%2C%0A%09%09%09elemData%20%3D%20dataPriv.get%28%20elem%20%29%3B%0A%0A%09%09//%20Only%20attach%20events%20to%20objects%20that%20accept%20data%0A%09%09if%20%28%20%21acceptData%28%20elem%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Caller%20can%20pass%20in%20an%20object%20of%20custom%20data%20in%20lieu%20of%20the%20handler%0A%09%09if%20%28%20handler.handler%20%29%20%7B%0A%09%09%09handleObjIn%20%3D%20handler%3B%0A%09%09%09handler%20%3D%20handleObjIn.handler%3B%0A%09%09%09selector%20%3D%20handleObjIn.selector%3B%0A%09%09%7D%0A%0A%09%09//%20Ensure%20that%20invalid%20selectors%20throw%20exceptions%20at%20attach%20time%0A%09%09//%20Evaluate%20against%20documentElement%20in%20case%20elem%20is%20a%20non-element%20node%20%28e.g.%2C%20document%29%0A%09%09if%20%28%20selector%20%29%20%7B%0A%09%09%09jQuery.find.matchesSelector%28%20documentElement%2C%20selector%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20sure%20that%20the%20handler%20has%20a%20unique%20ID%2C%20used%20to%20find/remove%20it%20later%0A%09%09if%20%28%20%21handler.guid%20%29%20%7B%0A%09%09%09handler.guid%20%3D%20jQuery.guid%2B%2B%3B%0A%09%09%7D%0A%0A%09%09//%20Init%20the%20element%27s%20event%20structure%20and%20main%20handler%2C%20if%20this%20is%20the%20first%0A%09%09if%20%28%20%21%28%20events%20%3D%20elemData.events%20%29%20%29%20%7B%0A%09%09%09events%20%3D%20elemData.events%20%3D%20Object.create%28%20null%20%29%3B%0A%09%09%7D%0A%09%09if%20%28%20%21%28%20eventHandle%20%3D%20elemData.handle%20%29%20%29%20%7B%0A%09%09%09eventHandle%20%3D%20elemData.handle%20%3D%20function%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20Discard%20the%20second%20event%20of%20a%20jQuery.event.trigger%28%29%20and%0A%09%09%09%09//%20when%20an%20event%20is%20called%20after%20a%20page%20has%20unloaded%0A%09%09%09%09return%20typeof%20jQuery%20%21%3D%3D%20%22undefined%22%20%26%26%20jQuery.event.triggered%20%21%3D%3D%20e.type%20%3F%0A%09%09%09%09%09jQuery.event.dispatch.apply%28%20elem%2C%20arguments%20%29%20%3A%20undefined%3B%0A%09%09%09%7D%3B%0A%09%09%7D%0A%0A%09%09//%20Handle%20multiple%20events%20separated%20by%20a%20space%0A%09%09types%20%3D%20%28%20types%20%7C%7C%20%22%22%20%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%09%09t%20%3D%20types.length%3B%0A%09%09while%20%28%20t--%20%29%20%7B%0A%09%09%09tmp%20%3D%20rtypenamespace.exec%28%20types%5B%20t%20%5D%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09%09type%20%3D%20origType%20%3D%20tmp%5B%201%20%5D%3B%0A%09%09%09namespaces%20%3D%20%28%20tmp%5B%202%20%5D%20%7C%7C%20%22%22%20%29.split%28%20%22.%22%20%29.sort%28%29%3B%0A%0A%09%09%09//%20There%20%2Amust%2A%20be%20a%20type%2C%20no%20attaching%20namespace-only%20handlers%0A%09%09%09if%20%28%20%21type%20%29%20%7B%0A%09%09%09%09continue%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20event%20changes%20its%20type%2C%20use%20the%20special%20event%20handlers%20for%20the%20changed%20type%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09//%20If%20selector%20defined%2C%20determine%20special%20event%20api%20type%2C%20otherwise%20given%20type%0A%09%09%09type%20%3D%20%28%20selector%20%3F%20special.delegateType%20%3A%20special.bindType%20%29%20%7C%7C%20type%3B%0A%0A%09%09%09//%20Update%20special%20based%20on%20newly%20reset%20type%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09//%20handleObj%20is%20passed%20to%20all%20event%20handlers%0A%09%09%09handleObj%20%3D%20jQuery.extend%28%20%7B%0A%09%09%09%09type%3A%20type%2C%0A%09%09%09%09origType%3A%20origType%2C%0A%09%09%09%09data%3A%20data%2C%0A%09%09%09%09handler%3A%20handler%2C%0A%09%09%09%09guid%3A%20handler.guid%2C%0A%09%09%09%09selector%3A%20selector%2C%0A%09%09%09%09needsContext%3A%20selector%20%26%26%20jQuery.expr.match.needsContext.test%28%20selector%20%29%2C%0A%09%09%09%09namespace%3A%20namespaces.join%28%20%22.%22%20%29%0A%09%09%09%7D%2C%20handleObjIn%20%29%3B%0A%0A%09%09%09//%20Init%20the%20event%20handler%20queue%20if%20we%27re%20the%20first%0A%09%09%09if%20%28%20%21%28%20handlers%20%3D%20events%5B%20type%20%5D%20%29%20%29%20%7B%0A%09%09%09%09handlers%20%3D%20events%5B%20type%20%5D%20%3D%20%5B%5D%3B%0A%09%09%09%09handlers.delegateCount%20%3D%200%3B%0A%0A%09%09%09%09//%20Only%20use%20addEventListener%20if%20the%20special%20events%20handler%20returns%20false%0A%09%09%09%09if%20%28%20%21special.setup%20%7C%7C%0A%09%09%09%09%09special.setup.call%28%20elem%2C%20data%2C%20namespaces%2C%20eventHandle%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09if%20%28%20elem.addEventListener%20%29%20%7B%0A%09%09%09%09%09%09elem.addEventListener%28%20type%2C%20eventHandle%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20special.add%20%29%20%7B%0A%09%09%09%09special.add.call%28%20elem%2C%20handleObj%20%29%3B%0A%0A%09%09%09%09if%20%28%20%21handleObj.handler.guid%20%29%20%7B%0A%09%09%09%09%09handleObj.handler.guid%20%3D%20handler.guid%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20to%20the%20element%27s%20handler%20list%2C%20delegates%20in%20front%0A%09%09%09if%20%28%20selector%20%29%20%7B%0A%09%09%09%09handlers.splice%28%20handlers.delegateCount%2B%2B%2C%200%2C%20handleObj%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09handlers.push%28%20handleObj%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Keep%20track%20of%20which%20events%20have%20ever%20been%20used%2C%20for%20event%20optimization%0A%09%09%09jQuery.event.global%5B%20type%20%5D%20%3D%20true%3B%0A%09%09%7D%0A%0A%09%7D%2C%0A%0A%09//%20Detach%20an%20event%20or%20set%20of%20events%20from%20an%20element%0A%09remove%3A%20function%28%20elem%2C%20types%2C%20handler%2C%20selector%2C%20mappedTypes%20%29%20%7B%0A%0A%09%09var%20j%2C%20origCount%2C%20tmp%2C%0A%09%09%09events%2C%20t%2C%20handleObj%2C%0A%09%09%09special%2C%20handlers%2C%20type%2C%20namespaces%2C%20origType%2C%0A%09%09%09elemData%20%3D%20dataPriv.hasData%28%20elem%20%29%20%26%26%20dataPriv.get%28%20elem%20%29%3B%0A%0A%09%09if%20%28%20%21elemData%20%7C%7C%20%21%28%20events%20%3D%20elemData.events%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Once%20for%20each%20type.namespace%20in%20types%3B%20type%20may%20be%20omitted%0A%09%09types%20%3D%20%28%20types%20%7C%7C%20%22%22%20%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%09%09t%20%3D%20types.length%3B%0A%09%09while%20%28%20t--%20%29%20%7B%0A%09%09%09tmp%20%3D%20rtypenamespace.exec%28%20types%5B%20t%20%5D%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09%09type%20%3D%20origType%20%3D%20tmp%5B%201%20%5D%3B%0A%09%09%09namespaces%20%3D%20%28%20tmp%5B%202%20%5D%20%7C%7C%20%22%22%20%29.split%28%20%22.%22%20%29.sort%28%29%3B%0A%0A%09%09%09//%20Unbind%20all%20events%20%28on%20this%20namespace%2C%20if%20provided%29%20for%20the%20element%0A%09%09%09if%20%28%20%21type%20%29%20%7B%0A%09%09%09%09for%20%28%20type%20in%20events%20%29%20%7B%0A%09%09%09%09%09jQuery.event.remove%28%20elem%2C%20type%20%2B%20types%5B%20t%20%5D%2C%20handler%2C%20selector%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09continue%3B%0A%09%09%09%7D%0A%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09%09type%20%3D%20%28%20selector%20%3F%20special.delegateType%20%3A%20special.bindType%20%29%20%7C%7C%20type%3B%0A%09%09%09handlers%20%3D%20events%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09tmp%20%3D%20tmp%5B%202%20%5D%20%26%26%0A%09%09%09%09new%20RegExp%28%20%22%28%5E%7C%5C%5C.%29%22%20%2B%20namespaces.join%28%20%22%5C%5C.%28%3F%3A.%2A%5C%5C.%7C%29%22%20%29%20%2B%20%22%28%5C%5C.%7C%24%29%22%20%29%3B%0A%0A%09%09%09//%20Remove%20matching%20events%0A%09%09%09origCount%20%3D%20j%20%3D%20handlers.length%3B%0A%09%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09%09handleObj%20%3D%20handlers%5B%20j%20%5D%3B%0A%0A%09%09%09%09if%20%28%20%28%20mappedTypes%20%7C%7C%20origType%20%3D%3D%3D%20handleObj.origType%20%29%20%26%26%0A%09%09%09%09%09%28%20%21handler%20%7C%7C%20handler.guid%20%3D%3D%3D%20handleObj.guid%20%29%20%26%26%0A%09%09%09%09%09%28%20%21tmp%20%7C%7C%20tmp.test%28%20handleObj.namespace%20%29%20%29%20%26%26%0A%09%09%09%09%09%28%20%21selector%20%7C%7C%20selector%20%3D%3D%3D%20handleObj.selector%20%7C%7C%0A%09%09%09%09%09%09selector%20%3D%3D%3D%20%22%2A%2A%22%20%26%26%20handleObj.selector%20%29%20%29%20%7B%0A%09%09%09%09%09handlers.splice%28%20j%2C%201%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20handleObj.selector%20%29%20%7B%0A%09%09%09%09%09%09handlers.delegateCount--%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20special.remove%20%29%20%7B%0A%09%09%09%09%09%09special.remove.call%28%20elem%2C%20handleObj%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Remove%20generic%20event%20handler%20if%20we%20removed%20something%20and%20no%20more%20handlers%20exist%0A%09%09%09//%20%28avoids%20potential%20for%20endless%20recursion%20during%20removal%20of%20special%20event%20handlers%29%0A%09%09%09if%20%28%20origCount%20%26%26%20%21handlers.length%20%29%20%7B%0A%09%09%09%09if%20%28%20%21special.teardown%20%7C%7C%0A%09%09%09%09%09special.teardown.call%28%20elem%2C%20namespaces%2C%20elemData.handle%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09jQuery.removeEvent%28%20elem%2C%20type%2C%20elemData.handle%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09delete%20events%5B%20type%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Remove%20data%20and%20the%20expando%20if%20it%27s%20no%20longer%20used%0A%09%09if%20%28%20jQuery.isEmptyObject%28%20events%20%29%20%29%20%7B%0A%09%09%09dataPriv.remove%28%20elem%2C%20%22handle%20events%22%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09dispatch%3A%20function%28%20nativeEvent%20%29%20%7B%0A%0A%09%09var%20i%2C%20j%2C%20ret%2C%20matched%2C%20handleObj%2C%20handlerQueue%2C%0A%09%09%09args%20%3D%20new%20Array%28%20arguments.length%20%29%2C%0A%0A%09%09%09//%20Make%20a%20writable%20jQuery.Event%20from%20the%20native%20event%20object%0A%09%09%09event%20%3D%20jQuery.event.fix%28%20nativeEvent%20%29%2C%0A%0A%09%09%09handlers%20%3D%20%28%0A%09%09%09%09%09dataPriv.get%28%20this%2C%20%22events%22%20%29%20%7C%7C%20Object.create%28%20null%20%29%0A%09%09%09%09%29%5B%20event.type%20%5D%20%7C%7C%20%5B%5D%2C%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20event.type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09//%20Use%20the%20fix-ed%20jQuery.Event%20rather%20than%20the%20%28read-only%29%20native%20event%0A%09%09args%5B%200%20%5D%20%3D%20event%3B%0A%0A%09%09for%20%28%20i%20%3D%201%3B%20i%20%3C%20arguments.length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09args%5B%20i%20%5D%20%3D%20arguments%5B%20i%20%5D%3B%0A%09%09%7D%0A%0A%09%09event.delegateTarget%20%3D%20this%3B%0A%0A%09%09//%20Call%20the%20preDispatch%20hook%20for%20the%20mapped%20type%2C%20and%20let%20it%20bail%20if%20desired%0A%09%09if%20%28%20special.preDispatch%20%26%26%20special.preDispatch.call%28%20this%2C%20event%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Determine%20handlers%0A%09%09handlerQueue%20%3D%20jQuery.event.handlers.call%28%20this%2C%20event%2C%20handlers%20%29%3B%0A%0A%09%09//%20Run%20delegates%20first%3B%20they%20may%20want%20to%20stop%20propagation%20beneath%20us%0A%09%09i%20%3D%200%3B%0A%09%09while%20%28%20%28%20matched%20%3D%20handlerQueue%5B%20i%2B%2B%20%5D%20%29%20%26%26%20%21event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09event.currentTarget%20%3D%20matched.elem%3B%0A%0A%09%09%09j%20%3D%200%3B%0A%09%09%09while%20%28%20%28%20handleObj%20%3D%20matched.handlers%5B%20j%2B%2B%20%5D%20%29%20%26%26%0A%09%09%09%09%21event.isImmediatePropagationStopped%28%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20the%20event%20is%20namespaced%2C%20then%20each%20handler%20is%20only%20invoked%20if%20it%20is%0A%09%09%09%09//%20specially%20universal%20or%20its%20namespaces%20are%20a%20superset%20of%20the%20event%27s.%0A%09%09%09%09if%20%28%20%21event.rnamespace%20%7C%7C%20handleObj.namespace%20%3D%3D%3D%20false%20%7C%7C%0A%09%09%09%09%09event.rnamespace.test%28%20handleObj.namespace%20%29%20%29%20%7B%0A%0A%09%09%09%09%09event.handleObj%20%3D%20handleObj%3B%0A%09%09%09%09%09event.data%20%3D%20handleObj.data%3B%0A%0A%09%09%09%09%09ret%20%3D%20%28%20%28%20jQuery.event.special%5B%20handleObj.origType%20%5D%20%7C%7C%20%7B%7D%20%29.handle%20%7C%7C%0A%09%09%09%09%09%09handleObj.handler%20%29.apply%28%20matched.elem%2C%20args%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20ret%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20event.result%20%3D%20ret%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Call%20the%20postDispatch%20hook%20for%20the%20mapped%20type%0A%09%09if%20%28%20special.postDispatch%20%29%20%7B%0A%09%09%09special.postDispatch.call%28%20this%2C%20event%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20event.result%3B%0A%09%7D%2C%0A%0A%09handlers%3A%20function%28%20event%2C%20handlers%20%29%20%7B%0A%09%09var%20i%2C%20handleObj%2C%20sel%2C%20matchedHandlers%2C%20matchedSelectors%2C%0A%09%09%09handlerQueue%20%3D%20%5B%5D%2C%0A%09%09%09delegateCount%20%3D%20handlers.delegateCount%2C%0A%09%09%09cur%20%3D%20event.target%3B%0A%0A%09%09//%20Find%20delegate%20handlers%0A%09%09if%20%28%20delegateCount%20%26%26%0A%0A%09%09%09//%20Support%3A%20IE%20%3C%3D9%0A%09%09%09//%20Black-hole%20SVG%20%3Cuse%3E%20instance%20trees%20%28trac-13180%29%0A%09%09%09cur.nodeType%20%26%26%0A%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D42%0A%09%09%09//%20Suppress%20spec-violating%20clicks%20indicating%20a%20non-primary%20pointer%20button%20%28trac-3861%29%0A%09%09%09//%20https%3A//www.w3.org/TR/DOM-Level-3-Events/%23event-type-click%0A%09%09%09//%20Support%3A%20IE%2011%20only%0A%09%09%09//%20...but%20not%20arrow%20key%20%22clicks%22%20of%20radio%20inputs%2C%20which%20can%20have%20%60button%60%20-1%20%28gh-2343%29%0A%09%09%09%21%28%20event.type%20%3D%3D%3D%20%22click%22%20%26%26%20event.button%20%3E%3D%201%20%29%20%29%20%7B%0A%0A%09%09%09for%20%28%20%3B%20cur%20%21%3D%3D%20this%3B%20cur%20%3D%20cur.parentNode%20%7C%7C%20this%20%29%20%7B%0A%0A%09%09%09%09//%20Don%27t%20check%20non-elements%20%28%2313208%29%0A%09%09%09%09//%20Don%27t%20process%20clicks%20on%20disabled%20elements%20%28%236911%2C%20%238165%2C%20%2311382%2C%20%2311764%29%0A%09%09%09%09if%20%28%20cur.nodeType%20%3D%3D%3D%201%20%26%26%20%21%28%20event.type%20%3D%3D%3D%20%22click%22%20%26%26%20cur.disabled%20%3D%3D%3D%20true%20%29%20%29%20%7B%0A%09%09%09%09%09matchedHandlers%20%3D%20%5B%5D%3B%0A%09%09%09%09%09matchedSelectors%20%3D%20%7B%7D%3B%0A%09%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20delegateCount%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09%09handleObj%20%3D%20handlers%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09%09//%20Don%27t%20conflict%20with%20Object.prototype%20properties%20%28%2313203%29%0A%09%09%09%09%09%09sel%20%3D%20handleObj.selector%20%2B%20%22%20%22%3B%0A%0A%09%09%09%09%09%09if%20%28%20matchedSelectors%5B%20sel%20%5D%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09%09%09matchedSelectors%5B%20sel%20%5D%20%3D%20handleObj.needsContext%20%3F%0A%09%09%09%09%09%09%09%09jQuery%28%20sel%2C%20this%20%29.index%28%20cur%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09%09%09%09jQuery.find%28%20sel%2C%20this%2C%20null%2C%20%5B%20cur%20%5D%20%29.length%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28%20matchedSelectors%5B%20sel%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09matchedHandlers.push%28%20handleObj%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20matchedHandlers.length%20%29%20%7B%0A%09%09%09%09%09%09handlerQueue.push%28%20%7B%20elem%3A%20cur%2C%20handlers%3A%20matchedHandlers%20%7D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Add%20the%20remaining%20%28directly-bound%29%20handlers%0A%09%09cur%20%3D%20this%3B%0A%09%09if%20%28%20delegateCount%20%3C%20handlers.length%20%29%20%7B%0A%09%09%09handlerQueue.push%28%20%7B%20elem%3A%20cur%2C%20handlers%3A%20handlers.slice%28%20delegateCount%20%29%20%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20handlerQueue%3B%0A%09%7D%2C%0A%0A%09addProp%3A%20function%28%20name%2C%20hook%20%29%20%7B%0A%09%09Object.defineProperty%28%20jQuery.Event.prototype%2C%20name%2C%20%7B%0A%09%09%09enumerable%3A%20true%2C%0A%09%09%09configurable%3A%20true%2C%0A%0A%09%09%09get%3A%20isFunction%28%20hook%20%29%20%3F%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.originalEvent%20%29%20%7B%0A%09%09%09%09%09%09%09return%20hook%28%20this.originalEvent%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%3A%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.originalEvent%20%29%20%7B%0A%09%09%09%09%09%09%09return%20this.originalEvent%5B%20name%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%2C%0A%0A%09%09%09set%3A%20function%28%20value%20%29%20%7B%0A%09%09%09%09Object.defineProperty%28%20this%2C%20name%2C%20%7B%0A%09%09%09%09%09enumerable%3A%20true%2C%0A%09%09%09%09%09configurable%3A%20true%2C%0A%09%09%09%09%09writable%3A%20true%2C%0A%09%09%09%09%09value%3A%20value%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09fix%3A%20function%28%20originalEvent%20%29%20%7B%0A%09%09return%20originalEvent%5B%20jQuery.expando%20%5D%20%3F%0A%09%09%09originalEvent%20%3A%0A%09%09%09new%20jQuery.Event%28%20originalEvent%20%29%3B%0A%09%7D%2C%0A%0A%09special%3A%20%7B%0A%09%09load%3A%20%7B%0A%0A%09%09%09//%20Prevent%20triggered%20image.load%20events%20from%20bubbling%20to%20window.load%0A%09%09%09noBubble%3A%20true%0A%09%09%7D%2C%0A%09%09click%3A%20%7B%0A%0A%09%09%09//%20Utilize%20native%20event%20to%20ensure%20correct%20state%20for%20checkable%20inputs%0A%09%09%09setup%3A%20function%28%20data%20%29%20%7B%0A%0A%09%09%09%09//%20For%20mutual%20compressibility%20with%20_default%2C%20replace%20%60this%60%20access%20with%20a%20local%20var.%0A%09%09%09%09//%20%60%7C%7C%20data%60%20is%20dead%20code%20meant%20only%20to%20preserve%20the%20variable%20through%20minification.%0A%09%09%09%09var%20el%20%3D%20this%20%7C%7C%20data%3B%0A%0A%09%09%09%09//%20Claim%20the%20first%20handler%0A%09%09%09%09if%20%28%20rcheckableType.test%28%20el.type%20%29%20%26%26%0A%09%09%09%09%09el.click%20%26%26%20nodeName%28%20el%2C%20%22input%22%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20dataPriv.set%28%20el%2C%20%22click%22%2C%20...%20%29%0A%09%09%09%09%09leverageNative%28%20el%2C%20%22click%22%2C%20returnTrue%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Return%20false%20to%20allow%20normal%20processing%20in%20the%20caller%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%2C%0A%09%09%09trigger%3A%20function%28%20data%20%29%20%7B%0A%0A%09%09%09%09//%20For%20mutual%20compressibility%20with%20_default%2C%20replace%20%60this%60%20access%20with%20a%20local%20var.%0A%09%09%09%09//%20%60%7C%7C%20data%60%20is%20dead%20code%20meant%20only%20to%20preserve%20the%20variable%20through%20minification.%0A%09%09%09%09var%20el%20%3D%20this%20%7C%7C%20data%3B%0A%0A%09%09%09%09//%20Force%20setup%20before%20triggering%20a%20click%0A%09%09%09%09if%20%28%20rcheckableType.test%28%20el.type%20%29%20%26%26%0A%09%09%09%09%09el.click%20%26%26%20nodeName%28%20el%2C%20%22input%22%20%29%20%29%20%7B%0A%0A%09%09%09%09%09leverageNative%28%20el%2C%20%22click%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Return%20non-false%20to%20allow%20normal%20event-path%20propagation%0A%09%09%09%09return%20true%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20For%20cross-browser%20consistency%2C%20suppress%20native%20.click%28%29%20on%20links%0A%09%09%09//%20Also%20prevent%20it%20if%20we%27re%20currently%20inside%20a%20leveraged%20native-event%20stack%0A%09%09%09_default%3A%20function%28%20event%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20event.target%3B%0A%09%09%09%09return%20rcheckableType.test%28%20target.type%20%29%20%26%26%0A%09%09%09%09%09target.click%20%26%26%20nodeName%28%20target%2C%20%22input%22%20%29%20%26%26%0A%09%09%09%09%09dataPriv.get%28%20target%2C%20%22click%22%20%29%20%7C%7C%0A%09%09%09%09%09nodeName%28%20target%2C%20%22a%22%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09beforeunload%3A%20%7B%0A%09%09%09postDispatch%3A%20function%28%20event%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Firefox%2020%2B%0A%09%09%09%09//%20Firefox%20doesn%27t%20alert%20if%20the%20returnValue%20field%20is%20not%20set.%0A%09%09%09%09if%20%28%20event.result%20%21%3D%3D%20undefined%20%26%26%20event.originalEvent%20%29%20%7B%0A%09%09%09%09%09event.originalEvent.returnValue%20%3D%20event.result%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0A//%20Ensure%20the%20presence%20of%20an%20event%20listener%20that%20handles%20manually-triggered%0A//%20synthetic%20events%20by%20interrupting%20progress%20until%20reinvoked%20in%20response%20to%0A//%20%2Anative%2A%20events%20that%20it%20fires%20directly%2C%20ensuring%20that%20state%20changes%20have%0A//%20already%20occurred%20before%20other%20listeners%20are%20invoked.%0Afunction%20leverageNative%28%20el%2C%20type%2C%20expectSync%20%29%20%7B%0A%0A%09//%20Missing%20expectSync%20indicates%20a%20trigger%20call%2C%20which%20must%20force%20setup%20through%20jQuery.event.add%0A%09if%20%28%20%21expectSync%20%29%20%7B%0A%09%09if%20%28%20dataPriv.get%28%20el%2C%20type%20%29%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09jQuery.event.add%28%20el%2C%20type%2C%20returnTrue%20%29%3B%0A%09%09%7D%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Register%20the%20controller%20as%20a%20special%20universal%20handler%20for%20all%20event%20namespaces%0A%09dataPriv.set%28%20el%2C%20type%2C%20false%20%29%3B%0A%09jQuery.event.add%28%20el%2C%20type%2C%20%7B%0A%09%09namespace%3A%20false%2C%0A%09%09handler%3A%20function%28%20event%20%29%20%7B%0A%09%09%09var%20notAsync%2C%20result%2C%0A%09%09%09%09saved%20%3D%20dataPriv.get%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09if%20%28%20%28%20event.isTrigger%20%26%201%20%29%20%26%26%20this%5B%20type%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Interrupt%20processing%20of%20the%20outer%20synthetic%20.trigger%28%29ed%20event%0A%09%09%09%09//%20Saved%20data%20should%20be%20false%20in%20such%20cases%2C%20but%20might%20be%20a%20leftover%20capture%20object%0A%09%09%09%09//%20from%20an%20async%20native%20handler%20%28gh-4350%29%0A%09%09%09%09if%20%28%20%21saved.length%20%29%20%7B%0A%0A%09%09%09%09%09//%20Store%20arguments%20for%20use%20when%20handling%20the%20inner%20native%20event%0A%09%09%09%09%09//%20There%20will%20always%20be%20at%20least%20one%20argument%20%28an%20event%20object%29%2C%20so%20this%20array%0A%09%09%09%09%09//%20will%20not%20be%20confused%20with%20a%20leftover%20capture%20object.%0A%09%09%09%09%09saved%20%3D%20slice.call%28%20arguments%20%29%3B%0A%09%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20saved%20%29%3B%0A%0A%09%09%09%09%09//%20Trigger%20the%20native%20event%20and%20capture%20its%20result%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A%09%09%09%09%09//%20focus%28%29%20and%20blur%28%29%20are%20asynchronous%0A%09%09%09%09%09notAsync%20%3D%20expectSync%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%09this%5B%20type%20%5D%28%29%3B%0A%09%09%09%09%09result%20%3D%20dataPriv.get%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%09if%20%28%20saved%20%21%3D%3D%20result%20%7C%7C%20notAsync%20%29%20%7B%0A%09%09%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20false%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09result%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20saved%20%21%3D%3D%20result%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Cancel%20the%20outer%20synthetic%20event%0A%09%09%09%09%09%09event.stopImmediatePropagation%28%29%3B%0A%09%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%09%09return%20result.value%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09//%20If%20this%20is%20an%20inner%20synthetic%20event%20for%20an%20event%20with%20a%20bubbling%20surrogate%0A%09%09%09%09//%20%28focus%20or%20blur%29%2C%20assume%20that%20the%20surrogate%20already%20propagated%20from%20triggering%20the%0A%09%09%09%09//%20native%20event%20and%20prevent%20that%20from%20happening%20again%20here.%0A%09%09%09%09//%20This%20technically%20gets%20the%20ordering%20wrong%20w.r.t.%20to%20%60.trigger%28%29%60%20%28in%20which%20the%0A%09%09%09%09//%20bubbling%20surrogate%20propagates%20%2Aafter%2A%20the%20non-bubbling%20base%29%2C%20but%20that%20seems%0A%09%09%09%09//%20less%20bad%20than%20duplication.%0A%09%09%09%09%7D%20else%20if%20%28%20%28%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%20%29.delegateType%20%29%20%7B%0A%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09//%20If%20this%20is%20a%20native%20event%20triggered%20above%2C%20everything%20is%20now%20in%20order%0A%09%09%09//%20Fire%20an%20inner%20synthetic%20event%20with%20the%20original%20arguments%0A%09%09%09%7D%20else%20if%20%28%20saved.length%20%29%20%7B%0A%0A%09%09%09%09//%20...and%20capture%20the%20result%0A%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20%7B%0A%09%09%09%09%09value%3A%20jQuery.event.trigger%28%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A%09%09%09%09%09%09//%20Extend%20with%20the%20prototype%20to%20reset%20the%20above%20stopImmediatePropagation%28%29%0A%09%09%09%09%09%09jQuery.extend%28%20saved%5B%200%20%5D%2C%20jQuery.Event.prototype%20%29%2C%0A%09%09%09%09%09%09saved.slice%28%201%20%29%2C%0A%09%09%09%09%09%09this%0A%09%09%09%09%09%29%0A%09%09%09%09%7D%20%29%3B%0A%0A%09%09%09%09//%20Abort%20handling%20of%20the%20native%20event%0A%09%09%09%09event.stopImmediatePropagation%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0AjQuery.removeEvent%20%3D%20function%28%20elem%2C%20type%2C%20handle%20%29%20%7B%0A%0A%09//%20This%20%22if%22%20is%20needed%20for%20plain%20objects%0A%09if%20%28%20elem.removeEventListener%20%29%20%7B%0A%09%09elem.removeEventListener%28%20type%2C%20handle%20%29%3B%0A%09%7D%0A%7D%3B%0A%0AjQuery.Event%20%3D%20function%28%20src%2C%20props%20%29%20%7B%0A%0A%09//%20Allow%20instantiation%20without%20the%20%27new%27%20keyword%0A%09if%20%28%20%21%28%20this%20instanceof%20jQuery.Event%20%29%20%29%20%7B%0A%09%09return%20new%20jQuery.Event%28%20src%2C%20props%20%29%3B%0A%09%7D%0A%0A%09//%20Event%20object%0A%09if%20%28%20src%20%26%26%20src.type%20%29%20%7B%0A%09%09this.originalEvent%20%3D%20src%3B%0A%09%09this.type%20%3D%20src.type%3B%0A%0A%09%09//%20Events%20bubbling%20up%20the%20document%20may%20have%20been%20marked%20as%20prevented%0A%09%09//%20by%20a%20handler%20lower%20down%20the%20tree%3B%20reflect%20the%20correct%20value.%0A%09%09this.isDefaultPrevented%20%3D%20src.defaultPrevented%20%7C%7C%0A%09%09%09%09src.defaultPrevented%20%3D%3D%3D%20undefined%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D2.3%20only%0A%09%09%09%09src.returnValue%20%3D%3D%3D%20false%20%3F%0A%09%09%09returnTrue%20%3A%0A%09%09%09returnFalse%3B%0A%0A%09%09//%20Create%20target%20properties%0A%09%09//%20Support%3A%20Safari%20%3C%3D6%20-%207%20only%0A%09%09//%20Target%20should%20not%20be%20a%20text%20node%20%28%23504%2C%20%2313143%29%0A%09%09this.target%20%3D%20%28%20src.target%20%26%26%20src.target.nodeType%20%3D%3D%3D%203%20%29%20%3F%0A%09%09%09src.target.parentNode%20%3A%0A%09%09%09src.target%3B%0A%0A%09%09this.currentTarget%20%3D%20src.currentTarget%3B%0A%09%09this.relatedTarget%20%3D%20src.relatedTarget%3B%0A%0A%09//%20Event%20type%0A%09%7D%20else%20%7B%0A%09%09this.type%20%3D%20src%3B%0A%09%7D%0A%0A%09//%20Put%20explicitly%20provided%20properties%20onto%20the%20event%20object%0A%09if%20%28%20props%20%29%20%7B%0A%09%09jQuery.extend%28%20this%2C%20props%20%29%3B%0A%09%7D%0A%0A%09//%20Create%20a%20timestamp%20if%20incoming%20event%20doesn%27t%20have%20one%0A%09this.timeStamp%20%3D%20src%20%26%26%20src.timeStamp%20%7C%7C%20Date.now%28%29%3B%0A%0A%09//%20Mark%20it%20as%20fixed%0A%09this%5B%20jQuery.expando%20%5D%20%3D%20true%3B%0A%7D%3B%0A%0A//%20jQuery.Event%20is%20based%20on%20DOM3%20Events%20as%20specified%20by%20the%20ECMAScript%20Language%20Binding%0A//%20https%3A//www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html%0AjQuery.Event.prototype%20%3D%20%7B%0A%09constructor%3A%20jQuery.Event%2C%0A%09isDefaultPrevented%3A%20returnFalse%2C%0A%09isPropagationStopped%3A%20returnFalse%2C%0A%09isImmediatePropagationStopped%3A%20returnFalse%2C%0A%09isSimulated%3A%20false%2C%0A%0A%09preventDefault%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isDefaultPrevented%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09stopPropagation%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isPropagationStopped%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09stopImmediatePropagation%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isImmediatePropagationStopped%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.stopImmediatePropagation%28%29%3B%0A%09%09%7D%0A%0A%09%09this.stopPropagation%28%29%3B%0A%09%7D%0A%7D%3B%0A%0A//%20Includes%20all%20common%20event%20props%20including%20KeyEvent%20and%20MouseEvent%20specific%20props%0AjQuery.each%28%20%7B%0A%09altKey%3A%20true%2C%0A%09bubbles%3A%20true%2C%0A%09cancelable%3A%20true%2C%0A%09changedTouches%3A%20true%2C%0A%09ctrlKey%3A%20true%2C%0A%09detail%3A%20true%2C%0A%09eventPhase%3A%20true%2C%0A%09metaKey%3A%20true%2C%0A%09pageX%3A%20true%2C%0A%09pageY%3A%20true%2C%0A%09shiftKey%3A%20true%2C%0A%09view%3A%20true%2C%0A%09%22char%22%3A%20true%2C%0A%09code%3A%20true%2C%0A%09charCode%3A%20true%2C%0A%09key%3A%20true%2C%0A%09keyCode%3A%20true%2C%0A%09button%3A%20true%2C%0A%09buttons%3A%20true%2C%0A%09clientX%3A%20true%2C%0A%09clientY%3A%20true%2C%0A%09offsetX%3A%20true%2C%0A%09offsetY%3A%20true%2C%0A%09pointerId%3A%20true%2C%0A%09pointerType%3A%20true%2C%0A%09screenX%3A%20true%2C%0A%09screenY%3A%20true%2C%0A%09targetTouches%3A%20true%2C%0A%09toElement%3A%20true%2C%0A%09touches%3A%20true%2C%0A%0A%09which%3A%20function%28%20event%20%29%20%7B%0A%09%09var%20button%20%3D%20event.button%3B%0A%0A%09%09//%20Add%20which%20for%20key%20events%0A%09%09if%20%28%20event.which%20%3D%3D%20null%20%26%26%20rkeyEvent.test%28%20event.type%20%29%20%29%20%7B%0A%09%09%09return%20event.charCode%20%21%3D%20null%20%3F%20event.charCode%20%3A%20event.keyCode%3B%0A%09%09%7D%0A%0A%09%09//%20Add%20which%20for%20click%3A%201%20%3D%3D%3D%20left%3B%202%20%3D%3D%3D%20middle%3B%203%20%3D%3D%3D%20right%0A%09%09if%20%28%20%21event.which%20%26%26%20button%20%21%3D%3D%20undefined%20%26%26%20rmouseEvent.test%28%20event.type%20%29%20%29%20%7B%0A%09%09%09if%20%28%20button%20%26%201%20%29%20%7B%0A%09%09%09%09return%201%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20button%20%26%202%20%29%20%7B%0A%09%09%09%09return%203%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20button%20%26%204%20%29%20%7B%0A%09%09%09%09return%202%3B%0A%09%09%09%7D%0A%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09return%20event.which%3B%0A%09%7D%0A%7D%2C%20jQuery.event.addProp%20%29%3B%0A%0AjQuery.each%28%20%7B%20focus%3A%20%22focusin%22%2C%20blur%3A%20%22focusout%22%20%7D%2C%20function%28%20type%2C%20delegateType%20%29%20%7B%0A%09jQuery.event.special%5B%20type%20%5D%20%3D%20%7B%0A%0A%09%09//%20Utilize%20native%20event%20if%20possible%20so%20blur/focus%20sequence%20is%20correct%0A%09%09setup%3A%20function%28%29%20%7B%0A%0A%09%09%09//%20Claim%20the%20first%20handler%0A%09%09%09//%20dataPriv.set%28%20this%2C%20%22focus%22%2C%20...%20%29%0A%09%09%09//%20dataPriv.set%28%20this%2C%20%22blur%22%2C%20...%20%29%0A%09%09%09leverageNative%28%20this%2C%20type%2C%20expectSync%20%29%3B%0A%0A%09%09%09//%20Return%20false%20to%20allow%20normal%20processing%20in%20the%20caller%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09trigger%3A%20function%28%29%20%7B%0A%0A%09%09%09//%20Force%20setup%20before%20trigger%0A%09%09%09leverageNative%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09//%20Return%20non-false%20to%20allow%20normal%20event-path%20propagation%0A%09%09%09return%20true%3B%0A%09%09%7D%2C%0A%0A%09%09delegateType%3A%20delegateType%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Create%20mouseenter/leave%20events%20using%20mouseover/out%20and%20event-time%20checks%0A//%20so%20that%20event%20delegation%20works%20in%20jQuery.%0A//%20Do%20the%20same%20for%20pointerenter/pointerleave%20and%20pointerover/pointerout%0A//%0A//%20Support%3A%20Safari%207%20only%0A//%20Safari%20sends%20mouseenter%20too%20often%3B%20see%3A%0A//%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D470258%0A//%20for%20the%20description%20of%20the%20bug%20%28it%20existed%20in%20older%20Chrome%20versions%20as%20well%29.%0AjQuery.each%28%20%7B%0A%09mouseenter%3A%20%22mouseover%22%2C%0A%09mouseleave%3A%20%22mouseout%22%2C%0A%09pointerenter%3A%20%22pointerover%22%2C%0A%09pointerleave%3A%20%22pointerout%22%0A%7D%2C%20function%28%20orig%2C%20fix%20%29%20%7B%0A%09jQuery.event.special%5B%20orig%20%5D%20%3D%20%7B%0A%09%09delegateType%3A%20fix%2C%0A%09%09bindType%3A%20fix%2C%0A%0A%09%09handle%3A%20function%28%20event%20%29%20%7B%0A%09%09%09var%20ret%2C%0A%09%09%09%09target%20%3D%20this%2C%0A%09%09%09%09related%20%3D%20event.relatedTarget%2C%0A%09%09%09%09handleObj%20%3D%20event.handleObj%3B%0A%0A%09%09%09//%20For%20mouseenter/leave%20call%20the%20handler%20if%20related%20is%20outside%20the%20target.%0A%09%09%09//%20NB%3A%20No%20relatedTarget%20if%20the%20mouse%20left/entered%20the%20browser%20window%0A%09%09%09if%20%28%20%21related%20%7C%7C%20%28%20related%20%21%3D%3D%20target%20%26%26%20%21jQuery.contains%28%20target%2C%20related%20%29%20%29%20%29%20%7B%0A%09%09%09%09event.type%20%3D%20handleObj.origType%3B%0A%09%09%09%09ret%20%3D%20handleObj.handler.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09event.type%20%3D%20fix%3B%0A%09%09%09%7D%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09on%3A%20function%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20on%28%20this%2C%20types%2C%20selector%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09one%3A%20function%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20on%28%20this%2C%20types%2C%20selector%2C%20data%2C%20fn%2C%201%20%29%3B%0A%09%7D%2C%0A%09off%3A%20function%28%20types%2C%20selector%2C%20fn%20%29%20%7B%0A%09%09var%20handleObj%2C%20type%3B%0A%09%09if%20%28%20types%20%26%26%20types.preventDefault%20%26%26%20types.handleObj%20%29%20%7B%0A%0A%09%09%09//%20%28%20event%20%29%20%20dispatched%20jQuery.Event%0A%09%09%09handleObj%20%3D%20types.handleObj%3B%0A%09%09%09jQuery%28%20types.delegateTarget%20%29.off%28%0A%09%09%09%09handleObj.namespace%20%3F%0A%09%09%09%09%09handleObj.origType%20%2B%20%22.%22%20%2B%20handleObj.namespace%20%3A%0A%09%09%09%09%09handleObj.origType%2C%0A%09%09%09%09handleObj.selector%2C%0A%09%09%09%09handleObj.handler%0A%09%09%09%29%3B%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%09%09if%20%28%20typeof%20types%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types-object%20%5B%2C%20selector%5D%20%29%0A%09%09%09for%20%28%20type%20in%20types%20%29%20%7B%0A%09%09%09%09this.off%28%20type%2C%20selector%2C%20types%5B%20type%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%09%09if%20%28%20selector%20%3D%3D%3D%20false%20%7C%7C%20typeof%20selector%20%3D%3D%3D%20%22function%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types%20%5B%2C%20fn%5D%20%29%0A%09%09%09fn%20%3D%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09if%20%28%20fn%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09fn%20%3D%20returnFalse%3B%0A%09%09%7D%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.event.remove%28%20this%2C%20types%2C%20fn%2C%20selector%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Avar%0A%0A%09//%20Support%3A%20IE%20%3C%3D10%20-%2011%2C%20Edge%2012%20-%2013%20only%0A%09//%20In%20IE/Edge%20using%20regex%20groups%20here%20causes%20severe%20slowdowns.%0A%09//%20See%20https%3A//connect.microsoft.com/IE/feedback/details/1736512/%0A%09rnoInnerhtml%20%3D%20/%3Cscript%7C%3Cstyle%7C%3Clink/i%2C%0A%0A%09//%20checked%3D%22checked%22%20or%20checked%0A%09rchecked%20%3D%20/checked%5Cs%2A%28%3F%3A%5B%5E%3D%5D%7C%3D%5Cs%2A.checked.%29/i%2C%0A%09rcleanScript%20%3D%20/%5E%5Cs%2A%3C%21%28%3F%3A%5C%5BCDATA%5C%5B%7C--%29%7C%28%3F%3A%5C%5D%5C%5D%7C--%29%3E%5Cs%2A%24/g%3B%0A%0A//%20Prefer%20a%20tbody%20over%20its%20parent%20table%20for%20containing%20new%20rows%0Afunction%20manipulationTarget%28%20elem%2C%20content%20%29%20%7B%0A%09if%20%28%20nodeName%28%20elem%2C%20%22table%22%20%29%20%26%26%0A%09%09nodeName%28%20content.nodeType%20%21%3D%3D%2011%20%3F%20content%20%3A%20content.firstChild%2C%20%22tr%22%20%29%20%29%20%7B%0A%0A%09%09return%20jQuery%28%20elem%20%29.children%28%20%22tbody%22%20%29%5B%200%20%5D%20%7C%7C%20elem%3B%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0A//%20Replace/restore%20the%20type%20attribute%20of%20script%20elements%20for%20safe%20DOM%20manipulation%0Afunction%20disableScript%28%20elem%20%29%20%7B%0A%09elem.type%20%3D%20%28%20elem.getAttribute%28%20%22type%22%20%29%20%21%3D%3D%20null%20%29%20%2B%20%22/%22%20%2B%20elem.type%3B%0A%09return%20elem%3B%0A%7D%0Afunction%20restoreScript%28%20elem%20%29%20%7B%0A%09if%20%28%20%28%20elem.type%20%7C%7C%20%22%22%20%29.slice%28%200%2C%205%20%29%20%3D%3D%3D%20%22true/%22%20%29%20%7B%0A%09%09elem.type%20%3D%20elem.type.slice%28%205%20%29%3B%0A%09%7D%20else%20%7B%0A%09%09elem.removeAttribute%28%20%22type%22%20%29%3B%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0Afunction%20cloneCopyEvent%28%20src%2C%20dest%20%29%20%7B%0A%09var%20i%2C%20l%2C%20type%2C%20pdataOld%2C%20udataOld%2C%20udataCur%2C%20events%3B%0A%0A%09if%20%28%20dest.nodeType%20%21%3D%3D%201%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%201.%20Copy%20private%20data%3A%20events%2C%20handlers%2C%20etc.%0A%09if%20%28%20dataPriv.hasData%28%20src%20%29%20%29%20%7B%0A%09%09pdataOld%20%3D%20dataPriv.get%28%20src%20%29%3B%0A%09%09events%20%3D%20pdataOld.events%3B%0A%0A%09%09if%20%28%20events%20%29%20%7B%0A%09%09%09dataPriv.remove%28%20dest%2C%20%22handle%20events%22%20%29%3B%0A%0A%09%09%09for%20%28%20type%20in%20events%20%29%20%7B%0A%09%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20events%5B%20type%20%5D.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09jQuery.event.add%28%20dest%2C%20type%2C%20events%5B%20type%20%5D%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%202.%20Copy%20user%20data%0A%09if%20%28%20dataUser.hasData%28%20src%20%29%20%29%20%7B%0A%09%09udataOld%20%3D%20dataUser.access%28%20src%20%29%3B%0A%09%09udataCur%20%3D%20jQuery.extend%28%20%7B%7D%2C%20udataOld%20%29%3B%0A%0A%09%09dataUser.set%28%20dest%2C%20udataCur%20%29%3B%0A%09%7D%0A%7D%0A%0A//%20Fix%20IE%20bugs%2C%20see%20support%20tests%0Afunction%20fixInput%28%20src%2C%20dest%20%29%20%7B%0A%09var%20nodeName%20%3D%20dest.nodeName.toLowerCase%28%29%3B%0A%0A%09//%20Fails%20to%20persist%20the%20checked%20state%20of%20a%20cloned%20checkbox%20or%20radio%20button.%0A%09if%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%26%26%20rcheckableType.test%28%20src.type%20%29%20%29%20%7B%0A%09%09dest.checked%20%3D%20src.checked%3B%0A%0A%09//%20Fails%20to%20return%20the%20selected%20option%20to%20the%20default%20selected%20state%20when%20cloning%20options%0A%09%7D%20else%20if%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%7C%7C%20nodeName%20%3D%3D%3D%20%22textarea%22%20%29%20%7B%0A%09%09dest.defaultValue%20%3D%20src.defaultValue%3B%0A%09%7D%0A%7D%0A%0Afunction%20domManip%28%20collection%2C%20args%2C%20callback%2C%20ignored%20%29%20%7B%0A%0A%09//%20Flatten%20any%20nested%20arrays%0A%09args%20%3D%20flat%28%20args%20%29%3B%0A%0A%09var%20fragment%2C%20first%2C%20scripts%2C%20hasScripts%2C%20node%2C%20doc%2C%0A%09%09i%20%3D%200%2C%0A%09%09l%20%3D%20collection.length%2C%0A%09%09iNoClone%20%3D%20l%20-%201%2C%0A%09%09value%20%3D%20args%5B%200%20%5D%2C%0A%09%09valueIsFunction%20%3D%20isFunction%28%20value%20%29%3B%0A%0A%09//%20We%20can%27t%20cloneNode%20fragments%20that%20contain%20checked%2C%20in%20WebKit%0A%09if%20%28%20valueIsFunction%20%7C%7C%0A%09%09%09%28%20l%20%3E%201%20%26%26%20typeof%20value%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%21support.checkClone%20%26%26%20rchecked.test%28%20value%20%29%20%29%20%29%20%7B%0A%09%09return%20collection.each%28%20function%28%20index%20%29%20%7B%0A%09%09%09var%20self%20%3D%20collection.eq%28%20index%20%29%3B%0A%09%09%09if%20%28%20valueIsFunction%20%29%20%7B%0A%09%09%09%09args%5B%200%20%5D%20%3D%20value.call%28%20this%2C%20index%2C%20self.html%28%29%20%29%3B%0A%09%09%09%7D%0A%09%09%09domManip%28%20self%2C%20args%2C%20callback%2C%20ignored%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09if%20%28%20l%20%29%20%7B%0A%09%09fragment%20%3D%20buildFragment%28%20args%2C%20collection%5B%200%20%5D.ownerDocument%2C%20false%2C%20collection%2C%20ignored%20%29%3B%0A%09%09first%20%3D%20fragment.firstChild%3B%0A%0A%09%09if%20%28%20fragment.childNodes.length%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09fragment%20%3D%20first%3B%0A%09%09%7D%0A%0A%09%09//%20Require%20either%20new%20content%20or%20an%20interest%20in%20ignored%20elements%20to%20invoke%20the%20callback%0A%09%09if%20%28%20first%20%7C%7C%20ignored%20%29%20%7B%0A%09%09%09scripts%20%3D%20jQuery.map%28%20getAll%28%20fragment%2C%20%22script%22%20%29%2C%20disableScript%20%29%3B%0A%09%09%09hasScripts%20%3D%20scripts.length%3B%0A%0A%09%09%09//%20Use%20the%20original%20fragment%20for%20the%20last%20item%0A%09%09%09//%20instead%20of%20the%20first%20because%20it%20can%20end%20up%0A%09%09%09//%20being%20emptied%20incorrectly%20in%20certain%20situations%20%28%238070%29.%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09node%20%3D%20fragment%3B%0A%0A%09%09%09%09if%20%28%20i%20%21%3D%3D%20iNoClone%20%29%20%7B%0A%09%09%09%09%09node%20%3D%20jQuery.clone%28%20node%2C%20true%2C%20true%20%29%3B%0A%0A%09%09%09%09%09//%20Keep%20references%20to%20cloned%20scripts%20for%20later%20restoration%0A%09%09%09%09%09if%20%28%20hasScripts%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09%09%09jQuery.merge%28%20scripts%2C%20getAll%28%20node%2C%20%22script%22%20%29%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09callback.call%28%20collection%5B%20i%20%5D%2C%20node%2C%20i%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20hasScripts%20%29%20%7B%0A%09%09%09%09doc%20%3D%20scripts%5B%20scripts.length%20-%201%20%5D.ownerDocument%3B%0A%0A%09%09%09%09//%20Reenable%20scripts%0A%09%09%09%09jQuery.map%28%20scripts%2C%20restoreScript%20%29%3B%0A%0A%09%09%09%09//%20Evaluate%20executable%20scripts%20on%20first%20document%20insertion%0A%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20hasScripts%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09node%20%3D%20scripts%5B%20i%20%5D%3B%0A%09%09%09%09%09if%20%28%20rscriptType.test%28%20node.type%20%7C%7C%20%22%22%20%29%20%26%26%0A%09%09%09%09%09%09%21dataPriv.access%28%20node%2C%20%22globalEval%22%20%29%20%26%26%0A%09%09%09%09%09%09jQuery.contains%28%20doc%2C%20node%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09if%20%28%20node.src%20%26%26%20%28%20node.type%20%7C%7C%20%22%22%20%29.toLowerCase%28%29%20%20%21%3D%3D%20%22module%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Optional%20AJAX%20dependency%2C%20but%20won%27t%20run%20scripts%20if%20not%20present%0A%09%09%09%09%09%09%09if%20%28%20jQuery._evalUrl%20%26%26%20%21node.noModule%20%29%20%7B%0A%09%09%09%09%09%09%09%09jQuery._evalUrl%28%20node.src%2C%20%7B%0A%09%09%09%09%09%09%09%09%09nonce%3A%20node.nonce%20%7C%7C%20node.getAttribute%28%20%22nonce%22%20%29%0A%09%09%09%09%09%09%09%09%7D%2C%20doc%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09DOMEval%28%20node.textContent.replace%28%20rcleanScript%2C%20%22%22%20%29%2C%20node%2C%20doc%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20collection%3B%0A%7D%0A%0Afunction%20remove%28%20elem%2C%20selector%2C%20keepData%20%29%20%7B%0A%09var%20node%2C%0A%09%09nodes%20%3D%20selector%20%3F%20jQuery.filter%28%20selector%2C%20elem%20%29%20%3A%20elem%2C%0A%09%09i%20%3D%200%3B%0A%0A%09for%20%28%20%3B%20%28%20node%20%3D%20nodes%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%21keepData%20%26%26%20node.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09jQuery.cleanData%28%20getAll%28%20node%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20node.parentNode%20%29%20%7B%0A%09%09%09if%20%28%20keepData%20%26%26%20isAttached%28%20node%20%29%20%29%20%7B%0A%09%09%09%09setGlobalEval%28%20getAll%28%20node%2C%20%22script%22%20%29%20%29%3B%0A%09%09%09%7D%0A%09%09%09node.parentNode.removeChild%28%20node%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%09htmlPrefilter%3A%20function%28%20html%20%29%20%7B%0A%09%09return%20html%3B%0A%09%7D%2C%0A%0A%09clone%3A%20function%28%20elem%2C%20dataAndEvents%2C%20deepDataAndEvents%20%29%20%7B%0A%09%09var%20i%2C%20l%2C%20srcElements%2C%20destElements%2C%0A%09%09%09clone%20%3D%20elem.cloneNode%28%20true%20%29%2C%0A%09%09%09inPage%20%3D%20isAttached%28%20elem%20%29%3B%0A%0A%09%09//%20Fix%20IE%20cloning%20issues%0A%09%09if%20%28%20%21support.noCloneChecked%20%26%26%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20elem.nodeType%20%3D%3D%3D%2011%20%29%20%26%26%0A%09%09%09%09%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09//%20We%20eschew%20Sizzle%20here%20for%20performance%20reasons%3A%20https%3A//jsperf.com/getall-vs-sizzle/2%0A%09%09%09destElements%20%3D%20getAll%28%20clone%20%29%3B%0A%09%09%09srcElements%20%3D%20getAll%28%20elem%20%29%3B%0A%0A%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20srcElements.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09fixInput%28%20srcElements%5B%20i%20%5D%2C%20destElements%5B%20i%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Copy%20the%20events%20from%20the%20original%20to%20the%20clone%0A%09%09if%20%28%20dataAndEvents%20%29%20%7B%0A%09%09%09if%20%28%20deepDataAndEvents%20%29%20%7B%0A%09%09%09%09srcElements%20%3D%20srcElements%20%7C%7C%20getAll%28%20elem%20%29%3B%0A%09%09%09%09destElements%20%3D%20destElements%20%7C%7C%20getAll%28%20clone%20%29%3B%0A%0A%09%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20srcElements.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09cloneCopyEvent%28%20srcElements%5B%20i%20%5D%2C%20destElements%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09cloneCopyEvent%28%20elem%2C%20clone%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Preserve%20script%20evaluation%20history%0A%09%09destElements%20%3D%20getAll%28%20clone%2C%20%22script%22%20%29%3B%0A%09%09if%20%28%20destElements.length%20%3E%200%20%29%20%7B%0A%09%09%09setGlobalEval%28%20destElements%2C%20%21inPage%20%26%26%20getAll%28%20elem%2C%20%22script%22%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20the%20cloned%20set%0A%09%09return%20clone%3B%0A%09%7D%2C%0A%0A%09cleanData%3A%20function%28%20elems%20%29%20%7B%0A%09%09var%20data%2C%20elem%2C%20type%2C%0A%09%09%09special%20%3D%20jQuery.event.special%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20%28%20elem%20%3D%20elems%5B%20i%20%5D%20%29%20%21%3D%3D%20undefined%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20acceptData%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20%28%20data%20%3D%20elem%5B%20dataPriv.expando%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20data.events%20%29%20%7B%0A%09%09%09%09%09%09for%20%28%20type%20in%20data.events%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20special%5B%20type%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09%09jQuery.event.remove%28%20elem%2C%20type%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20This%20is%20a%20shortcut%20to%20avoid%20jQuery.event.remove%27s%20overhead%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09jQuery.removeEvent%28%20elem%2C%20type%2C%20data.handle%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%2B%0A%09%09%09%09%09//%20Assign%20undefined%20instead%20of%20using%20delete%2C%20see%20Data%23remove%0A%09%09%09%09%09elem%5B%20dataPriv.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28%20elem%5B%20dataUser.expando%20%5D%20%29%20%7B%0A%0A%09%09%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%2B%0A%09%09%09%09%09//%20Assign%20undefined%20instead%20of%20using%20delete%2C%20see%20Data%23remove%0A%09%09%09%09%09elem%5B%20dataUser.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09detach%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20remove%28%20this%2C%20selector%2C%20true%20%29%3B%0A%09%7D%2C%0A%0A%09remove%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20remove%28%20this%2C%20selector%20%29%3B%0A%09%7D%2C%0A%0A%09text%3A%20function%28%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09return%20value%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09%09jQuery.text%28%20this%20%29%20%3A%0A%09%09%09%09this.empty%28%29.each%28%20function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09%09this.textContent%20%3D%20value%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%29%3B%0A%09%7D%2C%0A%0A%09append%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20manipulationTarget%28%20this%2C%20elem%20%29%3B%0A%09%09%09%09target.appendChild%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09prepend%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20manipulationTarget%28%20this%2C%20elem%20%29%3B%0A%09%09%09%09target.insertBefore%28%20elem%2C%20target.firstChild%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09before%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.parentNode%20%29%20%7B%0A%09%09%09%09this.parentNode.insertBefore%28%20elem%2C%20this%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09after%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.parentNode%20%29%20%7B%0A%09%09%09%09this.parentNode.insertBefore%28%20elem%2C%20this.nextSibling%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09empty%3A%20function%28%29%20%7B%0A%09%09var%20elem%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20%28%20elem%20%3D%20this%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09//%20Prevent%20memory%20leaks%0A%09%09%09%09jQuery.cleanData%28%20getAll%28%20elem%2C%20false%20%29%20%29%3B%0A%0A%09%09%09%09//%20Remove%20any%20remaining%20nodes%0A%09%09%09%09elem.textContent%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09clone%3A%20function%28%20dataAndEvents%2C%20deepDataAndEvents%20%29%20%7B%0A%09%09dataAndEvents%20%3D%20dataAndEvents%20%3D%3D%20null%20%3F%20false%20%3A%20dataAndEvents%3B%0A%09%09deepDataAndEvents%20%3D%20deepDataAndEvents%20%3D%3D%20null%20%3F%20dataAndEvents%20%3A%20deepDataAndEvents%3B%0A%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%09%09%09return%20jQuery.clone%28%20this%2C%20dataAndEvents%2C%20deepDataAndEvents%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09html%3A%20function%28%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09var%20elem%20%3D%20this%5B%200%20%5D%20%7C%7C%20%7B%7D%2C%0A%09%09%09%09i%20%3D%200%2C%0A%09%09%09%09l%20%3D%20this.length%3B%0A%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20undefined%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09return%20elem.innerHTML%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20See%20if%20we%20can%20take%20a%20shortcut%20and%20just%20use%20innerHTML%0A%09%09%09if%20%28%20typeof%20value%20%3D%3D%3D%20%22string%22%20%26%26%20%21rnoInnerhtml.test%28%20value%20%29%20%26%26%0A%09%09%09%09%21wrapMap%5B%20%28%20rtagName.exec%28%20value%20%29%20%7C%7C%20%5B%20%22%22%2C%20%22%22%20%5D%20%29%5B%201%20%5D.toLowerCase%28%29%20%5D%20%29%20%7B%0A%0A%09%09%09%09value%20%3D%20jQuery.htmlPrefilter%28%20value%20%29%3B%0A%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09%09elem%20%3D%20this%5B%20i%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09%09%09%09//%20Remove%20element%20nodes%20and%20prevent%20memory%20leaks%0A%09%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09%09%09%09jQuery.cleanData%28%20getAll%28%20elem%2C%20false%20%29%20%29%3B%0A%09%09%09%09%09%09%09elem.innerHTML%20%3D%20value%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09elem%20%3D%200%3B%0A%0A%09%09%09%09//%20If%20using%20innerHTML%20throws%20an%20exception%2C%20use%20the%20fallback%20method%0A%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09%09this.empty%28%29.append%28%20value%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%29%3B%0A%09%7D%2C%0A%0A%09replaceWith%3A%20function%28%29%20%7B%0A%09%09var%20ignored%20%3D%20%5B%5D%3B%0A%0A%09%09//%20Make%20the%20changes%2C%20replacing%20each%20non-ignored%20context%20element%20with%20the%20new%20content%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20parent%20%3D%20this.parentNode%3B%0A%0A%09%09%09if%20%28%20jQuery.inArray%28%20this%2C%20ignored%20%29%20%3C%200%20%29%20%7B%0A%09%09%09%09jQuery.cleanData%28%20getAll%28%20this%20%29%20%29%3B%0A%09%09%09%09if%20%28%20parent%20%29%20%7B%0A%09%09%09%09%09parent.replaceChild%28%20elem%2C%20this%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Force%20callback%20invocation%0A%09%09%7D%2C%20ignored%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%7B%0A%09appendTo%3A%20%22append%22%2C%0A%09prependTo%3A%20%22prepend%22%2C%0A%09insertBefore%3A%20%22before%22%2C%0A%09insertAfter%3A%20%22after%22%2C%0A%09replaceAll%3A%20%22replaceWith%22%0A%7D%2C%20function%28%20name%2C%20original%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20selector%20%29%20%7B%0A%09%09var%20elems%2C%0A%09%09%09ret%20%3D%20%5B%5D%2C%0A%09%09%09insert%20%3D%20jQuery%28%20selector%20%29%2C%0A%09%09%09last%20%3D%20insert.length%20-%201%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20i%20%3C%3D%20last%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09elems%20%3D%20i%20%3D%3D%3D%20last%20%3F%20this%20%3A%20this.clone%28%20true%20%29%3B%0A%09%09%09jQuery%28%20insert%5B%20i%20%5D%20%29%5B%20original%20%5D%28%20elems%20%29%3B%0A%0A%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09//%20.get%28%29%20because%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09push.apply%28%20ret%2C%20elems.get%28%29%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20ret%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0Avar%20rnumnonpx%20%3D%20new%20RegExp%28%20%22%5E%28%22%20%2B%20pnum%20%2B%20%22%29%28%3F%21px%29%5Ba-z%25%5D%2B%24%22%2C%20%22i%22%20%29%3B%0A%0Avar%20getStyles%20%3D%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D11%20only%2C%20Firefox%20%3C%3D30%20%28%2315098%2C%20%2314150%29%0A%09%09//%20IE%20throws%20on%20elements%20created%20in%20popups%0A%09%09//%20FF%20meanwhile%20throws%20on%20frame%20elements%20through%20%22defaultView.getComputedStyle%22%0A%09%09var%20view%20%3D%20elem.ownerDocument.defaultView%3B%0A%0A%09%09if%20%28%20%21view%20%7C%7C%20%21view.opener%20%29%20%7B%0A%09%09%09view%20%3D%20window%3B%0A%09%09%7D%0A%0A%09%09return%20view.getComputedStyle%28%20elem%20%29%3B%0A%09%7D%3B%0A%0Avar%20swap%20%3D%20function%28%20elem%2C%20options%2C%20callback%20%29%20%7B%0A%09var%20ret%2C%20name%2C%0A%09%09old%20%3D%20%7B%7D%3B%0A%0A%09//%20Remember%20the%20old%20values%2C%20and%20insert%20the%20new%20ones%0A%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09old%5B%20name%20%5D%20%3D%20elem.style%5B%20name%20%5D%3B%0A%09%09elem.style%5B%20name%20%5D%20%3D%20options%5B%20name%20%5D%3B%0A%09%7D%0A%0A%09ret%20%3D%20callback.call%28%20elem%20%29%3B%0A%0A%09//%20Revert%20the%20old%20values%0A%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09elem.style%5B%20name%20%5D%20%3D%20old%5B%20name%20%5D%3B%0A%09%7D%0A%0A%09return%20ret%3B%0A%7D%3B%0A%0A%0Avar%20rboxStyle%20%3D%20new%20RegExp%28%20cssExpand.join%28%20%22%7C%22%20%29%2C%20%22i%22%20%29%3B%0A%0A%0A%0A%28%20function%28%29%20%7B%0A%0A%09//%20Executing%20both%20pixelPosition%20%26%20boxSizingReliable%20tests%20require%20only%20one%20layout%0A%09//%20so%20they%27re%20executed%20at%20the%20same%20time%20to%20save%20the%20second%20computation.%0A%09function%20computeStyleTests%28%29%20%7B%0A%0A%09%09//%20This%20is%20a%20singleton%2C%20we%20need%20to%20execute%20it%20only%20once%0A%09%09if%20%28%20%21div%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09container.style.cssText%20%3D%20%22position%3Aabsolute%3Bleft%3A-11111px%3Bwidth%3A60px%3B%22%20%2B%0A%09%09%09%22margin-top%3A1px%3Bpadding%3A0%3Bborder%3A0%22%3B%0A%09%09div.style.cssText%20%3D%0A%09%09%09%22position%3Arelative%3Bdisplay%3Ablock%3Bbox-sizing%3Aborder-box%3Boverflow%3Ascroll%3B%22%20%2B%0A%09%09%09%22margin%3Aauto%3Bborder%3A1px%3Bpadding%3A1px%3B%22%20%2B%0A%09%09%09%22width%3A60%25%3Btop%3A1%25%22%3B%0A%09%09documentElement.appendChild%28%20container%20%29.appendChild%28%20div%20%29%3B%0A%0A%09%09var%20divStyle%20%3D%20window.getComputedStyle%28%20div%20%29%3B%0A%09%09pixelPositionVal%20%3D%20divStyle.top%20%21%3D%3D%20%221%25%22%3B%0A%0A%09%09//%20Support%3A%20Android%204.0%20-%204.3%20only%2C%20Firefox%20%3C%3D3%20-%2044%0A%09%09reliableMarginLeftVal%20%3D%20roundPixelMeasures%28%20divStyle.marginLeft%20%29%20%3D%3D%3D%2012%3B%0A%0A%09%09//%20Support%3A%20Android%204.0%20-%204.3%20only%2C%20Safari%20%3C%3D9.1%20-%2010.1%2C%20iOS%20%3C%3D7.0%20-%209.3%0A%09%09//%20Some%20styles%20come%20back%20with%20percentage%20values%2C%20even%20though%20they%20shouldn%27t%0A%09%09div.style.right%20%3D%20%2260%25%22%3B%0A%09%09pixelBoxStylesVal%20%3D%20roundPixelMeasures%28%20divStyle.right%20%29%20%3D%3D%3D%2036%3B%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09%09//%20Detect%20misreporting%20of%20content%20dimensions%20for%20box-sizing%3Aborder-box%20elements%0A%09%09boxSizingReliableVal%20%3D%20roundPixelMeasures%28%20divStyle.width%20%29%20%3D%3D%3D%2036%3B%0A%0A%09%09//%20Support%3A%20IE%209%20only%0A%09%09//%20Detect%20overflow%3Ascroll%20screwiness%20%28gh-3699%29%0A%09%09//%20Support%3A%20Chrome%20%3C%3D64%0A%09%09//%20Don%27t%20get%20tricked%20when%20zoom%20affects%20offsetWidth%20%28gh-4029%29%0A%09%09div.style.position%20%3D%20%22absolute%22%3B%0A%09%09scrollboxSizeVal%20%3D%20roundPixelMeasures%28%20div.offsetWidth%20/%203%20%29%20%3D%3D%3D%2012%3B%0A%0A%09%09documentElement.removeChild%28%20container%20%29%3B%0A%0A%09%09//%20Nullify%20the%20div%20so%20it%20wouldn%27t%20be%20stored%20in%20the%20memory%20and%0A%09%09//%20it%20will%20also%20be%20a%20sign%20that%20checks%20already%20performed%0A%09%09div%20%3D%20null%3B%0A%09%7D%0A%0A%09function%20roundPixelMeasures%28%20measure%20%29%20%7B%0A%09%09return%20Math.round%28%20parseFloat%28%20measure%20%29%20%29%3B%0A%09%7D%0A%0A%09var%20pixelPositionVal%2C%20boxSizingReliableVal%2C%20scrollboxSizeVal%2C%20pixelBoxStylesVal%2C%0A%09%09reliableTrDimensionsVal%2C%20reliableMarginLeftVal%2C%0A%09%09container%20%3D%20document.createElement%28%20%22div%22%20%29%2C%0A%09%09div%20%3D%20document.createElement%28%20%22div%22%20%29%3B%0A%0A%09//%20Finish%20early%20in%20limited%20%28non-browser%29%20environments%0A%09if%20%28%20%21div.style%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09//%20Style%20of%20cloned%20element%20affects%20source%20element%20cloned%20%28%238908%29%0A%09div.style.backgroundClip%20%3D%20%22content-box%22%3B%0A%09div.cloneNode%28%20true%20%29.style.backgroundClip%20%3D%20%22%22%3B%0A%09support.clearCloneStyle%20%3D%20div.style.backgroundClip%20%3D%3D%3D%20%22content-box%22%3B%0A%0A%09jQuery.extend%28%20support%2C%20%7B%0A%09%09boxSizingReliable%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20boxSizingReliableVal%3B%0A%09%09%7D%2C%0A%09%09pixelBoxStyles%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20pixelBoxStylesVal%3B%0A%09%09%7D%2C%0A%09%09pixelPosition%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20pixelPositionVal%3B%0A%09%09%7D%2C%0A%09%09reliableMarginLeft%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20reliableMarginLeftVal%3B%0A%09%09%7D%2C%0A%09%09scrollboxSize%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20scrollboxSizeVal%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09//%20IE/Edge%20misreport%20%60getComputedStyle%60%20of%20table%20rows%20with%20width/height%0A%09%09//%20set%20in%20CSS%20while%20%60offset%2A%60%20properties%20report%20correct%20values.%0A%09%09//%20Behavior%20in%20IE%209%20is%20more%20subtle%20than%20in%20newer%20versions%20%26%20it%20passes%0A%09%09//%20some%20versions%20of%20this%20test%3B%20make%20sure%20not%20to%20make%20it%20pass%20there%21%0A%09%09reliableTrDimensions%3A%20function%28%29%20%7B%0A%09%09%09var%20table%2C%20tr%2C%20trChild%2C%20trStyle%3B%0A%09%09%09if%20%28%20reliableTrDimensionsVal%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09table%20%3D%20document.createElement%28%20%22table%22%20%29%3B%0A%09%09%09%09tr%20%3D%20document.createElement%28%20%22tr%22%20%29%3B%0A%09%09%09%09trChild%20%3D%20document.createElement%28%20%22div%22%20%29%3B%0A%0A%09%09%09%09table.style.cssText%20%3D%20%22position%3Aabsolute%3Bleft%3A-11111px%22%3B%0A%09%09%09%09tr.style.height%20%3D%20%221px%22%3B%0A%09%09%09%09trChild.style.height%20%3D%20%229px%22%3B%0A%0A%09%09%09%09documentElement%0A%09%09%09%09%09.appendChild%28%20table%20%29%0A%09%09%09%09%09.appendChild%28%20tr%20%29%0A%09%09%09%09%09.appendChild%28%20trChild%20%29%3B%0A%0A%09%09%09%09trStyle%20%3D%20window.getComputedStyle%28%20tr%20%29%3B%0A%09%09%09%09reliableTrDimensionsVal%20%3D%20parseInt%28%20trStyle.height%20%29%20%3E%203%3B%0A%0A%09%09%09%09documentElement.removeChild%28%20table%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20reliableTrDimensionsVal%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%20%29%28%29%3B%0A%0A%0Afunction%20curCSS%28%20elem%2C%20name%2C%20computed%20%29%20%7B%0A%09var%20width%2C%20minWidth%2C%20maxWidth%2C%20ret%2C%0A%0A%09%09//%20Support%3A%20Firefox%2051%2B%0A%09%09//%20Retrieving%20style%20before%20computed%20somehow%0A%09%09//%20fixes%20an%20issue%20with%20getting%20wrong%20values%0A%09%09//%20on%20detached%20elements%0A%09%09style%20%3D%20elem.style%3B%0A%0A%09computed%20%3D%20computed%20%7C%7C%20getStyles%28%20elem%20%29%3B%0A%0A%09//%20getPropertyValue%20is%20needed%20for%3A%0A%09//%20%20%20.css%28%27filter%27%29%20%28IE%209%20only%2C%20%2312537%29%0A%09//%20%20%20.css%28%27--customProperty%29%20%28%233144%29%0A%09if%20%28%20computed%20%29%20%7B%0A%09%09ret%20%3D%20computed.getPropertyValue%28%20name%20%29%20%7C%7C%20computed%5B%20name%20%5D%3B%0A%0A%09%09if%20%28%20ret%20%3D%3D%3D%20%22%22%20%26%26%20%21isAttached%28%20elem%20%29%20%29%20%7B%0A%09%09%09ret%20%3D%20jQuery.style%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20A%20tribute%20to%20the%20%22awesome%20hack%20by%20Dean%20Edwards%22%0A%09%09//%20Android%20Browser%20returns%20percentage%20for%20some%20values%2C%0A%09%09//%20but%20width%20seems%20to%20be%20reliably%20pixels.%0A%09%09//%20This%20is%20against%20the%20CSSOM%20draft%20spec%3A%0A%09%09//%20https%3A//drafts.csswg.org/cssom/%23resolved-values%0A%09%09if%20%28%20%21support.pixelBoxStyles%28%29%20%26%26%20rnumnonpx.test%28%20ret%20%29%20%26%26%20rboxStyle.test%28%20name%20%29%20%29%20%7B%0A%0A%09%09%09//%20Remember%20the%20original%20values%0A%09%09%09width%20%3D%20style.width%3B%0A%09%09%09minWidth%20%3D%20style.minWidth%3B%0A%09%09%09maxWidth%20%3D%20style.maxWidth%3B%0A%0A%09%09%09//%20Put%20in%20the%20new%20values%20to%20get%20a%20computed%20value%20out%0A%09%09%09style.minWidth%20%3D%20style.maxWidth%20%3D%20style.width%20%3D%20ret%3B%0A%09%09%09ret%20%3D%20computed.width%3B%0A%0A%09%09%09//%20Revert%20the%20changed%20values%0A%09%09%09style.width%20%3D%20width%3B%0A%09%09%09style.minWidth%20%3D%20minWidth%3B%0A%09%09%09style.maxWidth%20%3D%20maxWidth%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20ret%20%21%3D%3D%20undefined%20%3F%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09%09//%20IE%20returns%20zIndex%20value%20as%20an%20integer.%0A%09%09ret%20%2B%20%22%22%20%3A%0A%09%09ret%3B%0A%7D%0A%0A%0Afunction%20addGetHookIf%28%20conditionFn%2C%20hookFn%20%29%20%7B%0A%0A%09//%20Define%20the%20hook%2C%20we%27ll%20check%20on%20the%20first%20run%20if%20it%27s%20really%20needed.%0A%09return%20%7B%0A%09%09get%3A%20function%28%29%20%7B%0A%09%09%09if%20%28%20conditionFn%28%29%20%29%20%7B%0A%0A%09%09%09%09//%20Hook%20not%20needed%20%28or%20it%27s%20not%20possible%20to%20use%20it%20due%0A%09%09%09%09//%20to%20missing%20dependency%29%2C%20remove%20it.%0A%09%09%09%09delete%20this.get%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Hook%20needed%3B%20redefine%20it%20so%20that%20the%20support%20test%20is%20not%20executed%20again.%0A%09%09%09return%20%28%20this.get%20%3D%20hookFn%20%29.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0A%0Avar%20cssPrefixes%20%3D%20%5B%20%22Webkit%22%2C%20%22Moz%22%2C%20%22ms%22%20%5D%2C%0A%09emptyStyle%20%3D%20document.createElement%28%20%22div%22%20%29.style%2C%0A%09vendorProps%20%3D%20%7B%7D%3B%0A%0A//%20Return%20a%20vendor-prefixed%20property%20or%20undefined%0Afunction%20vendorPropName%28%20name%20%29%20%7B%0A%0A%09//%20Check%20for%20vendor%20prefixed%20names%0A%09var%20capName%20%3D%20name%5B%200%20%5D.toUpperCase%28%29%20%2B%20name.slice%28%201%20%29%2C%0A%09%09i%20%3D%20cssPrefixes.length%3B%0A%0A%09while%20%28%20i--%20%29%20%7B%0A%09%09name%20%3D%20cssPrefixes%5B%20i%20%5D%20%2B%20capName%3B%0A%09%09if%20%28%20name%20in%20emptyStyle%20%29%20%7B%0A%09%09%09return%20name%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0A//%20Return%20a%20potentially-mapped%20jQuery.cssProps%20or%20vendor%20prefixed%20property%0Afunction%20finalPropName%28%20name%20%29%20%7B%0A%09var%20final%20%3D%20jQuery.cssProps%5B%20name%20%5D%20%7C%7C%20vendorProps%5B%20name%20%5D%3B%0A%0A%09if%20%28%20final%20%29%20%7B%0A%09%09return%20final%3B%0A%09%7D%0A%09if%20%28%20name%20in%20emptyStyle%20%29%20%7B%0A%09%09return%20name%3B%0A%09%7D%0A%09return%20vendorProps%5B%20name%20%5D%20%3D%20vendorPropName%28%20name%20%29%20%7C%7C%20name%3B%0A%7D%0A%0A%0Avar%0A%0A%09//%20Swappable%20if%20display%20is%20none%20or%20starts%20with%20table%0A%09//%20except%20%22table%22%2C%20%22table-cell%22%2C%20or%20%22table-caption%22%0A%09//%20See%20here%20for%20display%20values%3A%20https%3A//developer.mozilla.org/en-US/docs/CSS/display%0A%09rdisplayswap%20%3D%20/%5E%28none%7Ctable%28%3F%21-c%5Bea%5D%29.%2B%29/%2C%0A%09rcustomProp%20%3D%20/%5E--/%2C%0A%09cssShow%20%3D%20%7B%20position%3A%20%22absolute%22%2C%20visibility%3A%20%22hidden%22%2C%20display%3A%20%22block%22%20%7D%2C%0A%09cssNormalTransform%20%3D%20%7B%0A%09%09letterSpacing%3A%20%220%22%2C%0A%09%09fontWeight%3A%20%22400%22%0A%09%7D%3B%0A%0Afunction%20setPositiveNumber%28%20_elem%2C%20value%2C%20subtract%20%29%20%7B%0A%0A%09//%20Any%20relative%20%28%2B/-%29%20values%20have%20already%20been%0A%09//%20normalized%20at%20this%20point%0A%09var%20matches%20%3D%20rcssNum.exec%28%20value%20%29%3B%0A%09return%20matches%20%3F%0A%0A%09%09//%20Guard%20against%20undefined%20%22subtract%22%2C%20e.g.%2C%20when%20used%20as%20in%20cssHooks%0A%09%09Math.max%28%200%2C%20matches%5B%202%20%5D%20-%20%28%20subtract%20%7C%7C%200%20%29%20%29%20%2B%20%28%20matches%5B%203%20%5D%20%7C%7C%20%22px%22%20%29%20%3A%0A%09%09value%3B%0A%7D%0A%0Afunction%20boxModelAdjustment%28%20elem%2C%20dimension%2C%20box%2C%20isBorderBox%2C%20styles%2C%20computedVal%20%29%20%7B%0A%09var%20i%20%3D%20dimension%20%3D%3D%3D%20%22width%22%20%3F%201%20%3A%200%2C%0A%09%09extra%20%3D%200%2C%0A%09%09delta%20%3D%200%3B%0A%0A%09//%20Adjustment%20may%20not%20be%20necessary%0A%09if%20%28%20box%20%3D%3D%3D%20%28%20isBorderBox%20%3F%20%22border%22%20%3A%20%22content%22%20%29%20%29%20%7B%0A%09%09return%200%3B%0A%09%7D%0A%0A%09for%20%28%20%3B%20i%20%3C%204%3B%20i%20%2B%3D%202%20%29%20%7B%0A%0A%09%09//%20Both%20box%20models%20exclude%20margin%0A%09%09if%20%28%20box%20%3D%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20box%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20If%20we%20get%20here%20with%20a%20content-box%2C%20we%27re%20seeking%20%22padding%22%20or%20%22border%22%20or%20%22margin%22%0A%09%09if%20%28%20%21isBorderBox%20%29%20%7B%0A%0A%09%09%09//%20Add%20padding%0A%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20%22padding%22%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%0A%09%09%09//%20For%20%22border%22%20or%20%22margin%22%2C%20add%20border%0A%09%09%09if%20%28%20box%20%21%3D%3D%20%22padding%22%20%29%20%7B%0A%09%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%0A%09%09%09//%20But%20still%20keep%20track%20of%20it%20otherwise%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09extra%20%2B%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%0A%09%09//%20If%20we%20get%20here%20with%20a%20border-box%20%28content%20%2B%20padding%20%2B%20border%29%2C%20we%27re%20seeking%20%22content%22%20or%0A%09%09//%20%22padding%22%20or%20%22margin%22%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20For%20%22content%22%2C%20subtract%20padding%0A%09%09%09if%20%28%20box%20%3D%3D%3D%20%22content%22%20%29%20%7B%0A%09%09%09%09delta%20-%3D%20jQuery.css%28%20elem%2C%20%22padding%22%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20For%20%22content%22%20or%20%22padding%22%2C%20subtract%20border%0A%09%09%09if%20%28%20box%20%21%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09%09%09delta%20-%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Account%20for%20positive%20content-box%20scroll%20gutter%20when%20requested%20by%20providing%20computedVal%0A%09if%20%28%20%21isBorderBox%20%26%26%20computedVal%20%3E%3D%200%20%29%20%7B%0A%0A%09%09//%20offsetWidth/offsetHeight%20is%20a%20rounded%20sum%20of%20content%2C%20padding%2C%20scroll%20gutter%2C%20and%20border%0A%09%09//%20Assuming%20integer%20scroll%20gutter%2C%20subtract%20the%20rest%20and%20round%20down%0A%09%09delta%20%2B%3D%20Math.max%28%200%2C%20Math.ceil%28%0A%09%09%09elem%5B%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%20%5D%20-%0A%09%09%09computedVal%20-%0A%09%09%09delta%20-%0A%09%09%09extra%20-%0A%09%09%090.5%0A%0A%09%09//%20If%20offsetWidth/offsetHeight%20is%20unknown%2C%20then%20we%20can%27t%20determine%20content-box%20scroll%20gutter%0A%09%09//%20Use%20an%20explicit%20zero%20to%20avoid%20NaN%20%28gh-3964%29%0A%09%09%29%20%29%20%7C%7C%200%3B%0A%09%7D%0A%0A%09return%20delta%3B%0A%7D%0A%0Afunction%20getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%20%7B%0A%0A%09//%20Start%20with%20computed%20style%0A%09var%20styles%20%3D%20getStyles%28%20elem%20%29%2C%0A%0A%09%09//%20To%20avoid%20forcing%20a%20reflow%2C%20only%20fetch%20boxSizing%20if%20we%20need%20it%20%28gh-4322%29.%0A%09%09//%20Fake%20content-box%20until%20we%20know%20it%27s%20needed%20to%20know%20the%20true%20value.%0A%09%09boxSizingNeeded%20%3D%20%21support.boxSizingReliable%28%29%20%7C%7C%20extra%2C%0A%09%09isBorderBox%20%3D%20boxSizingNeeded%20%26%26%0A%09%09%09jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%2C%0A%09%09valueIsBorderBox%20%3D%20isBorderBox%2C%0A%0A%09%09val%20%3D%20curCSS%28%20elem%2C%20dimension%2C%20styles%20%29%2C%0A%09%09offsetProp%20%3D%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%3B%0A%0A%09//%20Support%3A%20Firefox%20%3C%3D54%0A%09//%20Return%20a%20confounding%20non-pixel%20value%20or%20feign%20ignorance%2C%20as%20appropriate.%0A%09if%20%28%20rnumnonpx.test%28%20val%20%29%20%29%20%7B%0A%09%09if%20%28%20%21extra%20%29%20%7B%0A%09%09%09return%20val%3B%0A%09%09%7D%0A%09%09val%20%3D%20%22auto%22%3B%0A%09%7D%0A%0A%0A%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09//%20Use%20offsetWidth/offsetHeight%20for%20when%20box%20sizing%20is%20unreliable.%0A%09//%20In%20those%20cases%2C%20the%20computed%20value%20can%20be%20trusted%20to%20be%20border-box.%0A%09if%20%28%20%28%20%21support.boxSizingReliable%28%29%20%26%26%20isBorderBox%20%7C%7C%0A%0A%09%09//%20Support%3A%20IE%2010%20-%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09//%20IE/Edge%20misreport%20%60getComputedStyle%60%20of%20table%20rows%20with%20width/height%0A%09%09//%20set%20in%20CSS%20while%20%60offset%2A%60%20properties%20report%20correct%20values.%0A%09%09//%20Interestingly%2C%20in%20some%20cases%20IE%209%20doesn%27t%20suffer%20from%20this%20issue.%0A%09%09%21support.reliableTrDimensions%28%29%20%26%26%20nodeName%28%20elem%2C%20%22tr%22%20%29%20%7C%7C%0A%0A%09%09//%20Fall%20back%20to%20offsetWidth/offsetHeight%20when%20value%20is%20%22auto%22%0A%09%09//%20This%20happens%20for%20inline%20elements%20with%20no%20explicit%20setting%20%28gh-3571%29%0A%09%09val%20%3D%3D%3D%20%22auto%22%20%7C%7C%0A%0A%09%09//%20Support%3A%20Android%20%3C%3D4.1%20-%204.3%20only%0A%09%09//%20Also%20use%20offsetWidth/offsetHeight%20for%20misreported%20inline%20dimensions%20%28gh-3602%29%0A%09%09%21parseFloat%28%20val%20%29%20%26%26%20jQuery.css%28%20elem%2C%20%22display%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22inline%22%20%29%20%26%26%0A%0A%09%09//%20Make%20sure%20the%20element%20is%20visible%20%26%20connected%0A%09%09elem.getClientRects%28%29.length%20%29%20%7B%0A%0A%09%09isBorderBox%20%3D%20jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%3B%0A%0A%09%09//%20Where%20available%2C%20offsetWidth/offsetHeight%20approximate%20border%20box%20dimensions.%0A%09%09//%20Where%20not%20available%20%28e.g.%2C%20SVG%29%2C%20assume%20unreliable%20box-sizing%20and%20interpret%20the%0A%09%09//%20retrieved%20value%20as%20a%20content%20box%20dimension.%0A%09%09valueIsBorderBox%20%3D%20offsetProp%20in%20elem%3B%0A%09%09if%20%28%20valueIsBorderBox%20%29%20%7B%0A%09%09%09val%20%3D%20elem%5B%20offsetProp%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Normalize%20%22%22%20and%20auto%0A%09val%20%3D%20parseFloat%28%20val%20%29%20%7C%7C%200%3B%0A%0A%09//%20Adjust%20for%20the%20element%27s%20box%20model%0A%09return%20%28%20val%20%2B%0A%09%09boxModelAdjustment%28%0A%09%09%09elem%2C%0A%09%09%09dimension%2C%0A%09%09%09extra%20%7C%7C%20%28%20isBorderBox%20%3F%20%22border%22%20%3A%20%22content%22%20%29%2C%0A%09%09%09valueIsBorderBox%2C%0A%09%09%09styles%2C%0A%0A%09%09%09//%20Provide%20the%20current%20computed%20size%20to%20request%20scroll%20gutter%20calculation%20%28gh-3589%29%0A%09%09%09val%0A%09%09%29%0A%09%29%20%2B%20%22px%22%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Add%20in%20style%20property%20hooks%20for%20overriding%20the%20default%0A%09//%20behavior%20of%20getting%20and%20setting%20a%20style%20property%0A%09cssHooks%3A%20%7B%0A%09%09opacity%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09%09%09if%20%28%20computed%20%29%20%7B%0A%0A%09%09%09%09%09//%20We%20should%20always%20get%20a%20number%20back%20from%20opacity%0A%09%09%09%09%09var%20ret%20%3D%20curCSS%28%20elem%2C%20%22opacity%22%20%29%3B%0A%09%09%09%09%09return%20ret%20%3D%3D%3D%20%22%22%20%3F%20%221%22%20%3A%20ret%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Don%27t%20automatically%20add%20%22px%22%20to%20these%20possibly-unitless%20properties%0A%09cssNumber%3A%20%7B%0A%09%09%22animationIterationCount%22%3A%20true%2C%0A%09%09%22columnCount%22%3A%20true%2C%0A%09%09%22fillOpacity%22%3A%20true%2C%0A%09%09%22flexGrow%22%3A%20true%2C%0A%09%09%22flexShrink%22%3A%20true%2C%0A%09%09%22fontWeight%22%3A%20true%2C%0A%09%09%22gridArea%22%3A%20true%2C%0A%09%09%22gridColumn%22%3A%20true%2C%0A%09%09%22gridColumnEnd%22%3A%20true%2C%0A%09%09%22gridColumnStart%22%3A%20true%2C%0A%09%09%22gridRow%22%3A%20true%2C%0A%09%09%22gridRowEnd%22%3A%20true%2C%0A%09%09%22gridRowStart%22%3A%20true%2C%0A%09%09%22lineHeight%22%3A%20true%2C%0A%09%09%22opacity%22%3A%20true%2C%0A%09%09%22order%22%3A%20true%2C%0A%09%09%22orphans%22%3A%20true%2C%0A%09%09%22widows%22%3A%20true%2C%0A%09%09%22zIndex%22%3A%20true%2C%0A%09%09%22zoom%22%3A%20true%0A%09%7D%2C%0A%0A%09//%20Add%20in%20properties%20whose%20names%20you%20wish%20to%20fix%20before%0A%09//%20setting%20or%20getting%20the%20value%0A%09cssProps%3A%20%7B%7D%2C%0A%0A%09//%20Get%20and%20set%20the%20style%20property%20on%20a%20DOM%20Node%0A%09style%3A%20function%28%20elem%2C%20name%2C%20value%2C%20extra%20%29%20%7B%0A%0A%09%09//%20Don%27t%20set%20styles%20on%20text%20and%20comment%20nodes%0A%09%09if%20%28%20%21elem%20%7C%7C%20elem.nodeType%20%3D%3D%3D%203%20%7C%7C%20elem.nodeType%20%3D%3D%3D%208%20%7C%7C%20%21elem.style%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name%0A%09%09var%20ret%2C%20type%2C%20hooks%2C%0A%09%09%09origName%20%3D%20camelCase%28%20name%20%29%2C%0A%09%09%09isCustomProp%20%3D%20rcustomProp.test%28%20name%20%29%2C%0A%09%09%09style%20%3D%20elem.style%3B%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name.%20We%20don%27t%0A%09%09//%20want%20to%20query%20the%20value%20if%20it%20is%20a%20CSS%20custom%20property%0A%09%09//%20since%20they%20are%20user-defined.%0A%09%09if%20%28%20%21isCustomProp%20%29%20%7B%0A%09%09%09name%20%3D%20finalPropName%28%20origName%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Gets%20hook%20for%20the%20prefixed%20version%2C%20then%20unprefixed%20version%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%20%7C%7C%20jQuery.cssHooks%5B%20origName%20%5D%3B%0A%0A%09%09//%20Check%20if%20we%27re%20setting%20a%20value%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09type%20%3D%20typeof%20value%3B%0A%0A%09%09%09//%20Convert%20%22%2B%3D%22%20or%20%22-%3D%22%20to%20relative%20numbers%20%28%237345%29%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22string%22%20%26%26%20%28%20ret%20%3D%20rcssNum.exec%28%20value%20%29%20%29%20%26%26%20ret%5B%201%20%5D%20%29%20%7B%0A%09%09%09%09value%20%3D%20adjustCSS%28%20elem%2C%20name%2C%20ret%20%29%3B%0A%0A%09%09%09%09//%20Fixes%20bug%20%239237%0A%09%09%09%09type%20%3D%20%22number%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Make%20sure%20that%20null%20and%20NaN%20values%20aren%27t%20set%20%28%237116%29%0A%09%09%09if%20%28%20value%20%3D%3D%20null%20%7C%7C%20value%20%21%3D%3D%20value%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20a%20number%20was%20passed%20in%2C%20add%20the%20unit%20%28except%20for%20certain%20CSS%20properties%29%0A%09%09%09//%20The%20isCustomProp%20check%20can%20be%20removed%20in%20jQuery%204.0%20when%20we%20only%20auto-append%0A%09%09%09//%20%22px%22%20to%20a%20few%20hardcoded%20values.%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22number%22%20%26%26%20%21isCustomProp%20%29%20%7B%0A%09%09%09%09value%20%2B%3D%20ret%20%26%26%20ret%5B%203%20%5D%20%7C%7C%20%28%20jQuery.cssNumber%5B%20origName%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20background-%2A%20props%20affect%20original%20clone%27s%20values%0A%09%09%09if%20%28%20%21support.clearCloneStyle%20%26%26%20value%20%3D%3D%3D%20%22%22%20%26%26%20name.indexOf%28%20%22background%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09%09style%5B%20name%20%5D%20%3D%20%22inherit%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20a%20hook%20was%20provided%2C%20use%20that%20value%2C%20otherwise%20just%20set%20the%20specified%20value%0A%09%09%09if%20%28%20%21hooks%20%7C%7C%20%21%28%20%22set%22%20in%20hooks%20%29%20%7C%7C%0A%09%09%09%09%28%20value%20%3D%20hooks.set%28%20elem%2C%20value%2C%20extra%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09if%20%28%20isCustomProp%20%29%20%7B%0A%09%09%09%09%09style.setProperty%28%20name%2C%20value%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09style%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20If%20a%20hook%20was%20provided%20get%20the%20non-computed%20value%20from%20there%0A%09%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.get%28%20elem%2C%20false%2C%20extra%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Otherwise%20just%20get%20the%20value%20from%20the%20style%20object%0A%09%09%09return%20style%5B%20name%20%5D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09css%3A%20function%28%20elem%2C%20name%2C%20extra%2C%20styles%20%29%20%7B%0A%09%09var%20val%2C%20num%2C%20hooks%2C%0A%09%09%09origName%20%3D%20camelCase%28%20name%20%29%2C%0A%09%09%09isCustomProp%20%3D%20rcustomProp.test%28%20name%20%29%3B%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name.%20We%20don%27t%0A%09%09//%20want%20to%20modify%20the%20value%20if%20it%20is%20a%20CSS%20custom%20property%0A%09%09//%20since%20they%20are%20user-defined.%0A%09%09if%20%28%20%21isCustomProp%20%29%20%7B%0A%09%09%09name%20%3D%20finalPropName%28%20origName%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Try%20prefixed%20name%20followed%20by%20the%20unprefixed%20name%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%20%7C%7C%20jQuery.cssHooks%5B%20origName%20%5D%3B%0A%0A%09%09//%20If%20a%20hook%20was%20provided%20get%20the%20computed%20value%20from%20there%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%29%20%7B%0A%09%09%09val%20%3D%20hooks.get%28%20elem%2C%20true%2C%20extra%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Otherwise%2C%20if%20a%20way%20to%20get%20the%20computed%20value%20exists%2C%20use%20that%0A%09%09if%20%28%20val%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09val%20%3D%20curCSS%28%20elem%2C%20name%2C%20styles%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Convert%20%22normal%22%20to%20computed%20value%0A%09%09if%20%28%20val%20%3D%3D%3D%20%22normal%22%20%26%26%20name%20in%20cssNormalTransform%20%29%20%7B%0A%09%09%09val%20%3D%20cssNormalTransform%5B%20name%20%5D%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20numeric%20if%20forced%20or%20a%20qualifier%20was%20provided%20and%20val%20looks%20numeric%0A%09%09if%20%28%20extra%20%3D%3D%3D%20%22%22%20%7C%7C%20extra%20%29%20%7B%0A%09%09%09num%20%3D%20parseFloat%28%20val%20%29%3B%0A%09%09%09return%20extra%20%3D%3D%3D%20true%20%7C%7C%20isFinite%28%20num%20%29%20%3F%20num%20%7C%7C%200%20%3A%20val%3B%0A%09%09%7D%0A%0A%09%09return%20val%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22height%22%2C%20%22width%22%20%5D%2C%20function%28%20_i%2C%20dimension%20%29%20%7B%0A%09jQuery.cssHooks%5B%20dimension%20%5D%20%3D%20%7B%0A%09%09get%3A%20function%28%20elem%2C%20computed%2C%20extra%20%29%20%7B%0A%09%09%09if%20%28%20computed%20%29%20%7B%0A%0A%09%09%09%09//%20Certain%20elements%20can%20have%20dimension%20info%20if%20we%20invisibly%20show%20them%0A%09%09%09%09//%20but%20it%20must%20have%20a%20current%20display%20style%20that%20would%20benefit%0A%09%09%09%09return%20rdisplayswap.test%28%20jQuery.css%28%20elem%2C%20%22display%22%20%29%20%29%20%26%26%0A%0A%09%09%09%09%09//%20Support%3A%20Safari%208%2B%0A%09%09%09%09%09//%20Table%20columns%20in%20Safari%20have%20non-zero%20offsetWidth%20%26%20zero%0A%09%09%09%09%09//%20getBoundingClientRect%28%29.width%20unless%20display%20is%20changed.%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09%09%09%09%09//%20Running%20getBoundingClientRect%20on%20a%20disconnected%20node%0A%09%09%09%09%09//%20in%20IE%20throws%20an%20error.%0A%09%09%09%09%09%28%20%21elem.getClientRects%28%29.length%20%7C%7C%20%21elem.getBoundingClientRect%28%29.width%20%29%20%3F%0A%09%09%09%09%09%09swap%28%20elem%2C%20cssShow%2C%20function%28%29%20%7B%0A%09%09%09%09%09%09%09return%20getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%3B%0A%09%09%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09%09%09getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09set%3A%20function%28%20elem%2C%20value%2C%20extra%20%29%20%7B%0A%09%09%09var%20matches%2C%0A%09%09%09%09styles%20%3D%20getStyles%28%20elem%20%29%2C%0A%0A%09%09%09%09//%20Only%20read%20styles.position%20if%20the%20test%20has%20a%20chance%20to%20fail%0A%09%09%09%09//%20to%20avoid%20forcing%20a%20reflow.%0A%09%09%09%09scrollboxSizeBuggy%20%3D%20%21support.scrollboxSize%28%29%20%26%26%0A%09%09%09%09%09styles.position%20%3D%3D%3D%20%22absolute%22%2C%0A%0A%09%09%09%09//%20To%20avoid%20forcing%20a%20reflow%2C%20only%20fetch%20boxSizing%20if%20we%20need%20it%20%28gh-3991%29%0A%09%09%09%09boxSizingNeeded%20%3D%20scrollboxSizeBuggy%20%7C%7C%20extra%2C%0A%09%09%09%09isBorderBox%20%3D%20boxSizingNeeded%20%26%26%0A%09%09%09%09%09jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%2C%0A%09%09%09%09subtract%20%3D%20extra%20%3F%0A%09%09%09%09%09boxModelAdjustment%28%0A%09%09%09%09%09%09elem%2C%0A%09%09%09%09%09%09dimension%2C%0A%09%09%09%09%09%09extra%2C%0A%09%09%09%09%09%09isBorderBox%2C%0A%09%09%09%09%09%09styles%0A%09%09%09%09%09%29%20%3A%0A%09%09%09%09%090%3B%0A%0A%09%09%09//%20Account%20for%20unreliable%20border-box%20dimensions%20by%20comparing%20offset%2A%20to%20computed%20and%0A%09%09%09//%20faking%20a%20content-box%20to%20get%20border%20and%20padding%20%28gh-3699%29%0A%09%09%09if%20%28%20isBorderBox%20%26%26%20scrollboxSizeBuggy%20%29%20%7B%0A%09%09%09%09subtract%20-%3D%20Math.ceil%28%0A%09%09%09%09%09elem%5B%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%20%5D%20-%0A%09%09%09%09%09parseFloat%28%20styles%5B%20dimension%20%5D%20%29%20-%0A%09%09%09%09%09boxModelAdjustment%28%20elem%2C%20dimension%2C%20%22border%22%2C%20false%2C%20styles%20%29%20-%0A%09%09%09%09%090.5%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Convert%20to%20pixels%20if%20value%20adjustment%20is%20needed%0A%09%09%09if%20%28%20subtract%20%26%26%20%28%20matches%20%3D%20rcssNum.exec%28%20value%20%29%20%29%20%26%26%0A%09%09%09%09%28%20matches%5B%203%20%5D%20%7C%7C%20%22px%22%20%29%20%21%3D%3D%20%22px%22%20%29%20%7B%0A%0A%09%09%09%09elem.style%5B%20dimension%20%5D%20%3D%20value%3B%0A%09%09%09%09value%20%3D%20jQuery.css%28%20elem%2C%20dimension%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20setPositiveNumber%28%20elem%2C%20value%2C%20subtract%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.cssHooks.marginLeft%20%3D%20addGetHookIf%28%20support.reliableMarginLeft%2C%0A%09function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09if%20%28%20computed%20%29%20%7B%0A%09%09%09return%20%28%20parseFloat%28%20curCSS%28%20elem%2C%20%22marginLeft%22%20%29%20%29%20%7C%7C%0A%09%09%09%09elem.getBoundingClientRect%28%29.left%20-%0A%09%09%09%09%09swap%28%20elem%2C%20%7B%20marginLeft%3A%200%20%7D%2C%20function%28%29%20%7B%0A%09%09%09%09%09%09return%20elem.getBoundingClientRect%28%29.left%3B%0A%09%09%09%09%09%7D%20%29%0A%09%09%09%09%29%20%2B%20%22px%22%3B%0A%09%09%7D%0A%09%7D%0A%29%3B%0A%0A//%20These%20hooks%20are%20used%20by%20animate%20to%20expand%20properties%0AjQuery.each%28%20%7B%0A%09margin%3A%20%22%22%2C%0A%09padding%3A%20%22%22%2C%0A%09border%3A%20%22Width%22%0A%7D%2C%20function%28%20prefix%2C%20suffix%20%29%20%7B%0A%09jQuery.cssHooks%5B%20prefix%20%2B%20suffix%20%5D%20%3D%20%7B%0A%09%09expand%3A%20function%28%20value%20%29%20%7B%0A%09%09%09var%20i%20%3D%200%2C%0A%09%09%09%09expanded%20%3D%20%7B%7D%2C%0A%0A%09%09%09%09//%20Assumes%20a%20single%20number%20if%20not%20a%20string%0A%09%09%09%09parts%20%3D%20typeof%20value%20%3D%3D%3D%20%22string%22%20%3F%20value.split%28%20%22%20%22%20%29%20%3A%20%5B%20value%20%5D%3B%0A%0A%09%09%09for%20%28%20%3B%20i%20%3C%204%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09expanded%5B%20prefix%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20suffix%20%5D%20%3D%0A%09%09%09%09%09parts%5B%20i%20%5D%20%7C%7C%20parts%5B%20i%20-%202%20%5D%20%7C%7C%20parts%5B%200%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20expanded%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09if%20%28%20prefix%20%21%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09jQuery.cssHooks%5B%20prefix%20%2B%20suffix%20%5D.set%20%3D%20setPositiveNumber%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09css%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09%09var%20styles%2C%20len%2C%0A%09%09%09%09map%20%3D%20%7B%7D%2C%0A%09%09%09%09i%20%3D%200%3B%0A%0A%09%09%09if%20%28%20Array.isArray%28%20name%20%29%20%29%20%7B%0A%09%09%09%09styles%20%3D%20getStyles%28%20elem%20%29%3B%0A%09%09%09%09len%20%3D%20name.length%3B%0A%0A%09%09%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09map%5B%20name%5B%20i%20%5D%20%5D%20%3D%20jQuery.css%28%20elem%2C%20name%5B%20i%20%5D%2C%20false%2C%20styles%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20map%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20value%20%21%3D%3D%20undefined%20%3F%0A%09%09%09%09jQuery.style%28%20elem%2C%20name%2C%20value%20%29%20%3A%0A%09%09%09%09jQuery.css%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Afunction%20Tween%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%20%29%20%7B%0A%09return%20new%20Tween.prototype.init%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%20%29%3B%0A%7D%0AjQuery.Tween%20%3D%20Tween%3B%0A%0ATween.prototype%20%3D%20%7B%0A%09constructor%3A%20Tween%2C%0A%09init%3A%20function%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%2C%20unit%20%29%20%7B%0A%09%09this.elem%20%3D%20elem%3B%0A%09%09this.prop%20%3D%20prop%3B%0A%09%09this.easing%20%3D%20easing%20%7C%7C%20jQuery.easing._default%3B%0A%09%09this.options%20%3D%20options%3B%0A%09%09this.start%20%3D%20this.now%20%3D%20this.cur%28%29%3B%0A%09%09this.end%20%3D%20end%3B%0A%09%09this.unit%20%3D%20unit%20%7C%7C%20%28%20jQuery.cssNumber%5B%20prop%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%3B%0A%09%7D%2C%0A%09cur%3A%20function%28%29%20%7B%0A%09%09var%20hooks%20%3D%20Tween.propHooks%5B%20this.prop%20%5D%3B%0A%0A%09%09return%20hooks%20%26%26%20hooks.get%20%3F%0A%09%09%09hooks.get%28%20this%20%29%20%3A%0A%09%09%09Tween.propHooks._default.get%28%20this%20%29%3B%0A%09%7D%2C%0A%09run%3A%20function%28%20percent%20%29%20%7B%0A%09%09var%20eased%2C%0A%09%09%09hooks%20%3D%20Tween.propHooks%5B%20this.prop%20%5D%3B%0A%0A%09%09if%20%28%20this.options.duration%20%29%20%7B%0A%09%09%09this.pos%20%3D%20eased%20%3D%20jQuery.easing%5B%20this.easing%20%5D%28%0A%09%09%09%09percent%2C%20this.options.duration%20%2A%20percent%2C%200%2C%201%2C%20this.options.duration%0A%09%09%09%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09this.pos%20%3D%20eased%20%3D%20percent%3B%0A%09%09%7D%0A%09%09this.now%20%3D%20%28%20this.end%20-%20this.start%20%29%20%2A%20eased%20%2B%20this.start%3B%0A%0A%09%09if%20%28%20this.options.step%20%29%20%7B%0A%09%09%09this.options.step.call%28%20this.elem%2C%20this.now%2C%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20hooks.set%20%29%20%7B%0A%09%09%09hooks.set%28%20this%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09Tween.propHooks._default.set%28%20this%20%29%3B%0A%09%09%7D%0A%09%09return%20this%3B%0A%09%7D%0A%7D%3B%0A%0ATween.prototype.init.prototype%20%3D%20Tween.prototype%3B%0A%0ATween.propHooks%20%3D%20%7B%0A%09_default%3A%20%7B%0A%09%09get%3A%20function%28%20tween%20%29%20%7B%0A%09%09%09var%20result%3B%0A%0A%09%09%09//%20Use%20a%20property%20on%20the%20element%20directly%20when%20it%20is%20not%20a%20DOM%20element%2C%0A%09%09%09//%20or%20when%20there%20is%20no%20matching%20style%20property%20that%20exists.%0A%09%09%09if%20%28%20tween.elem.nodeType%20%21%3D%3D%201%20%7C%7C%0A%09%09%09%09tween.elem%5B%20tween.prop%20%5D%20%21%3D%20null%20%26%26%20tween.elem.style%5B%20tween.prop%20%5D%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09return%20tween.elem%5B%20tween.prop%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Passing%20an%20empty%20string%20as%20a%203rd%20parameter%20to%20.css%20will%20automatically%0A%09%09%09//%20attempt%20a%20parseFloat%20and%20fallback%20to%20a%20string%20if%20the%20parse%20fails.%0A%09%09%09//%20Simple%20values%20such%20as%20%2210px%22%20are%20parsed%20to%20Float%3B%0A%09%09%09//%20complex%20values%20such%20as%20%22rotate%281rad%29%22%20are%20returned%20as-is.%0A%09%09%09result%20%3D%20jQuery.css%28%20tween.elem%2C%20tween.prop%2C%20%22%22%20%29%3B%0A%0A%09%09%09//%20Empty%20strings%2C%20null%2C%20undefined%20and%20%22auto%22%20are%20converted%20to%200.%0A%09%09%09return%20%21result%20%7C%7C%20result%20%3D%3D%3D%20%22auto%22%20%3F%200%20%3A%20result%3B%0A%09%09%7D%2C%0A%09%09set%3A%20function%28%20tween%20%29%20%7B%0A%0A%09%09%09//%20Use%20step%20hook%20for%20back%20compat.%0A%09%09%09//%20Use%20cssHook%20if%20its%20there.%0A%09%09%09//%20Use%20.style%20if%20available%20and%20use%20plain%20properties%20where%20available.%0A%09%09%09if%20%28%20jQuery.fx.step%5B%20tween.prop%20%5D%20%29%20%7B%0A%09%09%09%09jQuery.fx.step%5B%20tween.prop%20%5D%28%20tween%20%29%3B%0A%09%09%09%7D%20else%20if%20%28%20tween.elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%0A%09%09%09%09%09jQuery.cssHooks%5B%20tween.prop%20%5D%20%7C%7C%0A%09%09%09%09%09tween.elem.style%5B%20finalPropName%28%20tween.prop%20%29%20%5D%20%21%3D%20null%20%29%20%29%20%7B%0A%09%09%09%09jQuery.style%28%20tween.elem%2C%20tween.prop%2C%20tween.now%20%2B%20tween.unit%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09tween.elem%5B%20tween.prop%20%5D%20%3D%20tween.now%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0A//%20Panic%20based%20approach%20to%20setting%20things%20on%20disconnected%20nodes%0ATween.propHooks.scrollTop%20%3D%20Tween.propHooks.scrollLeft%20%3D%20%7B%0A%09set%3A%20function%28%20tween%20%29%20%7B%0A%09%09if%20%28%20tween.elem.nodeType%20%26%26%20tween.elem.parentNode%20%29%20%7B%0A%09%09%09tween.elem%5B%20tween.prop%20%5D%20%3D%20tween.now%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AjQuery.easing%20%3D%20%7B%0A%09linear%3A%20function%28%20p%20%29%20%7B%0A%09%09return%20p%3B%0A%09%7D%2C%0A%09swing%3A%20function%28%20p%20%29%20%7B%0A%09%09return%200.5%20-%20Math.cos%28%20p%20%2A%20Math.PI%20%29%20/%202%3B%0A%09%7D%2C%0A%09_default%3A%20%22swing%22%0A%7D%3B%0A%0AjQuery.fx%20%3D%20Tween.prototype.init%3B%0A%0A//%20Back%20compat%20%3C1.8%20extension%20point%0AjQuery.fx.step%20%3D%20%7B%7D%3B%0A%0A%0A%0A%0Avar%0A%09fxNow%2C%20inProgress%2C%0A%09rfxtypes%20%3D%20/%5E%28%3F%3Atoggle%7Cshow%7Chide%29%24/%2C%0A%09rrun%20%3D%20/queueHooks%24/%3B%0A%0Afunction%20schedule%28%29%20%7B%0A%09if%20%28%20inProgress%20%29%20%7B%0A%09%09if%20%28%20document.hidden%20%3D%3D%3D%20false%20%26%26%20window.requestAnimationFrame%20%29%20%7B%0A%09%09%09window.requestAnimationFrame%28%20schedule%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09window.setTimeout%28%20schedule%2C%20jQuery.fx.interval%20%29%3B%0A%09%09%7D%0A%0A%09%09jQuery.fx.tick%28%29%3B%0A%09%7D%0A%7D%0A%0A//%20Animations%20created%20synchronously%20will%20run%20synchronously%0Afunction%20createFxNow%28%29%20%7B%0A%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09fxNow%20%3D%20undefined%3B%0A%09%7D%20%29%3B%0A%09return%20%28%20fxNow%20%3D%20Date.now%28%29%20%29%3B%0A%7D%0A%0A//%20Generate%20parameters%20to%20create%20a%20standard%20animation%0Afunction%20genFx%28%20type%2C%20includeWidth%20%29%20%7B%0A%09var%20which%2C%0A%09%09i%20%3D%200%2C%0A%09%09attrs%20%3D%20%7B%20height%3A%20type%20%7D%3B%0A%0A%09//%20If%20we%20include%20width%2C%20step%20value%20is%201%20to%20do%20all%20cssExpand%20values%2C%0A%09//%20otherwise%20step%20value%20is%202%20to%20skip%20over%20Left%20and%20Right%0A%09includeWidth%20%3D%20includeWidth%20%3F%201%20%3A%200%3B%0A%09for%20%28%20%3B%20i%20%3C%204%3B%20i%20%2B%3D%202%20-%20includeWidth%20%29%20%7B%0A%09%09which%20%3D%20cssExpand%5B%20i%20%5D%3B%0A%09%09attrs%5B%20%22margin%22%20%2B%20which%20%5D%20%3D%20attrs%5B%20%22padding%22%20%2B%20which%20%5D%20%3D%20type%3B%0A%09%7D%0A%0A%09if%20%28%20includeWidth%20%29%20%7B%0A%09%09attrs.opacity%20%3D%20attrs.width%20%3D%20type%3B%0A%09%7D%0A%0A%09return%20attrs%3B%0A%7D%0A%0Afunction%20createTween%28%20value%2C%20prop%2C%20animation%20%29%20%7B%0A%09var%20tween%2C%0A%09%09collection%20%3D%20%28%20Animation.tweeners%5B%20prop%20%5D%20%7C%7C%20%5B%5D%20%29.concat%28%20Animation.tweeners%5B%20%22%2A%22%20%5D%20%29%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20collection.length%3B%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20tween%20%3D%20collection%5B%20index%20%5D.call%28%20animation%2C%20prop%2C%20value%20%29%20%29%20%29%20%7B%0A%0A%09%09%09//%20We%27re%20done%20with%20this%20property%0A%09%09%09return%20tween%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20defaultPrefilter%28%20elem%2C%20props%2C%20opts%20%29%20%7B%0A%09var%20prop%2C%20value%2C%20toggle%2C%20hooks%2C%20oldfire%2C%20propTween%2C%20restoreDisplay%2C%20display%2C%0A%09%09isBox%20%3D%20%22width%22%20in%20props%20%7C%7C%20%22height%22%20in%20props%2C%0A%09%09anim%20%3D%20this%2C%0A%09%09orig%20%3D%20%7B%7D%2C%0A%09%09style%20%3D%20elem.style%2C%0A%09%09hidden%20%3D%20elem.nodeType%20%26%26%20isHiddenWithinTree%28%20elem%20%29%2C%0A%09%09dataShow%20%3D%20dataPriv.get%28%20elem%2C%20%22fxshow%22%20%29%3B%0A%0A%09//%20Queue-skipping%20animations%20hijack%20the%20fx%20hooks%0A%09if%20%28%20%21opts.queue%20%29%20%7B%0A%09%09hooks%20%3D%20jQuery._queueHooks%28%20elem%2C%20%22fx%22%20%29%3B%0A%09%09if%20%28%20hooks.unqueued%20%3D%3D%20null%20%29%20%7B%0A%09%09%09hooks.unqueued%20%3D%200%3B%0A%09%09%09oldfire%20%3D%20hooks.empty.fire%3B%0A%09%09%09hooks.empty.fire%20%3D%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20%21hooks.unqueued%20%29%20%7B%0A%09%09%09%09%09oldfire%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%09%09%7D%0A%09%09hooks.unqueued%2B%2B%3B%0A%0A%09%09anim.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Ensure%20the%20complete%20handler%20is%20called%20before%20this%20completes%0A%09%09%09anim.always%28%20function%28%29%20%7B%0A%09%09%09%09hooks.unqueued--%3B%0A%09%09%09%09if%20%28%20%21jQuery.queue%28%20elem%2C%20%22fx%22%20%29.length%20%29%20%7B%0A%09%09%09%09%09hooks.empty.fire%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Detect%20show/hide%20animations%0A%09for%20%28%20prop%20in%20props%20%29%20%7B%0A%09%09value%20%3D%20props%5B%20prop%20%5D%3B%0A%09%09if%20%28%20rfxtypes.test%28%20value%20%29%20%29%20%7B%0A%09%09%09delete%20props%5B%20prop%20%5D%3B%0A%09%09%09toggle%20%3D%20toggle%20%7C%7C%20value%20%3D%3D%3D%20%22toggle%22%3B%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20%28%20hidden%20%3F%20%22hide%22%20%3A%20%22show%22%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Pretend%20to%20be%20hidden%20if%20this%20is%20a%20%22show%22%20and%0A%09%09%09%09//%20there%20is%20still%20data%20from%20a%20stopped%20show/hide%0A%09%09%09%09if%20%28%20value%20%3D%3D%3D%20%22show%22%20%26%26%20dataShow%20%26%26%20dataShow%5B%20prop%20%5D%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09hidden%20%3D%20true%3B%0A%0A%09%09%09%09//%20Ignore%20all%20other%20no-op%20show/hide%20data%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09continue%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09orig%5B%20prop%20%5D%20%3D%20dataShow%20%26%26%20dataShow%5B%20prop%20%5D%20%7C%7C%20jQuery.style%28%20elem%2C%20prop%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Bail%20out%20if%20this%20is%20a%20no-op%20like%20.hide%28%29.hide%28%29%0A%09propTween%20%3D%20%21jQuery.isEmptyObject%28%20props%20%29%3B%0A%09if%20%28%20%21propTween%20%26%26%20jQuery.isEmptyObject%28%20orig%20%29%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Restrict%20%22overflow%22%20and%20%22display%22%20styles%20during%20box%20animations%0A%09if%20%28%20isBox%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2C%20Edge%2012%20-%2015%0A%09%09//%20Record%20all%203%20overflow%20attributes%20because%20IE%20does%20not%20infer%20the%20shorthand%0A%09%09//%20from%20identically-valued%20overflowX%20and%20overflowY%20and%20Edge%20just%20mirrors%0A%09%09//%20the%20overflowX%20value%20there.%0A%09%09opts.overflow%20%3D%20%5B%20style.overflow%2C%20style.overflowX%2C%20style.overflowY%20%5D%3B%0A%0A%09%09//%20Identify%20a%20display%20type%2C%20preferring%20old%20show/hide%20data%20over%20the%20CSS%20cascade%0A%09%09restoreDisplay%20%3D%20dataShow%20%26%26%20dataShow.display%3B%0A%09%09if%20%28%20restoreDisplay%20%3D%3D%20null%20%29%20%7B%0A%09%09%09restoreDisplay%20%3D%20dataPriv.get%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09%7D%0A%09%09display%20%3D%20jQuery.css%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09if%20%28%20restoreDisplay%20%29%20%7B%0A%09%09%09%09display%20%3D%20restoreDisplay%3B%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Get%20nonempty%20value%28s%29%20by%20temporarily%20forcing%20visibility%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%2C%20true%20%29%3B%0A%09%09%09%09restoreDisplay%20%3D%20elem.style.display%20%7C%7C%20restoreDisplay%3B%0A%09%09%09%09display%20%3D%20jQuery.css%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Animate%20inline%20elements%20as%20inline-block%0A%09%09if%20%28%20display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline-block%22%20%26%26%20restoreDisplay%20%21%3D%20null%20%29%20%7B%0A%09%09%09if%20%28%20jQuery.css%28%20elem%2C%20%22float%22%20%29%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%0A%09%09%09%09//%20Restore%20the%20original%20display%20value%20at%20the%20end%20of%20pure%20show/hide%20animations%0A%09%09%09%09if%20%28%20%21propTween%20%29%20%7B%0A%09%09%09%09%09anim.done%28%20function%28%29%20%7B%0A%09%09%09%09%09%09style.display%20%3D%20restoreDisplay%3B%0A%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09if%20%28%20restoreDisplay%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09display%20%3D%20style.display%3B%0A%09%09%09%09%09%09restoreDisplay%20%3D%20display%20%3D%3D%3D%20%22none%22%20%3F%20%22%22%20%3A%20display%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09style.display%20%3D%20%22inline-block%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20opts.overflow%20%29%20%7B%0A%09%09style.overflow%20%3D%20%22hidden%22%3B%0A%09%09anim.always%28%20function%28%29%20%7B%0A%09%09%09style.overflow%20%3D%20opts.overflow%5B%200%20%5D%3B%0A%09%09%09style.overflowX%20%3D%20opts.overflow%5B%201%20%5D%3B%0A%09%09%09style.overflowY%20%3D%20opts.overflow%5B%202%20%5D%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Implement%20show/hide%20animations%0A%09propTween%20%3D%20false%3B%0A%09for%20%28%20prop%20in%20orig%20%29%20%7B%0A%0A%09%09//%20General%20show/hide%20setup%20for%20this%20element%20animation%0A%09%09if%20%28%20%21propTween%20%29%20%7B%0A%09%09%09if%20%28%20dataShow%20%29%20%7B%0A%09%09%09%09if%20%28%20%22hidden%22%20in%20dataShow%20%29%20%7B%0A%09%09%09%09%09hidden%20%3D%20dataShow.hidden%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09dataShow%20%3D%20dataPriv.access%28%20elem%2C%20%22fxshow%22%2C%20%7B%20display%3A%20restoreDisplay%20%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Store%20hidden/visible%20for%20toggle%20so%20%60.stop%28%29.toggle%28%29%60%20%22reverses%22%0A%09%09%09if%20%28%20toggle%20%29%20%7B%0A%09%09%09%09dataShow.hidden%20%3D%20%21hidden%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Show%20elements%20before%20animating%20them%0A%09%09%09if%20%28%20hidden%20%29%20%7B%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%2C%20true%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09/%2A%20eslint-disable%20no-loop-func%20%2A/%0A%0A%09%09%09anim.done%28%20function%28%29%20%7B%0A%0A%09%09%09/%2A%20eslint-enable%20no-loop-func%20%2A/%0A%0A%09%09%09%09//%20The%20final%20step%20of%20a%20%22hide%22%20animation%20is%20actually%20hiding%20the%20element%0A%09%09%09%09if%20%28%20%21hidden%20%29%20%7B%0A%09%09%09%09%09showHide%28%20%5B%20elem%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09dataPriv.remove%28%20elem%2C%20%22fxshow%22%20%29%3B%0A%09%09%09%09for%20%28%20prop%20in%20orig%20%29%20%7B%0A%09%09%09%09%09jQuery.style%28%20elem%2C%20prop%2C%20orig%5B%20prop%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Per-property%20setup%0A%09%09propTween%20%3D%20createTween%28%20hidden%20%3F%20dataShow%5B%20prop%20%5D%20%3A%200%2C%20prop%2C%20anim%20%29%3B%0A%09%09if%20%28%20%21%28%20prop%20in%20dataShow%20%29%20%29%20%7B%0A%09%09%09dataShow%5B%20prop%20%5D%20%3D%20propTween.start%3B%0A%09%09%09if%20%28%20hidden%20%29%20%7B%0A%09%09%09%09propTween.end%20%3D%20propTween.start%3B%0A%09%09%09%09propTween.start%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20propFilter%28%20props%2C%20specialEasing%20%29%20%7B%0A%09var%20index%2C%20name%2C%20easing%2C%20value%2C%20hooks%3B%0A%0A%09//%20camelCase%2C%20specialEasing%20and%20expand%20cssHook%20pass%0A%09for%20%28%20index%20in%20props%20%29%20%7B%0A%09%09name%20%3D%20camelCase%28%20index%20%29%3B%0A%09%09easing%20%3D%20specialEasing%5B%20name%20%5D%3B%0A%09%09value%20%3D%20props%5B%20index%20%5D%3B%0A%09%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09%09easing%20%3D%20value%5B%201%20%5D%3B%0A%09%09%09value%20%3D%20props%5B%20index%20%5D%20%3D%20value%5B%200%20%5D%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20index%20%21%3D%3D%20name%20%29%20%7B%0A%09%09%09props%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09delete%20props%5B%20index%20%5D%3B%0A%09%09%7D%0A%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%3B%0A%09%09if%20%28%20hooks%20%26%26%20%22expand%22%20in%20hooks%20%29%20%7B%0A%09%09%09value%20%3D%20hooks.expand%28%20value%20%29%3B%0A%09%09%09delete%20props%5B%20name%20%5D%3B%0A%0A%09%09%09//%20Not%20quite%20%24.extend%2C%20this%20won%27t%20overwrite%20existing%20keys.%0A%09%09%09//%20Reusing%20%27index%27%20because%20we%20have%20the%20correct%20%22name%22%0A%09%09%09for%20%28%20index%20in%20value%20%29%20%7B%0A%09%09%09%09if%20%28%20%21%28%20index%20in%20props%20%29%20%29%20%7B%0A%09%09%09%09%09props%5B%20index%20%5D%20%3D%20value%5B%20index%20%5D%3B%0A%09%09%09%09%09specialEasing%5B%20index%20%5D%20%3D%20easing%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09specialEasing%5B%20name%20%5D%20%3D%20easing%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20Animation%28%20elem%2C%20properties%2C%20options%20%29%20%7B%0A%09var%20result%2C%0A%09%09stopped%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20Animation.prefilters.length%2C%0A%09%09deferred%20%3D%20jQuery.Deferred%28%29.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Don%27t%20match%20elem%20in%20the%20%3Aanimated%20selector%0A%09%09%09delete%20tick.elem%3B%0A%09%09%7D%20%29%2C%0A%09%09tick%20%3D%20function%28%29%20%7B%0A%09%09%09if%20%28%20stopped%20%29%20%7B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%0A%09%09%09var%20currentTime%20%3D%20fxNow%20%7C%7C%20createFxNow%28%29%2C%0A%09%09%09%09remaining%20%3D%20Math.max%28%200%2C%20animation.startTime%20%2B%20animation.duration%20-%20currentTime%20%29%2C%0A%0A%09%09%09%09//%20Support%3A%20Android%202.3%20only%0A%09%09%09%09//%20Archaic%20crash%20bug%20won%27t%20allow%20us%20to%20use%20%601%20-%20%28%200.5%20%7C%7C%200%20%29%60%20%28%2312497%29%0A%09%09%09%09temp%20%3D%20remaining%20/%20animation.duration%20%7C%7C%200%2C%0A%09%09%09%09percent%20%3D%201%20-%20temp%2C%0A%09%09%09%09index%20%3D%200%2C%0A%09%09%09%09length%20%3D%20animation.tweens.length%3B%0A%0A%09%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09animation.tweens%5B%20index%20%5D.run%28%20percent%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%20percent%2C%20remaining%20%5D%20%29%3B%0A%0A%09%09%09//%20If%20there%27s%20more%20to%20do%2C%20yield%0A%09%09%09if%20%28%20percent%20%3C%201%20%26%26%20length%20%29%20%7B%0A%09%09%09%09return%20remaining%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20this%20was%20an%20empty%20animation%2C%20synthesize%20a%20final%20progress%20notification%0A%09%09%09if%20%28%20%21length%20%29%20%7B%0A%09%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%201%2C%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Resolve%20the%20animation%20and%20report%20its%20conclusion%0A%09%09%09deferred.resolveWith%28%20elem%2C%20%5B%20animation%20%5D%20%29%3B%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09animation%20%3D%20deferred.promise%28%20%7B%0A%09%09%09elem%3A%20elem%2C%0A%09%09%09props%3A%20jQuery.extend%28%20%7B%7D%2C%20properties%20%29%2C%0A%09%09%09opts%3A%20jQuery.extend%28%20true%2C%20%7B%0A%09%09%09%09specialEasing%3A%20%7B%7D%2C%0A%09%09%09%09easing%3A%20jQuery.easing._default%0A%09%09%09%7D%2C%20options%20%29%2C%0A%09%09%09originalProperties%3A%20properties%2C%0A%09%09%09originalOptions%3A%20options%2C%0A%09%09%09startTime%3A%20fxNow%20%7C%7C%20createFxNow%28%29%2C%0A%09%09%09duration%3A%20options.duration%2C%0A%09%09%09tweens%3A%20%5B%5D%2C%0A%09%09%09createTween%3A%20function%28%20prop%2C%20end%20%29%20%7B%0A%09%09%09%09var%20tween%20%3D%20jQuery.Tween%28%20elem%2C%20animation.opts%2C%20prop%2C%20end%2C%0A%09%09%09%09%09%09animation.opts.specialEasing%5B%20prop%20%5D%20%7C%7C%20animation.opts.easing%20%29%3B%0A%09%09%09%09animation.tweens.push%28%20tween%20%29%3B%0A%09%09%09%09return%20tween%3B%0A%09%09%09%7D%2C%0A%09%09%09stop%3A%20function%28%20gotoEnd%20%29%20%7B%0A%09%09%09%09var%20index%20%3D%200%2C%0A%0A%09%09%09%09%09//%20If%20we%20are%20going%20to%20the%20end%2C%20we%20want%20to%20run%20all%20the%20tweens%0A%09%09%09%09%09//%20otherwise%20we%20skip%20this%20part%0A%09%09%09%09%09length%20%3D%20gotoEnd%20%3F%20animation.tweens.length%20%3A%200%3B%0A%09%09%09%09if%20%28%20stopped%20%29%20%7B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%09%09%09%09stopped%20%3D%20true%3B%0A%09%09%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09%09animation.tweens%5B%20index%20%5D.run%28%201%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Resolve%20when%20we%20played%20the%20last%20frame%3B%20otherwise%2C%20reject%0A%09%09%09%09if%20%28%20gotoEnd%20%29%20%7B%0A%09%09%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%201%2C%200%20%5D%20%29%3B%0A%09%09%09%09%09deferred.resolveWith%28%20elem%2C%20%5B%20animation%2C%20gotoEnd%20%5D%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09deferred.rejectWith%28%20elem%2C%20%5B%20animation%2C%20gotoEnd%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%2C%0A%09%09props%20%3D%20animation.props%3B%0A%0A%09propFilter%28%20props%2C%20animation.opts.specialEasing%20%29%3B%0A%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09result%20%3D%20Animation.prefilters%5B%20index%20%5D.call%28%20animation%2C%20elem%2C%20props%2C%20animation.opts%20%29%3B%0A%09%09if%20%28%20result%20%29%20%7B%0A%09%09%09if%20%28%20isFunction%28%20result.stop%20%29%20%29%20%7B%0A%09%09%09%09jQuery._queueHooks%28%20animation.elem%2C%20animation.opts.queue%20%29.stop%20%3D%0A%09%09%09%09%09result.stop.bind%28%20result%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20result%3B%0A%09%09%7D%0A%09%7D%0A%0A%09jQuery.map%28%20props%2C%20createTween%2C%20animation%20%29%3B%0A%0A%09if%20%28%20isFunction%28%20animation.opts.start%20%29%20%29%20%7B%0A%09%09animation.opts.start.call%28%20elem%2C%20animation%20%29%3B%0A%09%7D%0A%0A%09//%20Attach%20callbacks%20from%20options%0A%09animation%0A%09%09.progress%28%20animation.opts.progress%20%29%0A%09%09.done%28%20animation.opts.done%2C%20animation.opts.complete%20%29%0A%09%09.fail%28%20animation.opts.fail%20%29%0A%09%09.always%28%20animation.opts.always%20%29%3B%0A%0A%09jQuery.fx.timer%28%0A%09%09jQuery.extend%28%20tick%2C%20%7B%0A%09%09%09elem%3A%20elem%2C%0A%09%09%09anim%3A%20animation%2C%0A%09%09%09queue%3A%20animation.opts.queue%0A%09%09%7D%20%29%0A%09%29%3B%0A%0A%09return%20animation%3B%0A%7D%0A%0AjQuery.Animation%20%3D%20jQuery.extend%28%20Animation%2C%20%7B%0A%0A%09tweeners%3A%20%7B%0A%09%09%22%2A%22%3A%20%5B%20function%28%20prop%2C%20value%20%29%20%7B%0A%09%09%09var%20tween%20%3D%20this.createTween%28%20prop%2C%20value%20%29%3B%0A%09%09%09adjustCSS%28%20tween.elem%2C%20prop%2C%20rcssNum.exec%28%20value%20%29%2C%20tween%20%29%3B%0A%09%09%09return%20tween%3B%0A%09%09%7D%20%5D%0A%09%7D%2C%0A%0A%09tweener%3A%20function%28%20props%2C%20callback%20%29%20%7B%0A%09%09if%20%28%20isFunction%28%20props%20%29%20%29%20%7B%0A%09%09%09callback%20%3D%20props%3B%0A%09%09%09props%20%3D%20%5B%20%22%2A%22%20%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09props%20%3D%20props.match%28%20rnothtmlwhite%20%29%3B%0A%09%09%7D%0A%0A%09%09var%20prop%2C%0A%09%09%09index%20%3D%200%2C%0A%09%09%09length%20%3D%20props.length%3B%0A%0A%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09prop%20%3D%20props%5B%20index%20%5D%3B%0A%09%09%09Animation.tweeners%5B%20prop%20%5D%20%3D%20Animation.tweeners%5B%20prop%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09Animation.tweeners%5B%20prop%20%5D.unshift%28%20callback%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09prefilters%3A%20%5B%20defaultPrefilter%20%5D%2C%0A%0A%09prefilter%3A%20function%28%20callback%2C%20prepend%20%29%20%7B%0A%09%09if%20%28%20prepend%20%29%20%7B%0A%09%09%09Animation.prefilters.unshift%28%20callback%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09Animation.prefilters.push%28%20callback%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.speed%20%3D%20function%28%20speed%2C%20easing%2C%20fn%20%29%20%7B%0A%09var%20opt%20%3D%20speed%20%26%26%20typeof%20speed%20%3D%3D%3D%20%22object%22%20%3F%20jQuery.extend%28%20%7B%7D%2C%20speed%20%29%20%3A%20%7B%0A%09%09complete%3A%20fn%20%7C%7C%20%21fn%20%26%26%20easing%20%7C%7C%0A%09%09%09isFunction%28%20speed%20%29%20%26%26%20speed%2C%0A%09%09duration%3A%20speed%2C%0A%09%09easing%3A%20fn%20%26%26%20easing%20%7C%7C%20easing%20%26%26%20%21isFunction%28%20easing%20%29%20%26%26%20easing%0A%09%7D%3B%0A%0A%09//%20Go%20to%20the%20end%20state%20if%20fx%20are%20off%0A%09if%20%28%20jQuery.fx.off%20%29%20%7B%0A%09%09opt.duration%20%3D%200%3B%0A%0A%09%7D%20else%20%7B%0A%09%09if%20%28%20typeof%20opt.duration%20%21%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09if%20%28%20opt.duration%20in%20jQuery.fx.speeds%20%29%20%7B%0A%09%09%09%09opt.duration%20%3D%20jQuery.fx.speeds%5B%20opt.duration%20%5D%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09opt.duration%20%3D%20jQuery.fx.speeds._default%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Normalize%20opt.queue%20-%20true/undefined/null%20-%3E%20%22fx%22%0A%09if%20%28%20opt.queue%20%3D%3D%20null%20%7C%7C%20opt.queue%20%3D%3D%3D%20true%20%29%20%7B%0A%09%09opt.queue%20%3D%20%22fx%22%3B%0A%09%7D%0A%0A%09//%20Queueing%0A%09opt.old%20%3D%20opt.complete%3B%0A%0A%09opt.complete%20%3D%20function%28%29%20%7B%0A%09%09if%20%28%20isFunction%28%20opt.old%20%29%20%29%20%7B%0A%09%09%09opt.old.call%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20opt.queue%20%29%20%7B%0A%09%09%09jQuery.dequeue%28%20this%2C%20opt.queue%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09return%20opt%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09fadeTo%3A%20function%28%20speed%2C%20to%2C%20easing%2C%20callback%20%29%20%7B%0A%0A%09%09//%20Show%20any%20hidden%20elements%20after%20setting%20opacity%20to%200%0A%09%09return%20this.filter%28%20isHiddenWithinTree%20%29.css%28%20%22opacity%22%2C%200%20%29.show%28%29%0A%0A%09%09%09//%20Animate%20to%20the%20value%20specified%0A%09%09%09.end%28%29.animate%28%20%7B%20opacity%3A%20to%20%7D%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%2C%0A%09animate%3A%20function%28%20prop%2C%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09var%20empty%20%3D%20jQuery.isEmptyObject%28%20prop%20%29%2C%0A%09%09%09optall%20%3D%20jQuery.speed%28%20speed%2C%20easing%2C%20callback%20%29%2C%0A%09%09%09doAnimation%20%3D%20function%28%29%20%7B%0A%0A%09%09%09%09//%20Operate%20on%20a%20copy%20of%20prop%20so%20per-property%20easing%20won%27t%20be%20lost%0A%09%09%09%09var%20anim%20%3D%20Animation%28%20this%2C%20jQuery.extend%28%20%7B%7D%2C%20prop%20%29%2C%20optall%20%29%3B%0A%0A%09%09%09%09//%20Empty%20animations%2C%20or%20finishing%20resolves%20immediately%0A%09%09%09%09if%20%28%20empty%20%7C%7C%20dataPriv.get%28%20this%2C%20%22finish%22%20%29%20%29%20%7B%0A%09%09%09%09%09anim.stop%28%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%09%09%09doAnimation.finish%20%3D%20doAnimation%3B%0A%0A%09%09return%20empty%20%7C%7C%20optall.queue%20%3D%3D%3D%20false%20%3F%0A%09%09%09this.each%28%20doAnimation%20%29%20%3A%0A%09%09%09this.queue%28%20optall.queue%2C%20doAnimation%20%29%3B%0A%09%7D%2C%0A%09stop%3A%20function%28%20type%2C%20clearQueue%2C%20gotoEnd%20%29%20%7B%0A%09%09var%20stopQueue%20%3D%20function%28%20hooks%20%29%20%7B%0A%09%09%09var%20stop%20%3D%20hooks.stop%3B%0A%09%09%09delete%20hooks.stop%3B%0A%09%09%09stop%28%20gotoEnd%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09gotoEnd%20%3D%20clearQueue%3B%0A%09%09%09clearQueue%20%3D%20type%3B%0A%09%09%09type%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09if%20%28%20clearQueue%20%29%20%7B%0A%09%09%09this.queue%28%20type%20%7C%7C%20%22fx%22%2C%20%5B%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20dequeue%20%3D%20true%2C%0A%09%09%09%09index%20%3D%20type%20%21%3D%20null%20%26%26%20type%20%2B%20%22queueHooks%22%2C%0A%09%09%09%09timers%20%3D%20jQuery.timers%2C%0A%09%09%09%09data%20%3D%20dataPriv.get%28%20this%20%29%3B%0A%0A%09%09%09if%20%28%20index%20%29%20%7B%0A%09%09%09%09if%20%28%20data%5B%20index%20%5D%20%26%26%20data%5B%20index%20%5D.stop%20%29%20%7B%0A%09%09%09%09%09stopQueue%28%20data%5B%20index%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09for%20%28%20index%20in%20data%20%29%20%7B%0A%09%09%09%09%09if%20%28%20data%5B%20index%20%5D%20%26%26%20data%5B%20index%20%5D.stop%20%26%26%20rrun.test%28%20index%20%29%20%29%20%7B%0A%09%09%09%09%09%09stopQueue%28%20data%5B%20index%20%5D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09for%20%28%20index%20%3D%20timers.length%3B%20index--%3B%20%29%20%7B%0A%09%09%09%09if%20%28%20timers%5B%20index%20%5D.elem%20%3D%3D%3D%20this%20%26%26%0A%09%09%09%09%09%28%20type%20%3D%3D%20null%20%7C%7C%20timers%5B%20index%20%5D.queue%20%3D%3D%3D%20type%20%29%20%29%20%7B%0A%0A%09%09%09%09%09timers%5B%20index%20%5D.anim.stop%28%20gotoEnd%20%29%3B%0A%09%09%09%09%09dequeue%20%3D%20false%3B%0A%09%09%09%09%09timers.splice%28%20index%2C%201%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Start%20the%20next%20in%20the%20queue%20if%20the%20last%20step%20wasn%27t%20forced.%0A%09%09%09//%20Timers%20currently%20will%20call%20their%20complete%20callbacks%2C%20which%0A%09%09%09//%20will%20dequeue%20but%20only%20if%20they%20were%20gotoEnd.%0A%09%09%09if%20%28%20dequeue%20%7C%7C%20%21gotoEnd%20%29%20%7B%0A%09%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09finish%3A%20function%28%20type%20%29%20%7B%0A%09%09if%20%28%20type%20%21%3D%3D%20false%20%29%20%7B%0A%09%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%09%09%7D%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20index%2C%0A%09%09%09%09data%20%3D%20dataPriv.get%28%20this%20%29%2C%0A%09%09%09%09queue%20%3D%20data%5B%20type%20%2B%20%22queue%22%20%5D%2C%0A%09%09%09%09hooks%20%3D%20data%5B%20type%20%2B%20%22queueHooks%22%20%5D%2C%0A%09%09%09%09timers%20%3D%20jQuery.timers%2C%0A%09%09%09%09length%20%3D%20queue%20%3F%20queue.length%20%3A%200%3B%0A%0A%09%09%09//%20Enable%20finishing%20flag%20on%20private%20data%0A%09%09%09data.finish%20%3D%20true%3B%0A%0A%09%09%09//%20Empty%20the%20queue%20first%0A%09%09%09jQuery.queue%28%20this%2C%20type%2C%20%5B%5D%20%29%3B%0A%0A%09%09%09if%20%28%20hooks%20%26%26%20hooks.stop%20%29%20%7B%0A%09%09%09%09hooks.stop.call%28%20this%2C%20true%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Look%20for%20any%20active%20animations%2C%20and%20finish%20them%0A%09%09%09for%20%28%20index%20%3D%20timers.length%3B%20index--%3B%20%29%20%7B%0A%09%09%09%09if%20%28%20timers%5B%20index%20%5D.elem%20%3D%3D%3D%20this%20%26%26%20timers%5B%20index%20%5D.queue%20%3D%3D%3D%20type%20%29%20%7B%0A%09%09%09%09%09timers%5B%20index%20%5D.anim.stop%28%20true%20%29%3B%0A%09%09%09%09%09timers.splice%28%20index%2C%201%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Look%20for%20any%20animations%20in%20the%20old%20queue%20and%20finish%20them%0A%09%09%09for%20%28%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20queue%5B%20index%20%5D%20%26%26%20queue%5B%20index%20%5D.finish%20%29%20%7B%0A%09%09%09%09%09queue%5B%20index%20%5D.finish.call%28%20this%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Turn%20off%20finishing%20flag%0A%09%09%09delete%20data.finish%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22toggle%22%2C%20%22show%22%2C%20%22hide%22%20%5D%2C%20function%28%20_i%2C%20name%20%29%20%7B%0A%09var%20cssFn%20%3D%20jQuery.fn%5B%20name%20%5D%3B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09return%20speed%20%3D%3D%20null%20%7C%7C%20typeof%20speed%20%3D%3D%3D%20%22boolean%22%20%3F%0A%09%09%09cssFn.apply%28%20this%2C%20arguments%20%29%20%3A%0A%09%09%09this.animate%28%20genFx%28%20name%2C%20true%20%29%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Generate%20shortcuts%20for%20custom%20animations%0AjQuery.each%28%20%7B%0A%09slideDown%3A%20genFx%28%20%22show%22%20%29%2C%0A%09slideUp%3A%20genFx%28%20%22hide%22%20%29%2C%0A%09slideToggle%3A%20genFx%28%20%22toggle%22%20%29%2C%0A%09fadeIn%3A%20%7B%20opacity%3A%20%22show%22%20%7D%2C%0A%09fadeOut%3A%20%7B%20opacity%3A%20%22hide%22%20%7D%2C%0A%09fadeToggle%3A%20%7B%20opacity%3A%20%22toggle%22%20%7D%0A%7D%2C%20function%28%20name%2C%20props%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09return%20this.animate%28%20props%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.timers%20%3D%20%5B%5D%3B%0AjQuery.fx.tick%20%3D%20function%28%29%20%7B%0A%09var%20timer%2C%0A%09%09i%20%3D%200%2C%0A%09%09timers%20%3D%20jQuery.timers%3B%0A%0A%09fxNow%20%3D%20Date.now%28%29%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20timers.length%3B%20i%2B%2B%20%29%20%7B%0A%09%09timer%20%3D%20timers%5B%20i%20%5D%3B%0A%0A%09%09//%20Run%20the%20timer%20and%20safely%20remove%20it%20when%20done%20%28allowing%20for%20external%20removal%29%0A%09%09if%20%28%20%21timer%28%29%20%26%26%20timers%5B%20i%20%5D%20%3D%3D%3D%20timer%20%29%20%7B%0A%09%09%09timers.splice%28%20i--%2C%201%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20%21timers.length%20%29%20%7B%0A%09%09jQuery.fx.stop%28%29%3B%0A%09%7D%0A%09fxNow%20%3D%20undefined%3B%0A%7D%3B%0A%0AjQuery.fx.timer%20%3D%20function%28%20timer%20%29%20%7B%0A%09jQuery.timers.push%28%20timer%20%29%3B%0A%09jQuery.fx.start%28%29%3B%0A%7D%3B%0A%0AjQuery.fx.interval%20%3D%2013%3B%0AjQuery.fx.start%20%3D%20function%28%29%20%7B%0A%09if%20%28%20inProgress%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09inProgress%20%3D%20true%3B%0A%09schedule%28%29%3B%0A%7D%3B%0A%0AjQuery.fx.stop%20%3D%20function%28%29%20%7B%0A%09inProgress%20%3D%20null%3B%0A%7D%3B%0A%0AjQuery.fx.speeds%20%3D%20%7B%0A%09slow%3A%20600%2C%0A%09fast%3A%20200%2C%0A%0A%09//%20Default%20speed%0A%09_default%3A%20400%0A%7D%3B%0A%0A%0A//%20Based%20off%20of%20the%20plugin%20by%20Clint%20Helfers%2C%20with%20permission.%0A//%20https%3A//web.archive.org/web/20100324014747/http%3A//blindsignals.com/index.php/2009/07/jquery-delay/%0AjQuery.fn.delay%20%3D%20function%28%20time%2C%20type%20%29%20%7B%0A%09time%20%3D%20jQuery.fx%20%3F%20jQuery.fx.speeds%5B%20time%20%5D%20%7C%7C%20time%20%3A%20time%3B%0A%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09return%20this.queue%28%20type%2C%20function%28%20next%2C%20hooks%20%29%20%7B%0A%09%09var%20timeout%20%3D%20window.setTimeout%28%20next%2C%20time%20%29%3B%0A%09%09hooks.stop%20%3D%20function%28%29%20%7B%0A%09%09%09window.clearTimeout%28%20timeout%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0A%28%20function%28%29%20%7B%0A%09var%20input%20%3D%20document.createElement%28%20%22input%22%20%29%2C%0A%09%09select%20%3D%20document.createElement%28%20%22select%22%20%29%2C%0A%09%09opt%20%3D%20select.appendChild%28%20document.createElement%28%20%22option%22%20%29%20%29%3B%0A%0A%09input.type%20%3D%20%22checkbox%22%3B%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.3%20only%0A%09//%20Default%20value%20for%20a%20checkbox%20should%20be%20%22on%22%0A%09support.checkOn%20%3D%20input.value%20%21%3D%3D%20%22%22%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20Must%20access%20selectedIndex%20to%20make%20default%20options%20select%0A%09support.optSelected%20%3D%20opt.selected%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20An%20input%20loses%20its%20value%20after%20becoming%20a%20radio%0A%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09input.value%20%3D%20%22t%22%3B%0A%09input.type%20%3D%20%22radio%22%3B%0A%09support.radioValue%20%3D%20input.value%20%3D%3D%3D%20%22t%22%3B%0A%7D%20%29%28%29%3B%0A%0A%0Avar%20boolHook%2C%0A%09attrHandle%20%3D%20jQuery.expr.attrHandle%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09attr%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20jQuery.attr%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%2C%0A%0A%09removeAttr%3A%20function%28%20name%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.removeAttr%28%20this%2C%20name%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09attr%3A%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09var%20ret%2C%20hooks%2C%0A%09%09%09nType%20%3D%20elem.nodeType%3B%0A%0A%09%09//%20Don%27t%20get/set%20attributes%20on%20text%2C%20comment%20and%20attribute%20nodes%0A%09%09if%20%28%20nType%20%3D%3D%3D%203%20%7C%7C%20nType%20%3D%3D%3D%208%20%7C%7C%20nType%20%3D%3D%3D%202%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Fallback%20to%20prop%20when%20attributes%20are%20not%20supported%0A%09%09if%20%28%20typeof%20elem.getAttribute%20%3D%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09%09return%20jQuery.prop%28%20elem%2C%20name%2C%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Attribute%20hooks%20are%20determined%20by%20the%20lowercase%20version%0A%09%09//%20Grab%20necessary%20hook%20if%20one%20is%20defined%0A%09%09if%20%28%20nType%20%21%3D%3D%201%20%7C%7C%20%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%09%09%09hooks%20%3D%20jQuery.attrHooks%5B%20name.toLowerCase%28%29%20%5D%20%7C%7C%0A%09%09%09%09%28%20jQuery.expr.match.bool.test%28%20name%20%29%20%3F%20boolHook%20%3A%20undefined%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20null%20%29%20%7B%0A%09%09%09%09jQuery.removeAttr%28%20elem%2C%20name%20%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20hooks%20%26%26%20%22set%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.set%28%20elem%2C%20value%2C%20name%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09elem.setAttribute%28%20name%2C%20value%20%2B%20%22%22%20%29%3B%0A%09%09%09return%20value%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%20%28%20ret%20%3D%20hooks.get%28%20elem%2C%20name%20%29%20%29%20%21%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%0A%09%09ret%20%3D%20jQuery.find.attr%28%20elem%2C%20name%20%29%3B%0A%0A%09%09//%20Non-existent%20attributes%20return%20null%2C%20we%20normalize%20to%20undefined%0A%09%09return%20ret%20%3D%3D%20null%20%3F%20undefined%20%3A%20ret%3B%0A%09%7D%2C%0A%0A%09attrHooks%3A%20%7B%0A%09%09type%3A%20%7B%0A%09%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09%09if%20%28%20%21support.radioValue%20%26%26%20value%20%3D%3D%3D%20%22radio%22%20%26%26%0A%09%09%09%09%09nodeName%28%20elem%2C%20%22input%22%20%29%20%29%20%7B%0A%09%09%09%09%09var%20val%20%3D%20elem.value%3B%0A%09%09%09%09%09elem.setAttribute%28%20%22type%22%2C%20value%20%29%3B%0A%09%09%09%09%09if%20%28%20val%20%29%20%7B%0A%09%09%09%09%09%09elem.value%20%3D%20val%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20value%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09removeAttr%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09var%20name%2C%0A%09%09%09i%20%3D%200%2C%0A%0A%09%09%09//%20Attribute%20names%20can%20contain%20non-HTML%20whitespace%20characters%0A%09%09%09//%20https%3A//html.spec.whatwg.org/multipage/syntax.html%23attributes-2%0A%09%09%09attrNames%20%3D%20value%20%26%26%20value.match%28%20rnothtmlwhite%20%29%3B%0A%0A%09%09if%20%28%20attrNames%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09while%20%28%20%28%20name%20%3D%20attrNames%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09elem.removeAttribute%28%20name%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Hooks%20for%20boolean%20attributes%0AboolHook%20%3D%20%7B%0A%09set%3A%20function%28%20elem%2C%20value%2C%20name%20%29%20%7B%0A%09%09if%20%28%20value%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09//%20Remove%20boolean%20attributes%20when%20set%20to%20false%0A%09%09%09jQuery.removeAttr%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09elem.setAttribute%28%20name%2C%20name%20%29%3B%0A%09%09%7D%0A%09%09return%20name%3B%0A%09%7D%0A%7D%3B%0A%0AjQuery.each%28%20jQuery.expr.match.bool.source.match%28%20/%5Cw%2B/g%20%29%2C%20function%28%20_i%2C%20name%20%29%20%7B%0A%09var%20getter%20%3D%20attrHandle%5B%20name%20%5D%20%7C%7C%20jQuery.find.attr%3B%0A%0A%09attrHandle%5B%20name%20%5D%20%3D%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09var%20ret%2C%20handle%2C%0A%09%09%09lowercaseName%20%3D%20name.toLowerCase%28%29%3B%0A%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%0A%09%09%09//%20Avoid%20an%20infinite%20loop%20by%20temporarily%20removing%20this%20function%20from%20the%20getter%0A%09%09%09handle%20%3D%20attrHandle%5B%20lowercaseName%20%5D%3B%0A%09%09%09attrHandle%5B%20lowercaseName%20%5D%20%3D%20ret%3B%0A%09%09%09ret%20%3D%20getter%28%20elem%2C%20name%2C%20isXML%20%29%20%21%3D%20null%20%3F%0A%09%09%09%09lowercaseName%20%3A%0A%09%09%09%09null%3B%0A%09%09%09attrHandle%5B%20lowercaseName%20%5D%20%3D%20handle%3B%0A%09%09%7D%0A%09%09return%20ret%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20rfocusable%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Cbutton%29%24/i%2C%0A%09rclickable%20%3D%20/%5E%28%3F%3Aa%7Carea%29%24/i%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09prop%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20jQuery.prop%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%2C%0A%0A%09removeProp%3A%20function%28%20name%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09delete%20this%5B%20jQuery.propFix%5B%20name%20%5D%20%7C%7C%20name%20%5D%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09prop%3A%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09var%20ret%2C%20hooks%2C%0A%09%09%09nType%20%3D%20elem.nodeType%3B%0A%0A%09%09//%20Don%27t%20get/set%20properties%20on%20text%2C%20comment%20and%20attribute%20nodes%0A%09%09if%20%28%20nType%20%3D%3D%3D%203%20%7C%7C%20nType%20%3D%3D%3D%208%20%7C%7C%20nType%20%3D%3D%3D%202%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20nType%20%21%3D%3D%201%20%7C%7C%20%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09//%20Fix%20name%20and%20attach%20hooks%0A%09%09%09name%20%3D%20jQuery.propFix%5B%20name%20%5D%20%7C%7C%20name%3B%0A%09%09%09hooks%20%3D%20jQuery.propHooks%5B%20name%20%5D%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20hooks%20%26%26%20%22set%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.set%28%20elem%2C%20value%2C%20name%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20%28%20elem%5B%20name%20%5D%20%3D%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%20%28%20ret%20%3D%20hooks.get%28%20elem%2C%20name%20%29%20%29%20%21%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%0A%09%09return%20elem%5B%20name%20%5D%3B%0A%09%7D%2C%0A%0A%09propHooks%3A%20%7B%0A%09%09tabIndex%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09%09%09%09//%20elem.tabIndex%20doesn%27t%20always%20return%20the%0A%09%09%09%09//%20correct%20value%20when%20it%20hasn%27t%20been%20explicitly%20set%0A%09%09%09%09//%20https%3A//web.archive.org/web/20141116233347/http%3A//fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/%0A%09%09%09%09//%20Use%20proper%20attribute%20retrieval%28%2312072%29%0A%09%09%09%09var%20tabindex%20%3D%20jQuery.find.attr%28%20elem%2C%20%22tabindex%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20tabindex%20%29%20%7B%0A%09%09%09%09%09return%20parseInt%28%20tabindex%2C%2010%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09if%20%28%0A%09%09%09%09%09rfocusable.test%28%20elem.nodeName%20%29%20%7C%7C%0A%09%09%09%09%09rclickable.test%28%20elem.nodeName%20%29%20%26%26%0A%09%09%09%09%09elem.href%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09return%200%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09propFix%3A%20%7B%0A%09%09%22for%22%3A%20%22htmlFor%22%2C%0A%09%09%22class%22%3A%20%22className%22%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Support%3A%20IE%20%3C%3D11%20only%0A//%20Accessing%20the%20selectedIndex%20property%0A//%20forces%20the%20browser%20to%20respect%20setting%20selected%0A//%20on%20the%20option%0A//%20The%20getter%20ensures%20a%20default%20option%20is%20selected%0A//%20when%20in%20an%20optgroup%0A//%20eslint%20rule%20%22no-unused-expressions%22%20is%20disabled%20for%20this%20code%0A//%20since%20it%20considers%20such%20accessions%20noop%0Aif%20%28%20%21support.optSelected%20%29%20%7B%0A%09jQuery.propHooks.selected%20%3D%20%7B%0A%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09/%2A%20eslint%20no-unused-expressions%3A%20%22off%22%20%2A/%0A%0A%09%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09%09if%20%28%20parent%20%26%26%20parent.parentNode%20%29%20%7B%0A%09%09%09%09parent.parentNode.selectedIndex%3B%0A%09%09%09%7D%0A%09%09%09return%20null%3B%0A%09%09%7D%2C%0A%09%09set%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09/%2A%20eslint%20no-unused-expressions%3A%20%22off%22%20%2A/%0A%0A%09%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09%09if%20%28%20parent%20%29%20%7B%0A%09%09%09%09parent.selectedIndex%3B%0A%0A%09%09%09%09if%20%28%20parent.parentNode%20%29%20%7B%0A%09%09%09%09%09parent.parentNode.selectedIndex%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0AjQuery.each%28%20%5B%0A%09%22tabIndex%22%2C%0A%09%22readOnly%22%2C%0A%09%22maxLength%22%2C%0A%09%22cellSpacing%22%2C%0A%09%22cellPadding%22%2C%0A%09%22rowSpan%22%2C%0A%09%22colSpan%22%2C%0A%09%22useMap%22%2C%0A%09%22frameBorder%22%2C%0A%09%22contentEditable%22%0A%5D%2C%20function%28%29%20%7B%0A%09jQuery.propFix%5B%20this.toLowerCase%28%29%20%5D%20%3D%20this%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0A%09//%20Strip%20and%20collapse%20whitespace%20according%20to%20HTML%20spec%0A%09//%20https%3A//infra.spec.whatwg.org/%23strip-and-collapse-ascii-whitespace%0A%09function%20stripAndCollapse%28%20value%20%29%20%7B%0A%09%09var%20tokens%20%3D%20value.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09return%20tokens.join%28%20%22%20%22%20%29%3B%0A%09%7D%0A%0A%0Afunction%20getClass%28%20elem%20%29%20%7B%0A%09return%20elem.getAttribute%20%26%26%20elem.getAttribute%28%20%22class%22%20%29%20%7C%7C%20%22%22%3B%0A%7D%0A%0Afunction%20classesToArray%28%20value%20%29%20%7B%0A%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09return%20value%3B%0A%09%7D%0A%09if%20%28%20typeof%20value%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20value.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%09%7D%0A%09return%20%5B%5D%3B%0A%7D%0A%0AjQuery.fn.extend%28%20%7B%0A%09addClass%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20classes%2C%20elem%2C%20cur%2C%20curValue%2C%20clazz%2C%20j%2C%20finalValue%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20j%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.addClass%28%20value.call%28%20this%2C%20j%2C%20getClass%28%20this%20%29%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09classes%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20classes.length%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09curValue%20%3D%20getClass%28%20elem%20%29%3B%0A%09%09%09%09cur%20%3D%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%20%22%20%22%20%2B%20stripAndCollapse%28%20curValue%20%29%20%2B%20%22%20%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20cur%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20clazz%20%3D%20classes%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20cur.indexOf%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%20%29%20%3C%200%20%29%20%7B%0A%09%09%09%09%09%09%09cur%20%2B%3D%20clazz%20%2B%20%22%20%22%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Only%20assign%20if%20different%20to%20avoid%20unneeded%20rendering.%0A%09%09%09%09%09finalValue%20%3D%20stripAndCollapse%28%20cur%20%29%3B%0A%09%09%09%09%09if%20%28%20curValue%20%21%3D%3D%20finalValue%20%29%20%7B%0A%09%09%09%09%09%09elem.setAttribute%28%20%22class%22%2C%20finalValue%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09removeClass%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20classes%2C%20elem%2C%20cur%2C%20curValue%2C%20clazz%2C%20j%2C%20finalValue%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20j%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.removeClass%28%20value.call%28%20this%2C%20j%2C%20getClass%28%20this%20%29%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%21arguments.length%20%29%20%7B%0A%09%09%09return%20this.attr%28%20%22class%22%2C%20%22%22%20%29%3B%0A%09%09%7D%0A%0A%09%09classes%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20classes.length%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09curValue%20%3D%20getClass%28%20elem%20%29%3B%0A%0A%09%09%09%09//%20This%20expression%20is%20here%20for%20better%20compressibility%20%28see%20addClass%29%0A%09%09%09%09cur%20%3D%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%20%22%20%22%20%2B%20stripAndCollapse%28%20curValue%20%29%20%2B%20%22%20%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20cur%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20clazz%20%3D%20classes%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Remove%20%2Aall%2A%20instances%0A%09%09%09%09%09%09while%20%28%20cur.indexOf%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09%09%09cur%20%3D%20cur.replace%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%2C%20%22%20%22%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Only%20assign%20if%20different%20to%20avoid%20unneeded%20rendering.%0A%09%09%09%09%09finalValue%20%3D%20stripAndCollapse%28%20cur%20%29%3B%0A%09%09%09%09%09if%20%28%20curValue%20%21%3D%3D%20finalValue%20%29%20%7B%0A%09%09%09%09%09%09elem.setAttribute%28%20%22class%22%2C%20finalValue%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09toggleClass%3A%20function%28%20value%2C%20stateVal%20%29%20%7B%0A%09%09var%20type%20%3D%20typeof%20value%2C%0A%09%09%09isValidValue%20%3D%20type%20%3D%3D%3D%20%22string%22%20%7C%7C%20Array.isArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20typeof%20stateVal%20%3D%3D%3D%20%22boolean%22%20%26%26%20isValidValue%20%29%20%7B%0A%09%09%09return%20stateVal%20%3F%20this.addClass%28%20value%20%29%20%3A%20this.removeClass%28%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.toggleClass%28%0A%09%09%09%09%09value.call%28%20this%2C%20i%2C%20getClass%28%20this%20%29%2C%20stateVal%20%29%2C%0A%09%09%09%09%09stateVal%0A%09%09%09%09%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20className%2C%20i%2C%20self%2C%20classNames%3B%0A%0A%09%09%09if%20%28%20isValidValue%20%29%20%7B%0A%0A%09%09%09%09//%20Toggle%20individual%20class%20names%0A%09%09%09%09i%20%3D%200%3B%0A%09%09%09%09self%20%3D%20jQuery%28%20this%20%29%3B%0A%09%09%09%09classNames%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09%09%09while%20%28%20%28%20className%20%3D%20classNames%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Check%20each%20className%20given%2C%20space%20separated%20list%0A%09%09%09%09%09if%20%28%20self.hasClass%28%20className%20%29%20%29%20%7B%0A%09%09%09%09%09%09self.removeClass%28%20className%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09self.addClass%28%20className%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09//%20Toggle%20whole%20class%20name%0A%09%09%09%7D%20else%20if%20%28%20value%20%3D%3D%3D%20undefined%20%7C%7C%20type%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09%09%09className%20%3D%20getClass%28%20this%20%29%3B%0A%09%09%09%09if%20%28%20className%20%29%20%7B%0A%0A%09%09%09%09%09//%20Store%20className%20if%20set%0A%09%09%09%09%09dataPriv.set%28%20this%2C%20%22__className__%22%2C%20className%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20If%20the%20element%20has%20a%20class%20name%20or%20if%20we%27re%20passed%20%60false%60%2C%0A%09%09%09%09//%20then%20remove%20the%20whole%20classname%20%28if%20there%20was%20one%2C%20the%20above%20saved%20it%29.%0A%09%09%09%09//%20Otherwise%20bring%20back%20whatever%20was%20previously%20saved%20%28if%20anything%29%2C%0A%09%09%09%09//%20falling%20back%20to%20the%20empty%20string%20if%20nothing%20was%20stored.%0A%09%09%09%09if%20%28%20this.setAttribute%20%29%20%7B%0A%09%09%09%09%09this.setAttribute%28%20%22class%22%2C%0A%09%09%09%09%09%09className%20%7C%7C%20value%20%3D%3D%3D%20false%20%3F%0A%09%09%09%09%09%09%22%22%20%3A%0A%09%09%09%09%09%09dataPriv.get%28%20this%2C%20%22__className__%22%20%29%20%7C%7C%20%22%22%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09hasClass%3A%20function%28%20selector%20%29%20%7B%0A%09%09var%20className%2C%20elem%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09className%20%3D%20%22%20%22%20%2B%20selector%20%2B%20%22%20%22%3B%0A%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%28%20%22%20%22%20%2B%20stripAndCollapse%28%20getClass%28%20elem%20%29%20%29%20%2B%20%22%20%22%20%29.indexOf%28%20className%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20false%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20rreturn%20%3D%20/%5Cr/g%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09val%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20hooks%2C%20ret%2C%20valueIsFunction%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%3B%0A%0A%09%09if%20%28%20%21arguments.length%20%29%20%7B%0A%09%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09%09hooks%20%3D%20jQuery.valHooks%5B%20elem.type%20%5D%20%7C%7C%0A%09%09%09%09%09jQuery.valHooks%5B%20elem.nodeName.toLowerCase%28%29%20%5D%3B%0A%0A%09%09%09%09if%20%28%20hooks%20%26%26%0A%09%09%09%09%09%22get%22%20in%20hooks%20%26%26%0A%09%09%09%09%09%28%20ret%20%3D%20hooks.get%28%20elem%2C%20%22value%22%20%29%20%29%20%21%3D%3D%20undefined%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09return%20ret%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09ret%20%3D%20elem.value%3B%0A%0A%09%09%09%09//%20Handle%20most%20common%20string%20cases%0A%09%09%09%09if%20%28%20typeof%20ret%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09%09%09return%20ret.replace%28%20rreturn%2C%20%22%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Handle%20cases%20where%20value%20is%20null/undef%20or%20number%0A%09%09%09%09return%20ret%20%3D%3D%20null%20%3F%20%22%22%20%3A%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09valueIsFunction%20%3D%20isFunction%28%20value%20%29%3B%0A%0A%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09var%20val%3B%0A%0A%09%09%09if%20%28%20this.nodeType%20%21%3D%3D%201%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20valueIsFunction%20%29%20%7B%0A%09%09%09%09val%20%3D%20value.call%28%20this%2C%20i%2C%20jQuery%28%20this%20%29.val%28%29%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09val%20%3D%20value%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Treat%20null/undefined%20as%20%22%22%3B%20convert%20numbers%20to%20string%0A%09%09%09if%20%28%20val%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09val%20%3D%20%22%22%3B%0A%0A%09%09%09%7D%20else%20if%20%28%20typeof%20val%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09val%20%2B%3D%20%22%22%3B%0A%0A%09%09%09%7D%20else%20if%20%28%20Array.isArray%28%20val%20%29%20%29%20%7B%0A%09%09%09%09val%20%3D%20jQuery.map%28%20val%2C%20function%28%20value%20%29%20%7B%0A%09%09%09%09%09return%20value%20%3D%3D%20null%20%3F%20%22%22%20%3A%20value%20%2B%20%22%22%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09hooks%20%3D%20jQuery.valHooks%5B%20this.type%20%5D%20%7C%7C%20jQuery.valHooks%5B%20this.nodeName.toLowerCase%28%29%20%5D%3B%0A%0A%09%09%09//%20If%20set%20returns%20undefined%2C%20fall%20back%20to%20normal%20setting%0A%09%09%09if%20%28%20%21hooks%20%7C%7C%20%21%28%20%22set%22%20in%20hooks%20%29%20%7C%7C%20hooks.set%28%20this%2C%20val%2C%20%22value%22%20%29%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09this.value%20%3D%20val%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09valHooks%3A%20%7B%0A%09%09option%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09%09var%20val%20%3D%20jQuery.find.attr%28%20elem%2C%20%22value%22%20%29%3B%0A%09%09%09%09return%20val%20%21%3D%20null%20%3F%0A%09%09%09%09%09val%20%3A%0A%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D10%20-%2011%20only%0A%09%09%09%09%09//%20option.text%20throws%20exceptions%20%28%2314686%2C%20%2314858%29%0A%09%09%09%09%09//%20Strip%20and%20collapse%20whitespace%0A%09%09%09%09%09//%20https%3A//html.spec.whatwg.org/%23strip-and-collapse-whitespace%0A%09%09%09%09%09stripAndCollapse%28%20jQuery.text%28%20elem%20%29%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09select%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20value%2C%20option%2C%20i%2C%0A%09%09%09%09%09options%20%3D%20elem.options%2C%0A%09%09%09%09%09index%20%3D%20elem.selectedIndex%2C%0A%09%09%09%09%09one%20%3D%20elem.type%20%3D%3D%3D%20%22select-one%22%2C%0A%09%09%09%09%09values%20%3D%20one%20%3F%20null%20%3A%20%5B%5D%2C%0A%09%09%09%09%09max%20%3D%20one%20%3F%20index%20%2B%201%20%3A%20options.length%3B%0A%0A%09%09%09%09if%20%28%20index%20%3C%200%20%29%20%7B%0A%09%09%09%09%09i%20%3D%20max%3B%0A%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09i%20%3D%20one%20%3F%20index%20%3A%200%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Loop%20through%20all%20the%20selected%20options%0A%09%09%09%09for%20%28%20%3B%20i%20%3C%20max%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09option%20%3D%20options%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09//%20IE8-9%20doesn%27t%20update%20selected%20after%20form%20reset%20%28%232551%29%0A%09%09%09%09%09if%20%28%20%28%20option.selected%20%7C%7C%20i%20%3D%3D%3D%20index%20%29%20%26%26%0A%0A%09%09%09%09%09%09%09//%20Don%27t%20return%20options%20that%20are%20disabled%20or%20in%20a%20disabled%20optgroup%0A%09%09%09%09%09%09%09%21option.disabled%20%26%26%0A%09%09%09%09%09%09%09%28%20%21option.parentNode.disabled%20%7C%7C%0A%09%09%09%09%09%09%09%09%21nodeName%28%20option.parentNode%2C%20%22optgroup%22%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Get%20the%20specific%20value%20for%20the%20option%0A%09%09%09%09%09%09value%20%3D%20jQuery%28%20option%20%29.val%28%29%3B%0A%0A%09%09%09%09%09%09//%20We%20don%27t%20need%20an%20array%20for%20one%20selects%0A%09%09%09%09%09%09if%20%28%20one%20%29%20%7B%0A%09%09%09%09%09%09%09return%20value%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09//%20Multi-Selects%20return%20an%20array%0A%09%09%09%09%09%09values.push%28%20value%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20values%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09%09var%20optionSet%2C%20option%2C%0A%09%09%09%09%09options%20%3D%20elem.options%2C%0A%09%09%09%09%09values%20%3D%20jQuery.makeArray%28%20value%20%29%2C%0A%09%09%09%09%09i%20%3D%20options.length%3B%0A%0A%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09option%20%3D%20options%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09/%2A%20eslint-disable%20no-cond-assign%20%2A/%0A%0A%09%09%09%09%09if%20%28%20option.selected%20%3D%0A%09%09%09%09%09%09jQuery.inArray%28%20jQuery.valHooks.option.get%28%20option%20%29%2C%20values%20%29%20%3E%20-1%0A%09%09%09%09%09%29%20%7B%0A%09%09%09%09%09%09optionSet%20%3D%20true%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09/%2A%20eslint-enable%20no-cond-assign%20%2A/%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Force%20browsers%20to%20behave%20consistently%20when%20non-matching%20value%20is%20set%0A%09%09%09%09if%20%28%20%21optionSet%20%29%20%7B%0A%09%09%09%09%09elem.selectedIndex%20%3D%20-1%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20values%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Radios%20and%20checkboxes%20getter/setter%0AjQuery.each%28%20%5B%20%22radio%22%2C%20%22checkbox%22%20%5D%2C%20function%28%29%20%7B%0A%09jQuery.valHooks%5B%20this%20%5D%20%3D%20%7B%0A%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09%09%09return%20%28%20elem.checked%20%3D%20jQuery.inArray%28%20jQuery%28%20elem%20%29.val%28%29%2C%20value%20%29%20%3E%20-1%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%09if%20%28%20%21support.checkOn%20%29%20%7B%0A%09%09jQuery.valHooks%5B%20this%20%5D.get%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem.getAttribute%28%20%22value%22%20%29%20%3D%3D%3D%20null%20%3F%20%22on%22%20%3A%20elem.value%3B%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Return%20jQuery%20for%20attributes-only%20inclusion%0A%0A%0Asupport.focusin%20%3D%20%22onfocusin%22%20in%20window%3B%0A%0A%0Avar%20rfocusMorph%20%3D%20/%5E%28%3F%3Afocusinfocus%7Cfocusoutblur%29%24/%2C%0A%09stopPropagationCallback%20%3D%20function%28%20e%20%29%20%7B%0A%09%09e.stopPropagation%28%29%3B%0A%09%7D%3B%0A%0AjQuery.extend%28%20jQuery.event%2C%20%7B%0A%0A%09trigger%3A%20function%28%20event%2C%20data%2C%20elem%2C%20onlyHandlers%20%29%20%7B%0A%0A%09%09var%20i%2C%20cur%2C%20tmp%2C%20bubbleType%2C%20ontype%2C%20handle%2C%20special%2C%20lastElement%2C%0A%09%09%09eventPath%20%3D%20%5B%20elem%20%7C%7C%20document%20%5D%2C%0A%09%09%09type%20%3D%20hasOwn.call%28%20event%2C%20%22type%22%20%29%20%3F%20event.type%20%3A%20event%2C%0A%09%09%09namespaces%20%3D%20hasOwn.call%28%20event%2C%20%22namespace%22%20%29%20%3F%20event.namespace.split%28%20%22.%22%20%29%20%3A%20%5B%5D%3B%0A%0A%09%09cur%20%3D%20lastElement%20%3D%20tmp%20%3D%20elem%20%3D%20elem%20%7C%7C%20document%3B%0A%0A%09%09//%20Don%27t%20do%20events%20on%20text%20and%20comment%20nodes%0A%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%203%20%7C%7C%20elem.nodeType%20%3D%3D%3D%208%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20focus/blur%20morphs%20to%20focusin/out%3B%20ensure%20we%27re%20not%20firing%20them%20right%20now%0A%09%09if%20%28%20rfocusMorph.test%28%20type%20%2B%20jQuery.event.triggered%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20type.indexOf%28%20%22.%22%20%29%20%3E%20-1%20%29%20%7B%0A%0A%09%09%09//%20Namespaced%20trigger%3B%20create%20a%20regexp%20to%20match%20event%20type%20in%20handle%28%29%0A%09%09%09namespaces%20%3D%20type.split%28%20%22.%22%20%29%3B%0A%09%09%09type%20%3D%20namespaces.shift%28%29%3B%0A%09%09%09namespaces.sort%28%29%3B%0A%09%09%7D%0A%09%09ontype%20%3D%20type.indexOf%28%20%22%3A%22%20%29%20%3C%200%20%26%26%20%22on%22%20%2B%20type%3B%0A%0A%09%09//%20Caller%20can%20pass%20in%20a%20jQuery.Event%20object%2C%20Object%2C%20or%20just%20an%20event%20type%20string%0A%09%09event%20%3D%20event%5B%20jQuery.expando%20%5D%20%3F%0A%09%09%09event%20%3A%0A%09%09%09new%20jQuery.Event%28%20type%2C%20typeof%20event%20%3D%3D%3D%20%22object%22%20%26%26%20event%20%29%3B%0A%0A%09%09//%20Trigger%20bitmask%3A%20%26%201%20for%20native%20handlers%3B%20%26%202%20for%20jQuery%20%28always%20true%29%0A%09%09event.isTrigger%20%3D%20onlyHandlers%20%3F%202%20%3A%203%3B%0A%09%09event.namespace%20%3D%20namespaces.join%28%20%22.%22%20%29%3B%0A%09%09event.rnamespace%20%3D%20event.namespace%20%3F%0A%09%09%09new%20RegExp%28%20%22%28%5E%7C%5C%5C.%29%22%20%2B%20namespaces.join%28%20%22%5C%5C.%28%3F%3A.%2A%5C%5C.%7C%29%22%20%29%20%2B%20%22%28%5C%5C.%7C%24%29%22%20%29%20%3A%0A%09%09%09null%3B%0A%0A%09%09//%20Clean%20up%20the%20event%20in%20case%20it%20is%20being%20reused%0A%09%09event.result%20%3D%20undefined%3B%0A%09%09if%20%28%20%21event.target%20%29%20%7B%0A%09%09%09event.target%20%3D%20elem%3B%0A%09%09%7D%0A%0A%09%09//%20Clone%20any%20incoming%20data%20and%20prepend%20the%20event%2C%20creating%20the%20handler%20arg%20list%0A%09%09data%20%3D%20data%20%3D%3D%20null%20%3F%0A%09%09%09%5B%20event%20%5D%20%3A%0A%09%09%09jQuery.makeArray%28%20data%2C%20%5B%20event%20%5D%20%29%3B%0A%0A%09%09//%20Allow%20special%20events%20to%20draw%20outside%20the%20lines%0A%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20special.trigger%20%26%26%20special.trigger.apply%28%20elem%2C%20data%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Determine%20event%20propagation%20path%20in%20advance%2C%20per%20W3C%20events%20spec%20%28%239951%29%0A%09%09//%20Bubble%20up%20to%20document%2C%20then%20to%20window%3B%20watch%20for%20a%20global%20ownerDocument%20var%20%28%239724%29%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20%21special.noBubble%20%26%26%20%21isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09bubbleType%20%3D%20special.delegateType%20%7C%7C%20type%3B%0A%09%09%09if%20%28%20%21rfocusMorph.test%28%20bubbleType%20%2B%20type%20%29%20%29%20%7B%0A%09%09%09%09cur%20%3D%20cur.parentNode%3B%0A%09%09%09%7D%0A%09%09%09for%20%28%20%3B%20cur%3B%20cur%20%3D%20cur.parentNode%20%29%20%7B%0A%09%09%09%09eventPath.push%28%20cur%20%29%3B%0A%09%09%09%09tmp%20%3D%20cur%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Only%20add%20window%20if%20we%20got%20to%20document%20%28e.g.%2C%20not%20plain%20obj%20or%20detached%20DOM%29%0A%09%09%09if%20%28%20tmp%20%3D%3D%3D%20%28%20elem.ownerDocument%20%7C%7C%20document%20%29%20%29%20%7B%0A%09%09%09%09eventPath.push%28%20tmp.defaultView%20%7C%7C%20tmp.parentWindow%20%7C%7C%20window%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Fire%20handlers%20on%20the%20event%20path%0A%09%09i%20%3D%200%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20eventPath%5B%20i%2B%2B%20%5D%20%29%20%26%26%20%21event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09lastElement%20%3D%20cur%3B%0A%09%09%09event.type%20%3D%20i%20%3E%201%20%3F%0A%09%09%09%09bubbleType%20%3A%0A%09%09%09%09special.bindType%20%7C%7C%20type%3B%0A%0A%09%09%09//%20jQuery%20handler%0A%09%09%09handle%20%3D%20%28%0A%09%09%09%09%09dataPriv.get%28%20cur%2C%20%22events%22%20%29%20%7C%7C%20Object.create%28%20null%20%29%0A%09%09%09%09%29%5B%20event.type%20%5D%20%26%26%0A%09%09%09%09dataPriv.get%28%20cur%2C%20%22handle%22%20%29%3B%0A%09%09%09if%20%28%20handle%20%29%20%7B%0A%09%09%09%09handle.apply%28%20cur%2C%20data%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Native%20handler%0A%09%09%09handle%20%3D%20ontype%20%26%26%20cur%5B%20ontype%20%5D%3B%0A%09%09%09if%20%28%20handle%20%26%26%20handle.apply%20%26%26%20acceptData%28%20cur%20%29%20%29%20%7B%0A%09%09%09%09event.result%20%3D%20handle.apply%28%20cur%2C%20data%20%29%3B%0A%09%09%09%09if%20%28%20event.result%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09event.type%20%3D%20type%3B%0A%0A%09%09//%20If%20nobody%20prevented%20the%20default%20action%2C%20do%20it%20now%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20%21event.isDefaultPrevented%28%29%20%29%20%7B%0A%0A%09%09%09if%20%28%20%28%20%21special._default%20%7C%7C%0A%09%09%09%09special._default.apply%28%20eventPath.pop%28%29%2C%20data%20%29%20%3D%3D%3D%20false%20%29%20%26%26%0A%09%09%09%09acceptData%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Call%20a%20native%20DOM%20method%20on%20the%20target%20with%20the%20same%20name%20as%20the%20event.%0A%09%09%09%09//%20Don%27t%20do%20default%20actions%20on%20window%2C%20that%27s%20where%20global%20variables%20be%20%28%236170%29%0A%09%09%09%09if%20%28%20ontype%20%26%26%20isFunction%28%20elem%5B%20type%20%5D%20%29%20%26%26%20%21isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Don%27t%20re-trigger%20an%20onFOO%20event%20when%20we%20call%20its%20FOO%28%29%20method%0A%09%09%09%09%09tmp%20%3D%20elem%5B%20ontype%20%5D%3B%0A%0A%09%09%09%09%09if%20%28%20tmp%20%29%20%7B%0A%09%09%09%09%09%09elem%5B%20ontype%20%5D%20%3D%20null%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Prevent%20re-triggering%20of%20the%20same%20event%2C%20since%20we%20already%20bubbled%20it%20above%0A%09%09%09%09%09jQuery.event.triggered%20%3D%20type%3B%0A%0A%09%09%09%09%09if%20%28%20event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09%09%09%09lastElement.addEventListener%28%20type%2C%20stopPropagationCallback%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09elem%5B%20type%20%5D%28%29%3B%0A%0A%09%09%09%09%09if%20%28%20event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09%09%09%09lastElement.removeEventListener%28%20type%2C%20stopPropagationCallback%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09jQuery.event.triggered%20%3D%20undefined%3B%0A%0A%09%09%09%09%09if%20%28%20tmp%20%29%20%7B%0A%09%09%09%09%09%09elem%5B%20ontype%20%5D%20%3D%20tmp%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20event.result%3B%0A%09%7D%2C%0A%0A%09//%20Piggyback%20on%20a%20donor%20event%20to%20simulate%20a%20different%20one%0A%09//%20Used%20only%20for%20%60focus%28in%20%7C%20out%29%60%20events%0A%09simulate%3A%20function%28%20type%2C%20elem%2C%20event%20%29%20%7B%0A%09%09var%20e%20%3D%20jQuery.extend%28%0A%09%09%09new%20jQuery.Event%28%29%2C%0A%09%09%09event%2C%0A%09%09%09%7B%0A%09%09%09%09type%3A%20type%2C%0A%09%09%09%09isSimulated%3A%20true%0A%09%09%09%7D%0A%09%09%29%3B%0A%0A%09%09jQuery.event.trigger%28%20e%2C%20null%2C%20elem%20%29%3B%0A%09%7D%0A%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09trigger%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.event.trigger%28%20type%2C%20data%2C%20this%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09triggerHandler%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09var%20elem%20%3D%20this%5B%200%20%5D%3B%0A%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.event.trigger%28%20type%2C%20data%2C%20elem%2C%20true%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20Support%3A%20Firefox%20%3C%3D44%0A//%20Firefox%20doesn%27t%20have%20focus%28in%20%7C%20out%29%20events%0A//%20Related%20ticket%20-%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D687787%0A//%0A//%20Support%3A%20Chrome%20%3C%3D48%20-%2049%2C%20Safari%20%3C%3D9.0%20-%209.1%0A//%20focus%28in%20%7C%20out%29%20events%20fire%20after%20focus%20%26%20blur%20events%2C%0A//%20which%20is%20spec%20violation%20-%20http%3A//www.w3.org/TR/DOM-Level-3-Events/%23events-focusevent-event-order%0A//%20Related%20ticket%20-%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D449857%0Aif%20%28%20%21support.focusin%20%29%20%7B%0A%09jQuery.each%28%20%7B%20focus%3A%20%22focusin%22%2C%20blur%3A%20%22focusout%22%20%7D%2C%20function%28%20orig%2C%20fix%20%29%20%7B%0A%0A%09%09//%20Attach%20a%20single%20capturing%20handler%20on%20the%20document%20while%20someone%20wants%20focusin/focusout%0A%09%09var%20handler%20%3D%20function%28%20event%20%29%20%7B%0A%09%09%09jQuery.event.simulate%28%20fix%2C%20event.target%2C%20jQuery.event.fix%28%20event%20%29%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09jQuery.event.special%5B%20fix%20%5D%20%3D%20%7B%0A%09%09%09setup%3A%20function%28%29%20%7B%0A%0A%09%09%09%09//%20Handle%3A%20regular%20nodes%20%28via%20%60this.ownerDocument%60%29%2C%20window%0A%09%09%09%09//%20%28via%20%60this.document%60%29%20%26%20document%20%28via%20%60this%60%29.%0A%09%09%09%09var%20doc%20%3D%20this.ownerDocument%20%7C%7C%20this.document%20%7C%7C%20this%2C%0A%09%09%09%09%09attaches%20%3D%20dataPriv.access%28%20doc%2C%20fix%20%29%3B%0A%0A%09%09%09%09if%20%28%20%21attaches%20%29%20%7B%0A%09%09%09%09%09doc.addEventListener%28%20orig%2C%20handler%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09dataPriv.access%28%20doc%2C%20fix%2C%20%28%20attaches%20%7C%7C%200%20%29%20%2B%201%20%29%3B%0A%09%09%09%7D%2C%0A%09%09%09teardown%3A%20function%28%29%20%7B%0A%09%09%09%09var%20doc%20%3D%20this.ownerDocument%20%7C%7C%20this.document%20%7C%7C%20this%2C%0A%09%09%09%09%09attaches%20%3D%20dataPriv.access%28%20doc%2C%20fix%20%29%20-%201%3B%0A%0A%09%09%09%09if%20%28%20%21attaches%20%29%20%7B%0A%09%09%09%09%09doc.removeEventListener%28%20orig%2C%20handler%2C%20true%20%29%3B%0A%09%09%09%09%09dataPriv.remove%28%20doc%2C%20fix%20%29%3B%0A%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09dataPriv.access%28%20doc%2C%20fix%2C%20attaches%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%0Avar%20location%20%3D%20window.location%3B%0A%0Avar%20nonce%20%3D%20%7B%20guid%3A%20Date.now%28%29%20%7D%3B%0A%0Avar%20rquery%20%3D%20%28%20/%5C%3F/%20%29%3B%0A%0A%0A%0A//%20Cross-browser%20xml%20parsing%0AjQuery.parseXML%20%3D%20function%28%20data%20%29%20%7B%0A%09var%20xml%3B%0A%09if%20%28%20%21data%20%7C%7C%20typeof%20data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20null%3B%0A%09%7D%0A%0A%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09//%20IE%20throws%20on%20parseFromString%20with%20invalid%20input.%0A%09try%20%7B%0A%09%09xml%20%3D%20%28%20new%20window.DOMParser%28%29%20%29.parseFromString%28%20data%2C%20%22text/xml%22%20%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09xml%20%3D%20undefined%3B%0A%09%7D%0A%0A%09if%20%28%20%21xml%20%7C%7C%20xml.getElementsByTagName%28%20%22parsererror%22%20%29.length%20%29%20%7B%0A%09%09jQuery.error%28%20%22Invalid%20XML%3A%20%22%20%2B%20data%20%29%3B%0A%09%7D%0A%09return%20xml%3B%0A%7D%3B%0A%0A%0Avar%0A%09rbracket%20%3D%20/%5C%5B%5C%5D%24/%2C%0A%09rCRLF%20%3D%20/%5Cr%3F%5Cn/g%2C%0A%09rsubmitterTypes%20%3D%20/%5E%28%3F%3Asubmit%7Cbutton%7Cimage%7Creset%7Cfile%29%24/i%2C%0A%09rsubmittable%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Ckeygen%29/i%3B%0A%0Afunction%20buildParams%28%20prefix%2C%20obj%2C%20traditional%2C%20add%20%29%20%7B%0A%09var%20name%3B%0A%0A%09if%20%28%20Array.isArray%28%20obj%20%29%20%29%20%7B%0A%0A%09%09//%20Serialize%20array%20item.%0A%09%09jQuery.each%28%20obj%2C%20function%28%20i%2C%20v%20%29%20%7B%0A%09%09%09if%20%28%20traditional%20%7C%7C%20rbracket.test%28%20prefix%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Treat%20each%20array%20item%20as%20a%20scalar.%0A%09%09%09%09add%28%20prefix%2C%20v%20%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Item%20is%20non-scalar%20%28array%20or%20object%29%2C%20encode%20its%20numeric%20index.%0A%09%09%09%09buildParams%28%0A%09%09%09%09%09prefix%20%2B%20%22%5B%22%20%2B%20%28%20typeof%20v%20%3D%3D%3D%20%22object%22%20%26%26%20v%20%21%3D%20null%20%3F%20i%20%3A%20%22%22%20%29%20%2B%20%22%5D%22%2C%0A%09%09%09%09%09v%2C%0A%09%09%09%09%09traditional%2C%0A%09%09%09%09%09add%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%0A%09%7D%20else%20if%20%28%20%21traditional%20%26%26%20toType%28%20obj%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20Serialize%20object%20item.%0A%09%09for%20%28%20name%20in%20obj%20%29%20%7B%0A%09%09%09buildParams%28%20prefix%20%2B%20%22%5B%22%20%2B%20name%20%2B%20%22%5D%22%2C%20obj%5B%20name%20%5D%2C%20traditional%2C%20add%20%29%3B%0A%09%09%7D%0A%0A%09%7D%20else%20%7B%0A%0A%09%09//%20Serialize%20scalar%20item.%0A%09%09add%28%20prefix%2C%20obj%20%29%3B%0A%09%7D%0A%7D%0A%0A//%20Serialize%20an%20array%20of%20form%20elements%20or%20a%20set%20of%0A//%20key/values%20into%20a%20query%20string%0AjQuery.param%20%3D%20function%28%20a%2C%20traditional%20%29%20%7B%0A%09var%20prefix%2C%0A%09%09s%20%3D%20%5B%5D%2C%0A%09%09add%20%3D%20function%28%20key%2C%20valueOrFunction%20%29%20%7B%0A%0A%09%09%09//%20If%20value%20is%20a%20function%2C%20invoke%20it%20and%20use%20its%20return%20value%0A%09%09%09var%20value%20%3D%20isFunction%28%20valueOrFunction%20%29%20%3F%0A%09%09%09%09valueOrFunction%28%29%20%3A%0A%09%09%09%09valueOrFunction%3B%0A%0A%09%09%09s%5B%20s.length%20%5D%20%3D%20encodeURIComponent%28%20key%20%29%20%2B%20%22%3D%22%20%2B%0A%09%09%09%09encodeURIComponent%28%20value%20%3D%3D%20null%20%3F%20%22%22%20%3A%20value%20%29%3B%0A%09%09%7D%3B%0A%0A%09if%20%28%20a%20%3D%3D%20null%20%29%20%7B%0A%09%09return%20%22%22%3B%0A%09%7D%0A%0A%09//%20If%20an%20array%20was%20passed%20in%2C%20assume%20that%20it%20is%20an%20array%20of%20form%20elements.%0A%09if%20%28%20Array.isArray%28%20a%20%29%20%7C%7C%20%28%20a.jquery%20%26%26%20%21jQuery.isPlainObject%28%20a%20%29%20%29%20%29%20%7B%0A%0A%09%09//%20Serialize%20the%20form%20elements%0A%09%09jQuery.each%28%20a%2C%20function%28%29%20%7B%0A%09%09%09add%28%20this.name%2C%20this.value%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09%7D%20else%20%7B%0A%0A%09%09//%20If%20traditional%2C%20encode%20the%20%22old%22%20way%20%28the%20way%201.3.2%20or%20older%0A%09%09//%20did%20it%29%2C%20otherwise%20encode%20params%20recursively.%0A%09%09for%20%28%20prefix%20in%20a%20%29%20%7B%0A%09%09%09buildParams%28%20prefix%2C%20a%5B%20prefix%20%5D%2C%20traditional%2C%20add%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20resulting%20serialization%0A%09return%20s.join%28%20%22%26%22%20%29%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09serialize%3A%20function%28%29%20%7B%0A%09%09return%20jQuery.param%28%20this.serializeArray%28%29%20%29%3B%0A%09%7D%2C%0A%09serializeArray%3A%20function%28%29%20%7B%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Can%20add%20propHook%20for%20%22elements%22%20to%20filter%20or%20add%20form%20elements%0A%09%09%09var%20elements%20%3D%20jQuery.prop%28%20this%2C%20%22elements%22%20%29%3B%0A%09%09%09return%20elements%20%3F%20jQuery.makeArray%28%20elements%20%29%20%3A%20this%3B%0A%09%09%7D%20%29%0A%09%09.filter%28%20function%28%29%20%7B%0A%09%09%09var%20type%20%3D%20this.type%3B%0A%0A%09%09%09//%20Use%20.is%28%20%22%3Adisabled%22%20%29%20so%20that%20fieldset%5Bdisabled%5D%20works%0A%09%09%09return%20this.name%20%26%26%20%21jQuery%28%20this%20%29.is%28%20%22%3Adisabled%22%20%29%20%26%26%0A%09%09%09%09rsubmittable.test%28%20this.nodeName%20%29%20%26%26%20%21rsubmitterTypes.test%28%20type%20%29%20%26%26%0A%09%09%09%09%28%20this.checked%20%7C%7C%20%21rcheckableType.test%28%20type%20%29%20%29%3B%0A%09%09%7D%20%29%0A%09%09.map%28%20function%28%20_i%2C%20elem%20%29%20%7B%0A%09%09%09var%20val%20%3D%20jQuery%28%20this%20%29.val%28%29%3B%0A%0A%09%09%09if%20%28%20val%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09return%20null%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20Array.isArray%28%20val%20%29%20%29%20%7B%0A%09%09%09%09return%20jQuery.map%28%20val%2C%20function%28%20val%20%29%20%7B%0A%09%09%09%09%09return%20%7B%20name%3A%20elem.name%2C%20value%3A%20val.replace%28%20rCRLF%2C%20%22%5Cr%5Cn%22%20%29%20%7D%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20%7B%20name%3A%20elem.name%2C%20value%3A%20val.replace%28%20rCRLF%2C%20%22%5Cr%5Cn%22%20%29%20%7D%3B%0A%09%09%7D%20%29.get%28%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Avar%0A%09r20%20%3D%20/%2520/g%2C%0A%09rhash%20%3D%20/%23.%2A%24/%2C%0A%09rantiCache%20%3D%20/%28%5B%3F%26%5D%29_%3D%5B%5E%26%5D%2A/%2C%0A%09rheaders%20%3D%20/%5E%28.%2A%3F%29%3A%5B%20%5Ct%5D%2A%28%5B%5E%5Cr%5Cn%5D%2A%29%24/mg%2C%0A%0A%09//%20%237653%2C%20%238125%2C%20%238152%3A%20local%20protocol%20detection%0A%09rlocalProtocol%20%3D%20/%5E%28%3F%3Aabout%7Capp%7Capp-storage%7C.%2B-extension%7Cfile%7Cres%7Cwidget%29%3A%24/%2C%0A%09rnoContent%20%3D%20/%5E%28%3F%3AGET%7CHEAD%29%24/%2C%0A%09rprotocol%20%3D%20/%5E%5C/%5C//%2C%0A%0A%09/%2A%20Prefilters%0A%09%20%2A%201%29%20They%20are%20useful%20to%20introduce%20custom%20dataTypes%20%28see%20ajax/jsonp.js%20for%20an%20example%29%0A%09%20%2A%202%29%20These%20are%20called%3A%0A%09%20%2A%20%20%20%20-%20BEFORE%20asking%20for%20a%20transport%0A%09%20%2A%20%20%20%20-%20AFTER%20param%20serialization%20%28s.data%20is%20a%20string%20if%20s.processData%20is%20true%29%0A%09%20%2A%203%29%20key%20is%20the%20dataType%0A%09%20%2A%204%29%20the%20catchall%20symbol%20%22%2A%22%20can%20be%20used%0A%09%20%2A%205%29%20execution%20will%20start%20with%20transport%20dataType%20and%20THEN%20continue%20down%20to%20%22%2A%22%20if%20needed%0A%09%20%2A/%0A%09prefilters%20%3D%20%7B%7D%2C%0A%0A%09/%2A%20Transports%20bindings%0A%09%20%2A%201%29%20key%20is%20the%20dataType%0A%09%20%2A%202%29%20the%20catchall%20symbol%20%22%2A%22%20can%20be%20used%0A%09%20%2A%203%29%20selection%20will%20start%20with%20transport%20dataType%20and%20THEN%20go%20to%20%22%2A%22%20if%20needed%0A%09%20%2A/%0A%09transports%20%3D%20%7B%7D%2C%0A%0A%09//%20Avoid%20comment-prolog%20char%20sequence%20%28%2310098%29%3B%20must%20appease%20lint%20and%20evade%20compression%0A%09allTypes%20%3D%20%22%2A/%22.concat%28%20%22%2A%22%20%29%2C%0A%0A%09//%20Anchor%20tag%20for%20parsing%20the%20document%20origin%0A%09originAnchor%20%3D%20document.createElement%28%20%22a%22%20%29%3B%0A%09originAnchor.href%20%3D%20location.href%3B%0A%0A//%20Base%20%22constructor%22%20for%20jQuery.ajaxPrefilter%20and%20jQuery.ajaxTransport%0Afunction%20addToPrefiltersOrTransports%28%20structure%20%29%20%7B%0A%0A%09//%20dataTypeExpression%20is%20optional%20and%20defaults%20to%20%22%2A%22%0A%09return%20function%28%20dataTypeExpression%2C%20func%20%29%20%7B%0A%0A%09%09if%20%28%20typeof%20dataTypeExpression%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09func%20%3D%20dataTypeExpression%3B%0A%09%09%09dataTypeExpression%20%3D%20%22%2A%22%3B%0A%09%09%7D%0A%0A%09%09var%20dataType%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09dataTypes%20%3D%20dataTypeExpression.toLowerCase%28%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%0A%09%09if%20%28%20isFunction%28%20func%20%29%20%29%20%7B%0A%0A%09%09%09//%20For%20each%20dataType%20in%20the%20dataTypeExpression%0A%09%09%09while%20%28%20%28%20dataType%20%3D%20dataTypes%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Prepend%20if%20requested%0A%09%09%09%09if%20%28%20dataType%5B%200%20%5D%20%3D%3D%3D%20%22%2B%22%20%29%20%7B%0A%09%09%09%09%09dataType%20%3D%20dataType.slice%28%201%20%29%20%7C%7C%20%22%2A%22%3B%0A%09%09%09%09%09%28%20structure%5B%20dataType%20%5D%20%3D%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%20%29.unshift%28%20func%20%29%3B%0A%0A%09%09%09%09//%20Otherwise%20append%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%28%20structure%5B%20dataType%20%5D%20%3D%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%20%29.push%28%20func%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0A//%20Base%20inspection%20function%20for%20prefilters%20and%20transports%0Afunction%20inspectPrefiltersOrTransports%28%20structure%2C%20options%2C%20originalOptions%2C%20jqXHR%20%29%20%7B%0A%0A%09var%20inspected%20%3D%20%7B%7D%2C%0A%09%09seekingTransport%20%3D%20%28%20structure%20%3D%3D%3D%20transports%20%29%3B%0A%0A%09function%20inspect%28%20dataType%20%29%20%7B%0A%09%09var%20selected%3B%0A%09%09inspected%5B%20dataType%20%5D%20%3D%20true%3B%0A%09%09jQuery.each%28%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%2C%20function%28%20_%2C%20prefilterOrFactory%20%29%20%7B%0A%09%09%09var%20dataTypeOrTransport%20%3D%20prefilterOrFactory%28%20options%2C%20originalOptions%2C%20jqXHR%20%29%3B%0A%09%09%09if%20%28%20typeof%20dataTypeOrTransport%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%21seekingTransport%20%26%26%20%21inspected%5B%20dataTypeOrTransport%20%5D%20%29%20%7B%0A%0A%09%09%09%09options.dataTypes.unshift%28%20dataTypeOrTransport%20%29%3B%0A%09%09%09%09inspect%28%20dataTypeOrTransport%20%29%3B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%20else%20if%20%28%20seekingTransport%20%29%20%7B%0A%09%09%09%09return%20%21%28%20selected%20%3D%20dataTypeOrTransport%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%09return%20selected%3B%0A%09%7D%0A%0A%09return%20inspect%28%20options.dataTypes%5B%200%20%5D%20%29%20%7C%7C%20%21inspected%5B%20%22%2A%22%20%5D%20%26%26%20inspect%28%20%22%2A%22%20%29%3B%0A%7D%0A%0A//%20A%20special%20extend%20for%20ajax%20options%0A//%20that%20takes%20%22flat%22%20options%20%28not%20to%20be%20deep%20extended%29%0A//%20Fixes%20%239887%0Afunction%20ajaxExtend%28%20target%2C%20src%20%29%20%7B%0A%09var%20key%2C%20deep%2C%0A%09%09flatOptions%20%3D%20jQuery.ajaxSettings.flatOptions%20%7C%7C%20%7B%7D%3B%0A%0A%09for%20%28%20key%20in%20src%20%29%20%7B%0A%09%09if%20%28%20src%5B%20key%20%5D%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%28%20flatOptions%5B%20key%20%5D%20%3F%20target%20%3A%20%28%20deep%20%7C%7C%20%28%20deep%20%3D%20%7B%7D%20%29%20%29%20%29%5B%20key%20%5D%20%3D%20src%5B%20key%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%09if%20%28%20deep%20%29%20%7B%0A%09%09jQuery.extend%28%20true%2C%20target%2C%20deep%20%29%3B%0A%09%7D%0A%0A%09return%20target%3B%0A%7D%0A%0A/%2A%20Handles%20responses%20to%20an%20ajax%20request%3A%0A%20%2A%20-%20finds%20the%20right%20dataType%20%28mediates%20between%20content-type%20and%20expected%20dataType%29%0A%20%2A%20-%20returns%20the%20corresponding%20response%0A%20%2A/%0Afunction%20ajaxHandleResponses%28%20s%2C%20jqXHR%2C%20responses%20%29%20%7B%0A%0A%09var%20ct%2C%20type%2C%20finalDataType%2C%20firstDataType%2C%0A%09%09contents%20%3D%20s.contents%2C%0A%09%09dataTypes%20%3D%20s.dataTypes%3B%0A%0A%09//%20Remove%20auto%20dataType%20and%20get%20content-type%20in%20the%20process%0A%09while%20%28%20dataTypes%5B%200%20%5D%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%09%09dataTypes.shift%28%29%3B%0A%09%09if%20%28%20ct%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09ct%20%3D%20s.mimeType%20%7C%7C%20jqXHR.getResponseHeader%28%20%22Content-Type%22%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Check%20if%20we%27re%20dealing%20with%20a%20known%20content-type%0A%09if%20%28%20ct%20%29%20%7B%0A%09%09for%20%28%20type%20in%20contents%20%29%20%7B%0A%09%09%09if%20%28%20contents%5B%20type%20%5D%20%26%26%20contents%5B%20type%20%5D.test%28%20ct%20%29%20%29%20%7B%0A%09%09%09%09dataTypes.unshift%28%20type%20%29%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Check%20to%20see%20if%20we%20have%20a%20response%20for%20the%20expected%20dataType%0A%09if%20%28%20dataTypes%5B%200%20%5D%20in%20responses%20%29%20%7B%0A%09%09finalDataType%20%3D%20dataTypes%5B%200%20%5D%3B%0A%09%7D%20else%20%7B%0A%0A%09%09//%20Try%20convertible%20dataTypes%0A%09%09for%20%28%20type%20in%20responses%20%29%20%7B%0A%09%09%09if%20%28%20%21dataTypes%5B%200%20%5D%20%7C%7C%20s.converters%5B%20type%20%2B%20%22%20%22%20%2B%20dataTypes%5B%200%20%5D%20%5D%20%29%20%7B%0A%09%09%09%09finalDataType%20%3D%20type%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20%21firstDataType%20%29%20%7B%0A%09%09%09%09firstDataType%20%3D%20type%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Or%20just%20use%20first%20one%0A%09%09finalDataType%20%3D%20finalDataType%20%7C%7C%20firstDataType%3B%0A%09%7D%0A%0A%09//%20If%20we%20found%20a%20dataType%0A%09//%20We%20add%20the%20dataType%20to%20the%20list%20if%20needed%0A%09//%20and%20return%20the%20corresponding%20response%0A%09if%20%28%20finalDataType%20%29%20%7B%0A%09%09if%20%28%20finalDataType%20%21%3D%3D%20dataTypes%5B%200%20%5D%20%29%20%7B%0A%09%09%09dataTypes.unshift%28%20finalDataType%20%29%3B%0A%09%09%7D%0A%09%09return%20responses%5B%20finalDataType%20%5D%3B%0A%09%7D%0A%7D%0A%0A/%2A%20Chain%20conversions%20given%20the%20request%20and%20the%20original%20response%0A%20%2A%20Also%20sets%20the%20responseXXX%20fields%20on%20the%20jqXHR%20instance%0A%20%2A/%0Afunction%20ajaxConvert%28%20s%2C%20response%2C%20jqXHR%2C%20isSuccess%20%29%20%7B%0A%09var%20conv2%2C%20current%2C%20conv%2C%20tmp%2C%20prev%2C%0A%09%09converters%20%3D%20%7B%7D%2C%0A%0A%09%09//%20Work%20with%20a%20copy%20of%20dataTypes%20in%20case%20we%20need%20to%20modify%20it%20for%20conversion%0A%09%09dataTypes%20%3D%20s.dataTypes.slice%28%29%3B%0A%0A%09//%20Create%20converters%20map%20with%20lowercased%20keys%0A%09if%20%28%20dataTypes%5B%201%20%5D%20%29%20%7B%0A%09%09for%20%28%20conv%20in%20s.converters%20%29%20%7B%0A%09%09%09converters%5B%20conv.toLowerCase%28%29%20%5D%20%3D%20s.converters%5B%20conv%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09current%20%3D%20dataTypes.shift%28%29%3B%0A%0A%09//%20Convert%20to%20each%20sequential%20dataType%0A%09while%20%28%20current%20%29%20%7B%0A%0A%09%09if%20%28%20s.responseFields%5B%20current%20%5D%20%29%20%7B%0A%09%09%09jqXHR%5B%20s.responseFields%5B%20current%20%5D%20%5D%20%3D%20response%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20the%20dataFilter%20if%20provided%0A%09%09if%20%28%20%21prev%20%26%26%20isSuccess%20%26%26%20s.dataFilter%20%29%20%7B%0A%09%09%09response%20%3D%20s.dataFilter%28%20response%2C%20s.dataType%20%29%3B%0A%09%09%7D%0A%0A%09%09prev%20%3D%20current%3B%0A%09%09current%20%3D%20dataTypes.shift%28%29%3B%0A%0A%09%09if%20%28%20current%20%29%20%7B%0A%0A%09%09%09//%20There%27s%20only%20work%20to%20do%20if%20current%20dataType%20is%20non-auto%0A%09%09%09if%20%28%20current%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%0A%09%09%09%09current%20%3D%20prev%3B%0A%0A%09%09%09//%20Convert%20response%20if%20prev%20dataType%20is%20non-auto%20and%20differs%20from%20current%0A%09%09%09%7D%20else%20if%20%28%20prev%20%21%3D%3D%20%22%2A%22%20%26%26%20prev%20%21%3D%3D%20current%20%29%20%7B%0A%0A%09%09%09%09//%20Seek%20a%20direct%20converter%0A%09%09%09%09conv%20%3D%20converters%5B%20prev%20%2B%20%22%20%22%20%2B%20current%20%5D%20%7C%7C%20converters%5B%20%22%2A%20%22%20%2B%20current%20%5D%3B%0A%0A%09%09%09%09//%20If%20none%20found%2C%20seek%20a%20pair%0A%09%09%09%09if%20%28%20%21conv%20%29%20%7B%0A%09%09%09%09%09for%20%28%20conv2%20in%20converters%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20If%20conv2%20outputs%20current%0A%09%09%09%09%09%09tmp%20%3D%20conv2.split%28%20%22%20%22%20%29%3B%0A%09%09%09%09%09%09if%20%28%20tmp%5B%201%20%5D%20%3D%3D%3D%20current%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20If%20prev%20can%20be%20converted%20to%20accepted%20input%0A%09%09%09%09%09%09%09conv%20%3D%20converters%5B%20prev%20%2B%20%22%20%22%20%2B%20tmp%5B%200%20%5D%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09converters%5B%20%22%2A%20%22%20%2B%20tmp%5B%200%20%5D%20%5D%3B%0A%09%09%09%09%09%09%09if%20%28%20conv%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Condense%20equivalence%20converters%0A%09%09%09%09%09%09%09%09if%20%28%20conv%20%3D%3D%3D%20true%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09conv%20%3D%20converters%5B%20conv2%20%5D%3B%0A%0A%09%09%09%09%09%09%09%09//%20Otherwise%2C%20insert%20the%20intermediate%20dataType%0A%09%09%09%09%09%09%09%09%7D%20else%20if%20%28%20converters%5B%20conv2%20%5D%20%21%3D%3D%20true%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09current%20%3D%20tmp%5B%200%20%5D%3B%0A%09%09%09%09%09%09%09%09%09dataTypes.unshift%28%20tmp%5B%201%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Apply%20converter%20%28if%20not%20an%20equivalence%29%0A%09%09%09%09if%20%28%20conv%20%21%3D%3D%20true%20%29%20%7B%0A%0A%09%09%09%09%09//%20Unless%20errors%20are%20allowed%20to%20bubble%2C%20catch%20and%20return%20them%0A%09%09%09%09%09if%20%28%20conv%20%26%26%20s.throws%20%29%20%7B%0A%09%09%09%09%09%09response%20%3D%20conv%28%20response%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09response%20%3D%20conv%28%20response%20%29%3B%0A%09%09%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09%09%09%09%09%09return%20%7B%0A%09%09%09%09%09%09%09%09state%3A%20%22parsererror%22%2C%0A%09%09%09%09%09%09%09%09error%3A%20conv%20%3F%20e%20%3A%20%22No%20conversion%20from%20%22%20%2B%20prev%20%2B%20%22%20to%20%22%20%2B%20current%0A%09%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20%7B%20state%3A%20%22success%22%2C%20data%3A%20response%20%7D%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Counter%20for%20holding%20the%20number%20of%20active%20queries%0A%09active%3A%200%2C%0A%0A%09//%20Last-Modified%20header%20cache%20for%20next%20request%0A%09lastModified%3A%20%7B%7D%2C%0A%09etag%3A%20%7B%7D%2C%0A%0A%09ajaxSettings%3A%20%7B%0A%09%09url%3A%20location.href%2C%0A%09%09type%3A%20%22GET%22%2C%0A%09%09isLocal%3A%20rlocalProtocol.test%28%20location.protocol%20%29%2C%0A%09%09global%3A%20true%2C%0A%09%09processData%3A%20true%2C%0A%09%09async%3A%20true%2C%0A%09%09contentType%3A%20%22application/x-www-form-urlencoded%3B%20charset%3DUTF-8%22%2C%0A%0A%09%09/%2A%0A%09%09timeout%3A%200%2C%0A%09%09data%3A%20null%2C%0A%09%09dataType%3A%20null%2C%0A%09%09username%3A%20null%2C%0A%09%09password%3A%20null%2C%0A%09%09cache%3A%20null%2C%0A%09%09throws%3A%20false%2C%0A%09%09traditional%3A%20false%2C%0A%09%09headers%3A%20%7B%7D%2C%0A%09%09%2A/%0A%0A%09%09accepts%3A%20%7B%0A%09%09%09%22%2A%22%3A%20allTypes%2C%0A%09%09%09text%3A%20%22text/plain%22%2C%0A%09%09%09html%3A%20%22text/html%22%2C%0A%09%09%09xml%3A%20%22application/xml%2C%20text/xml%22%2C%0A%09%09%09json%3A%20%22application/json%2C%20text/javascript%22%0A%09%09%7D%2C%0A%0A%09%09contents%3A%20%7B%0A%09%09%09xml%3A%20/%5Cbxml%5Cb/%2C%0A%09%09%09html%3A%20/%5Cbhtml/%2C%0A%09%09%09json%3A%20/%5Cbjson%5Cb/%0A%09%09%7D%2C%0A%0A%09%09responseFields%3A%20%7B%0A%09%09%09xml%3A%20%22responseXML%22%2C%0A%09%09%09text%3A%20%22responseText%22%2C%0A%09%09%09json%3A%20%22responseJSON%22%0A%09%09%7D%2C%0A%0A%09%09//%20Data%20converters%0A%09%09//%20Keys%20separate%20source%20%28or%20catchall%20%22%2A%22%29%20and%20destination%20types%20with%20a%20single%20space%0A%09%09converters%3A%20%7B%0A%0A%09%09%09//%20Convert%20anything%20to%20text%0A%09%09%09%22%2A%20text%22%3A%20String%2C%0A%0A%09%09%09//%20Text%20to%20html%20%28true%20%3D%20no%20transformation%29%0A%09%09%09%22text%20html%22%3A%20true%2C%0A%0A%09%09%09//%20Evaluate%20text%20as%20a%20json%20expression%0A%09%09%09%22text%20json%22%3A%20JSON.parse%2C%0A%0A%09%09%09//%20Parse%20text%20as%20xml%0A%09%09%09%22text%20xml%22%3A%20jQuery.parseXML%0A%09%09%7D%2C%0A%0A%09%09//%20For%20options%20that%20shouldn%27t%20be%20deep%20extended%3A%0A%09%09//%20you%20can%20add%20your%20own%20custom%20options%20here%20if%0A%09%09//%20and%20when%20you%20create%20one%20that%20shouldn%27t%20be%0A%09%09//%20deep%20extended%20%28see%20ajaxExtend%29%0A%09%09flatOptions%3A%20%7B%0A%09%09%09url%3A%20true%2C%0A%09%09%09context%3A%20true%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Creates%20a%20full%20fledged%20settings%20object%20into%20target%0A%09//%20with%20both%20ajaxSettings%20and%20settings%20fields.%0A%09//%20If%20target%20is%20omitted%2C%20writes%20into%20ajaxSettings.%0A%09ajaxSetup%3A%20function%28%20target%2C%20settings%20%29%20%7B%0A%09%09return%20settings%20%3F%0A%0A%09%09%09//%20Building%20a%20settings%20object%0A%09%09%09ajaxExtend%28%20ajaxExtend%28%20target%2C%20jQuery.ajaxSettings%20%29%2C%20settings%20%29%20%3A%0A%0A%09%09%09//%20Extending%20ajaxSettings%0A%09%09%09ajaxExtend%28%20jQuery.ajaxSettings%2C%20target%20%29%3B%0A%09%7D%2C%0A%0A%09ajaxPrefilter%3A%20addToPrefiltersOrTransports%28%20prefilters%20%29%2C%0A%09ajaxTransport%3A%20addToPrefiltersOrTransports%28%20transports%20%29%2C%0A%0A%09//%20Main%20method%0A%09ajax%3A%20function%28%20url%2C%20options%20%29%20%7B%0A%0A%09%09//%20If%20url%20is%20an%20object%2C%20simulate%20pre-1.5%20signature%0A%09%09if%20%28%20typeof%20url%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09%09options%20%3D%20url%3B%0A%09%09%09url%20%3D%20undefined%3B%0A%09%09%7D%0A%0A%09%09//%20Force%20options%20to%20be%20an%20object%0A%09%09options%20%3D%20options%20%7C%7C%20%7B%7D%3B%0A%0A%09%09var%20transport%2C%0A%0A%09%09%09//%20URL%20without%20anti-cache%20param%0A%09%09%09cacheURL%2C%0A%0A%09%09%09//%20Response%20headers%0A%09%09%09responseHeadersString%2C%0A%09%09%09responseHeaders%2C%0A%0A%09%09%09//%20timeout%20handle%0A%09%09%09timeoutTimer%2C%0A%0A%09%09%09//%20Url%20cleanup%20var%0A%09%09%09urlAnchor%2C%0A%0A%09%09%09//%20Request%20state%20%28becomes%20false%20upon%20send%20and%20true%20upon%20completion%29%0A%09%09%09completed%2C%0A%0A%09%09%09//%20To%20know%20if%20global%20events%20are%20to%20be%20dispatched%0A%09%09%09fireGlobals%2C%0A%0A%09%09%09//%20Loop%20variable%0A%09%09%09i%2C%0A%0A%09%09%09//%20uncached%20part%20of%20the%20url%0A%09%09%09uncached%2C%0A%0A%09%09%09//%20Create%20the%20final%20options%20object%0A%09%09%09s%20%3D%20jQuery.ajaxSetup%28%20%7B%7D%2C%20options%20%29%2C%0A%0A%09%09%09//%20Callbacks%20context%0A%09%09%09callbackContext%20%3D%20s.context%20%7C%7C%20s%2C%0A%0A%09%09%09//%20Context%20for%20global%20events%20is%20callbackContext%20if%20it%20is%20a%20DOM%20node%20or%20jQuery%20collection%0A%09%09%09globalEventContext%20%3D%20s.context%20%26%26%0A%09%09%09%09%28%20callbackContext.nodeType%20%7C%7C%20callbackContext.jquery%20%29%20%3F%0A%09%09%09%09%09jQuery%28%20callbackContext%20%29%20%3A%0A%09%09%09%09%09jQuery.event%2C%0A%0A%09%09%09//%20Deferreds%0A%09%09%09deferred%20%3D%20jQuery.Deferred%28%29%2C%0A%09%09%09completeDeferred%20%3D%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%0A%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09statusCode%20%3D%20s.statusCode%20%7C%7C%20%7B%7D%2C%0A%0A%09%09%09//%20Headers%20%28they%20are%20sent%20all%20at%20once%29%0A%09%09%09requestHeaders%20%3D%20%7B%7D%2C%0A%09%09%09requestHeadersNames%20%3D%20%7B%7D%2C%0A%0A%09%09%09//%20Default%20abort%20message%0A%09%09%09strAbort%20%3D%20%22canceled%22%2C%0A%0A%09%09%09//%20Fake%20xhr%0A%09%09%09jqXHR%20%3D%20%7B%0A%09%09%09%09readyState%3A%200%2C%0A%0A%09%09%09%09//%20Builds%20headers%20hashtable%20if%20needed%0A%09%09%09%09getResponseHeader%3A%20function%28%20key%20%29%20%7B%0A%09%09%09%09%09var%20match%3B%0A%09%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%21responseHeaders%20%29%20%7B%0A%09%09%09%09%09%09%09responseHeaders%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%09%09while%20%28%20%28%20match%20%3D%20rheaders.exec%28%20responseHeadersString%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09responseHeaders%5B%20match%5B%201%20%5D.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%20%3D%0A%09%09%09%09%09%09%09%09%09%28%20responseHeaders%5B%20match%5B%201%20%5D.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%20%7C%7C%20%5B%5D%20%29%0A%09%09%09%09%09%09%09%09%09%09.concat%28%20match%5B%202%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09match%20%3D%20responseHeaders%5B%20key.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20match%20%3D%3D%20null%20%3F%20null%20%3A%20match.join%28%20%22%2C%20%22%20%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Raw%20string%0A%09%09%09%09getAllResponseHeaders%3A%20function%28%29%20%7B%0A%09%09%09%09%09return%20completed%20%3F%20responseHeadersString%20%3A%20null%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Caches%20the%20header%0A%09%09%09%09setRequestHeader%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09%09%09%09if%20%28%20completed%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09name%20%3D%20requestHeadersNames%5B%20name.toLowerCase%28%29%20%5D%20%3D%0A%09%09%09%09%09%09%09requestHeadersNames%5B%20name.toLowerCase%28%29%20%5D%20%7C%7C%20name%3B%0A%09%09%09%09%09%09requestHeaders%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Overrides%20response%20content-type%20header%0A%09%09%09%09overrideMimeType%3A%20function%28%20type%20%29%20%7B%0A%09%09%09%09%09if%20%28%20completed%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09s.mimeType%20%3D%20type%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09%09statusCode%3A%20function%28%20map%20%29%20%7B%0A%09%09%09%09%09var%20code%3B%0A%09%09%09%09%09if%20%28%20map%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Execute%20the%20appropriate%20callbacks%0A%09%09%09%09%09%09%09jqXHR.always%28%20map%5B%20jqXHR.status%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Lazy-add%20the%20new%20callbacks%20in%20a%20way%20that%20preserves%20old%20ones%0A%09%09%09%09%09%09%09for%20%28%20code%20in%20map%20%29%20%7B%0A%09%09%09%09%09%09%09%09statusCode%5B%20code%20%5D%20%3D%20%5B%20statusCode%5B%20code%20%5D%2C%20map%5B%20code%20%5D%20%5D%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Cancel%20the%20request%0A%09%09%09%09abort%3A%20function%28%20statusText%20%29%20%7B%0A%09%09%09%09%09var%20finalText%20%3D%20statusText%20%7C%7C%20strAbort%3B%0A%09%09%09%09%09if%20%28%20transport%20%29%20%7B%0A%09%09%09%09%09%09transport.abort%28%20finalText%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09done%28%200%2C%20finalText%20%29%3B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%0A%09%09//%20Attach%20deferreds%0A%09%09deferred.promise%28%20jqXHR%20%29%3B%0A%0A%09%09//%20Add%20protocol%20if%20not%20provided%20%28prefilters%20might%20expect%20it%29%0A%09%09//%20Handle%20falsy%20url%20in%20the%20settings%20object%20%28%2310093%3A%20consistency%20with%20old%20signature%29%0A%09%09//%20We%20also%20use%20the%20url%20parameter%20if%20available%0A%09%09s.url%20%3D%20%28%20%28%20url%20%7C%7C%20s.url%20%7C%7C%20location.href%20%29%20%2B%20%22%22%20%29%0A%09%09%09.replace%28%20rprotocol%2C%20location.protocol%20%2B%20%22//%22%20%29%3B%0A%0A%09%09//%20Alias%20method%20option%20to%20type%20as%20per%20ticket%20%2312004%0A%09%09s.type%20%3D%20options.method%20%7C%7C%20options.type%20%7C%7C%20s.method%20%7C%7C%20s.type%3B%0A%0A%09%09//%20Extract%20dataTypes%20list%0A%09%09s.dataTypes%20%3D%20%28%20s.dataType%20%7C%7C%20%22%2A%22%20%29.toLowerCase%28%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%0A%09%09//%20A%20cross-domain%20request%20is%20in%20order%20when%20the%20origin%20doesn%27t%20match%20the%20current%20origin.%0A%09%09if%20%28%20s.crossDomain%20%3D%3D%20null%20%29%20%7B%0A%09%09%09urlAnchor%20%3D%20document.createElement%28%20%22a%22%20%29%3B%0A%0A%09%09%09//%20Support%3A%20IE%20%3C%3D8%20-%2011%2C%20Edge%2012%20-%2015%0A%09%09%09//%20IE%20throws%20exception%20on%20accessing%20the%20href%20property%20if%20url%20is%20malformed%2C%0A%09%09%09//%20e.g.%20http%3A//example.com%3A80x/%0A%09%09%09try%20%7B%0A%09%09%09%09urlAnchor.href%20%3D%20s.url%3B%0A%0A%09%09%09%09//%20Support%3A%20IE%20%3C%3D8%20-%2011%20only%0A%09%09%09%09//%20Anchor%27s%20host%20property%20isn%27t%20correctly%20set%20when%20s.url%20is%20relative%0A%09%09%09%09urlAnchor.href%20%3D%20urlAnchor.href%3B%0A%09%09%09%09s.crossDomain%20%3D%20originAnchor.protocol%20%2B%20%22//%22%20%2B%20originAnchor.host%20%21%3D%3D%0A%09%09%09%09%09urlAnchor.protocol%20%2B%20%22//%22%20%2B%20urlAnchor.host%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20If%20there%20is%20an%20error%20parsing%20the%20URL%2C%20assume%20it%20is%20crossDomain%2C%0A%09%09%09%09//%20it%20can%20be%20rejected%20by%20the%20transport%20if%20it%20is%20invalid%0A%09%09%09%09s.crossDomain%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Convert%20data%20if%20not%20already%20a%20string%0A%09%09if%20%28%20s.data%20%26%26%20s.processData%20%26%26%20typeof%20s.data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09s.data%20%3D%20jQuery.param%28%20s.data%2C%20s.traditional%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20prefilters%0A%09%09inspectPrefiltersOrTransports%28%20prefilters%2C%20s%2C%20options%2C%20jqXHR%20%29%3B%0A%0A%09%09//%20If%20request%20was%20aborted%20inside%20a%20prefilter%2C%20stop%20there%0A%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09return%20jqXHR%3B%0A%09%09%7D%0A%0A%09%09//%20We%20can%20fire%20global%20events%20as%20of%20now%20if%20asked%20to%0A%09%09//%20Don%27t%20fire%20events%20if%20jQuery.event%20is%20undefined%20in%20an%20AMD-usage%20scenario%20%28%2315118%29%0A%09%09fireGlobals%20%3D%20jQuery.event%20%26%26%20s.global%3B%0A%0A%09%09//%20Watch%20for%20a%20new%20set%20of%20requests%0A%09%09if%20%28%20fireGlobals%20%26%26%20jQuery.active%2B%2B%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09jQuery.event.trigger%28%20%22ajaxStart%22%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Uppercase%20the%20type%0A%09%09s.type%20%3D%20s.type.toUpperCase%28%29%3B%0A%0A%09%09//%20Determine%20if%20request%20has%20content%0A%09%09s.hasContent%20%3D%20%21rnoContent.test%28%20s.type%20%29%3B%0A%0A%09%09//%20Save%20the%20URL%20in%20case%20we%27re%20toying%20with%20the%20If-Modified-Since%0A%09%09//%20and/or%20If-None-Match%20header%20later%20on%0A%09%09//%20Remove%20hash%20to%20simplify%20url%20manipulation%0A%09%09cacheURL%20%3D%20s.url.replace%28%20rhash%2C%20%22%22%20%29%3B%0A%0A%09%09//%20More%20options%20handling%20for%20requests%20with%20no%20content%0A%09%09if%20%28%20%21s.hasContent%20%29%20%7B%0A%0A%09%09%09//%20Remember%20the%20hash%20so%20we%20can%20put%20it%20back%0A%09%09%09uncached%20%3D%20s.url.slice%28%20cacheURL.length%20%29%3B%0A%0A%09%09%09//%20If%20data%20is%20available%20and%20should%20be%20processed%2C%20append%20data%20to%20url%0A%09%09%09if%20%28%20s.data%20%26%26%20%28%20s.processData%20%7C%7C%20typeof%20s.data%20%3D%3D%3D%20%22string%22%20%29%20%29%20%7B%0A%09%09%09%09cacheURL%20%2B%3D%20%28%20rquery.test%28%20cacheURL%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20s.data%3B%0A%0A%09%09%09%09//%20%239682%3A%20remove%20data%20so%20that%20it%27s%20not%20used%20in%20an%20eventual%20retry%0A%09%09%09%09delete%20s.data%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20or%20update%20anti-cache%20param%20if%20needed%0A%09%09%09if%20%28%20s.cache%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09cacheURL%20%3D%20cacheURL.replace%28%20rantiCache%2C%20%22%241%22%20%29%3B%0A%09%09%09%09uncached%20%3D%20%28%20rquery.test%28%20cacheURL%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20%22_%3D%22%20%2B%20%28%20nonce.guid%2B%2B%20%29%20%2B%0A%09%09%09%09%09uncached%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Put%20hash%20and%20anti-cache%20on%20the%20URL%20that%20will%20be%20requested%20%28gh-1732%29%0A%09%09%09s.url%20%3D%20cacheURL%20%2B%20uncached%3B%0A%0A%09%09//%20Change%20%27%2520%27%20to%20%27%2B%27%20if%20this%20is%20encoded%20form%20body%20content%20%28gh-2658%29%0A%09%09%7D%20else%20if%20%28%20s.data%20%26%26%20s.processData%20%26%26%0A%09%09%09%28%20s.contentType%20%7C%7C%20%22%22%20%29.indexOf%28%20%22application/x-www-form-urlencoded%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09s.data%20%3D%20s.data.replace%28%20r20%2C%20%22%2B%22%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20If-Modified-Since%20and/or%20If-None-Match%20header%2C%20if%20in%20ifModified%20mode.%0A%09%09if%20%28%20s.ifModified%20%29%20%7B%0A%09%09%09if%20%28%20jQuery.lastModified%5B%20cacheURL%20%5D%20%29%20%7B%0A%09%09%09%09jqXHR.setRequestHeader%28%20%22If-Modified-Since%22%2C%20jQuery.lastModified%5B%20cacheURL%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20jQuery.etag%5B%20cacheURL%20%5D%20%29%20%7B%0A%09%09%09%09jqXHR.setRequestHeader%28%20%22If-None-Match%22%2C%20jQuery.etag%5B%20cacheURL%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20correct%20header%2C%20if%20data%20is%20being%20sent%0A%09%09if%20%28%20s.data%20%26%26%20s.hasContent%20%26%26%20s.contentType%20%21%3D%3D%20false%20%7C%7C%20options.contentType%20%29%20%7B%0A%09%09%09jqXHR.setRequestHeader%28%20%22Content-Type%22%2C%20s.contentType%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20Accepts%20header%20for%20the%20server%2C%20depending%20on%20the%20dataType%0A%09%09jqXHR.setRequestHeader%28%0A%09%09%09%22Accept%22%2C%0A%09%09%09s.dataTypes%5B%200%20%5D%20%26%26%20s.accepts%5B%20s.dataTypes%5B%200%20%5D%20%5D%20%3F%0A%09%09%09%09s.accepts%5B%20s.dataTypes%5B%200%20%5D%20%5D%20%2B%0A%09%09%09%09%09%28%20s.dataTypes%5B%200%20%5D%20%21%3D%3D%20%22%2A%22%20%3F%20%22%2C%20%22%20%2B%20allTypes%20%2B%20%22%3B%20q%3D0.01%22%20%3A%20%22%22%20%29%20%3A%0A%09%09%09%09s.accepts%5B%20%22%2A%22%20%5D%0A%09%09%29%3B%0A%0A%09%09//%20Check%20for%20headers%20option%0A%09%09for%20%28%20i%20in%20s.headers%20%29%20%7B%0A%09%09%09jqXHR.setRequestHeader%28%20i%2C%20s.headers%5B%20i%20%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Allow%20custom%20headers/mimetypes%20and%20early%20abort%0A%09%09if%20%28%20s.beforeSend%20%26%26%0A%09%09%09%28%20s.beforeSend.call%28%20callbackContext%2C%20jqXHR%2C%20s%20%29%20%3D%3D%3D%20false%20%7C%7C%20completed%20%29%20%29%20%7B%0A%0A%09%09%09//%20Abort%20if%20not%20done%20already%20and%20return%0A%09%09%09return%20jqXHR.abort%28%29%3B%0A%09%09%7D%0A%0A%09%09//%20Aborting%20is%20no%20longer%20a%20cancellation%0A%09%09strAbort%20%3D%20%22abort%22%3B%0A%0A%09%09//%20Install%20callbacks%20on%20deferreds%0A%09%09completeDeferred.add%28%20s.complete%20%29%3B%0A%09%09jqXHR.done%28%20s.success%20%29%3B%0A%09%09jqXHR.fail%28%20s.error%20%29%3B%0A%0A%09%09//%20Get%20transport%0A%09%09transport%20%3D%20inspectPrefiltersOrTransports%28%20transports%2C%20s%2C%20options%2C%20jqXHR%20%29%3B%0A%0A%09%09//%20If%20no%20transport%2C%20we%20auto-abort%0A%09%09if%20%28%20%21transport%20%29%20%7B%0A%09%09%09done%28%20-1%2C%20%22No%20Transport%22%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09jqXHR.readyState%20%3D%201%3B%0A%0A%09%09%09//%20Send%20global%20event%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20%22ajaxSend%22%2C%20%5B%20jqXHR%2C%20s%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20request%20was%20aborted%20inside%20ajaxSend%2C%20stop%20there%0A%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09return%20jqXHR%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Timeout%0A%09%09%09if%20%28%20s.async%20%26%26%20s.timeout%20%3E%200%20%29%20%7B%0A%09%09%09%09timeoutTimer%20%3D%20window.setTimeout%28%20function%28%29%20%7B%0A%09%09%09%09%09jqXHR.abort%28%20%22timeout%22%20%29%3B%0A%09%09%09%09%7D%2C%20s.timeout%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09try%20%7B%0A%09%09%09%09completed%20%3D%20false%3B%0A%09%09%09%09transport.send%28%20requestHeaders%2C%20done%20%29%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20Rethrow%20post-completion%20exceptions%0A%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09%09throw%20e%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Propagate%20others%20as%20results%0A%09%09%09%09done%28%20-1%2C%20e%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Callback%20for%20when%20everything%20is%20done%0A%09%09function%20done%28%20status%2C%20nativeStatusText%2C%20responses%2C%20headers%20%29%20%7B%0A%09%09%09var%20isSuccess%2C%20success%2C%20error%2C%20response%2C%20modified%2C%0A%09%09%09%09statusText%20%3D%20nativeStatusText%3B%0A%0A%09%09%09//%20Ignore%20repeat%20invocations%0A%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09completed%20%3D%20true%3B%0A%0A%09%09%09//%20Clear%20timeout%20if%20it%20exists%0A%09%09%09if%20%28%20timeoutTimer%20%29%20%7B%0A%09%09%09%09window.clearTimeout%28%20timeoutTimer%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Dereference%20transport%20for%20early%20garbage%20collection%0A%09%09%09//%20%28no%20matter%20how%20long%20the%20jqXHR%20object%20will%20be%20used%29%0A%09%09%09transport%20%3D%20undefined%3B%0A%0A%09%09%09//%20Cache%20response%20headers%0A%09%09%09responseHeadersString%20%3D%20headers%20%7C%7C%20%22%22%3B%0A%0A%09%09%09//%20Set%20readyState%0A%09%09%09jqXHR.readyState%20%3D%20status%20%3E%200%20%3F%204%20%3A%200%3B%0A%0A%09%09%09//%20Determine%20if%20successful%0A%09%09%09isSuccess%20%3D%20status%20%3E%3D%20200%20%26%26%20status%20%3C%20300%20%7C%7C%20status%20%3D%3D%3D%20304%3B%0A%0A%09%09%09//%20Get%20response%20data%0A%09%09%09if%20%28%20responses%20%29%20%7B%0A%09%09%09%09response%20%3D%20ajaxHandleResponses%28%20s%2C%20jqXHR%2C%20responses%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Use%20a%20noop%20converter%20for%20missing%20script%0A%09%09%09if%20%28%20%21isSuccess%20%26%26%20jQuery.inArray%28%20%22script%22%2C%20s.dataTypes%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09s.converters%5B%20%22text%20script%22%20%5D%20%3D%20function%28%29%20%7B%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Convert%20no%20matter%20what%20%28that%20way%20responseXXX%20fields%20are%20always%20set%29%0A%09%09%09response%20%3D%20ajaxConvert%28%20s%2C%20response%2C%20jqXHR%2C%20isSuccess%20%29%3B%0A%0A%09%09%09//%20If%20successful%2C%20handle%20type%20chaining%0A%09%09%09if%20%28%20isSuccess%20%29%20%7B%0A%0A%09%09%09%09//%20Set%20the%20If-Modified-Since%20and/or%20If-None-Match%20header%2C%20if%20in%20ifModified%20mode.%0A%09%09%09%09if%20%28%20s.ifModified%20%29%20%7B%0A%09%09%09%09%09modified%20%3D%20jqXHR.getResponseHeader%28%20%22Last-Modified%22%20%29%3B%0A%09%09%09%09%09if%20%28%20modified%20%29%20%7B%0A%09%09%09%09%09%09jQuery.lastModified%5B%20cacheURL%20%5D%20%3D%20modified%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09modified%20%3D%20jqXHR.getResponseHeader%28%20%22etag%22%20%29%3B%0A%09%09%09%09%09if%20%28%20modified%20%29%20%7B%0A%09%09%09%09%09%09jQuery.etag%5B%20cacheURL%20%5D%20%3D%20modified%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20if%20no%20content%0A%09%09%09%09if%20%28%20status%20%3D%3D%3D%20204%20%7C%7C%20s.type%20%3D%3D%3D%20%22HEAD%22%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22nocontent%22%3B%0A%0A%09%09%09%09//%20if%20not%20modified%0A%09%09%09%09%7D%20else%20if%20%28%20status%20%3D%3D%3D%20304%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22notmodified%22%3B%0A%0A%09%09%09%09//%20If%20we%20have%20data%2C%20let%27s%20convert%20it%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09statusText%20%3D%20response.state%3B%0A%09%09%09%09%09success%20%3D%20response.data%3B%0A%09%09%09%09%09error%20%3D%20response.error%3B%0A%09%09%09%09%09isSuccess%20%3D%20%21error%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Extract%20error%20from%20statusText%20and%20normalize%20for%20non-aborts%0A%09%09%09%09error%20%3D%20statusText%3B%0A%09%09%09%09if%20%28%20status%20%7C%7C%20%21statusText%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22error%22%3B%0A%09%09%09%09%09if%20%28%20status%20%3C%200%20%29%20%7B%0A%09%09%09%09%09%09status%20%3D%200%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Set%20data%20for%20the%20fake%20xhr%20object%0A%09%09%09jqXHR.status%20%3D%20status%3B%0A%09%09%09jqXHR.statusText%20%3D%20%28%20nativeStatusText%20%7C%7C%20statusText%20%29%20%2B%20%22%22%3B%0A%0A%09%09%09//%20Success/Error%0A%09%09%09if%20%28%20isSuccess%20%29%20%7B%0A%09%09%09%09deferred.resolveWith%28%20callbackContext%2C%20%5B%20success%2C%20statusText%2C%20jqXHR%20%5D%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09deferred.rejectWith%28%20callbackContext%2C%20%5B%20jqXHR%2C%20statusText%2C%20error%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09jqXHR.statusCode%28%20statusCode%20%29%3B%0A%09%09%09statusCode%20%3D%20undefined%3B%0A%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20isSuccess%20%3F%20%22ajaxSuccess%22%20%3A%20%22ajaxError%22%2C%0A%09%09%09%09%09%5B%20jqXHR%2C%20s%2C%20isSuccess%20%3F%20success%20%3A%20error%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Complete%0A%09%09%09completeDeferred.fireWith%28%20callbackContext%2C%20%5B%20jqXHR%2C%20statusText%20%5D%20%29%3B%0A%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20%22ajaxComplete%22%2C%20%5B%20jqXHR%2C%20s%20%5D%20%29%3B%0A%0A%09%09%09%09//%20Handle%20the%20global%20AJAX%20counter%0A%09%09%09%09if%20%28%20%21%28%20--jQuery.active%20%29%20%29%20%7B%0A%09%09%09%09%09jQuery.event.trigger%28%20%22ajaxStop%22%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20jqXHR%3B%0A%09%7D%2C%0A%0A%09getJSON%3A%20function%28%20url%2C%20data%2C%20callback%20%29%20%7B%0A%09%09return%20jQuery.get%28%20url%2C%20data%2C%20callback%2C%20%22json%22%20%29%3B%0A%09%7D%2C%0A%0A%09getScript%3A%20function%28%20url%2C%20callback%20%29%20%7B%0A%09%09return%20jQuery.get%28%20url%2C%20undefined%2C%20callback%2C%20%22script%22%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22get%22%2C%20%22post%22%20%5D%2C%20function%28%20_i%2C%20method%20%29%20%7B%0A%09jQuery%5B%20method%20%5D%20%3D%20function%28%20url%2C%20data%2C%20callback%2C%20type%20%29%20%7B%0A%0A%09%09//%20Shift%20arguments%20if%20data%20argument%20was%20omitted%0A%09%09if%20%28%20isFunction%28%20data%20%29%20%29%20%7B%0A%09%09%09type%20%3D%20type%20%7C%7C%20callback%3B%0A%09%09%09callback%20%3D%20data%3B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%0A%0A%09%09//%20The%20url%20can%20be%20an%20options%20object%20%28which%20then%20must%20have%20.url%29%0A%09%09return%20jQuery.ajax%28%20jQuery.extend%28%20%7B%0A%09%09%09url%3A%20url%2C%0A%09%09%09type%3A%20method%2C%0A%09%09%09dataType%3A%20type%2C%0A%09%09%09data%3A%20data%2C%0A%09%09%09success%3A%20callback%0A%09%09%7D%2C%20jQuery.isPlainObject%28%20url%20%29%20%26%26%20url%20%29%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.ajaxPrefilter%28%20function%28%20s%20%29%20%7B%0A%09var%20i%3B%0A%09for%20%28%20i%20in%20s.headers%20%29%20%7B%0A%09%09if%20%28%20i.toLowerCase%28%29%20%3D%3D%3D%20%22content-type%22%20%29%20%7B%0A%09%09%09s.contentType%20%3D%20s.headers%5B%20i%20%5D%20%7C%7C%20%22%22%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery._evalUrl%20%3D%20function%28%20url%2C%20options%2C%20doc%20%29%20%7B%0A%09return%20jQuery.ajax%28%20%7B%0A%09%09url%3A%20url%2C%0A%0A%09%09//%20Make%20this%20explicit%2C%20since%20user%20can%20override%20this%20through%20ajaxSetup%20%28%2311264%29%0A%09%09type%3A%20%22GET%22%2C%0A%09%09dataType%3A%20%22script%22%2C%0A%09%09cache%3A%20true%2C%0A%09%09async%3A%20false%2C%0A%09%09global%3A%20false%2C%0A%0A%09%09//%20Only%20evaluate%20the%20response%20if%20it%20is%20successful%20%28gh-4126%29%0A%09%09//%20dataFilter%20is%20not%20invoked%20for%20failure%20responses%2C%20so%20using%20it%20instead%0A%09%09//%20of%20the%20default%20converter%20is%20kludgy%20but%20it%20works.%0A%09%09converters%3A%20%7B%0A%09%09%09%22text%20script%22%3A%20function%28%29%20%7B%7D%0A%09%09%7D%2C%0A%09%09dataFilter%3A%20function%28%20response%20%29%20%7B%0A%09%09%09jQuery.globalEval%28%20response%2C%20options%2C%20doc%20%29%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0AjQuery.fn.extend%28%20%7B%0A%09wrapAll%3A%20function%28%20html%20%29%20%7B%0A%09%09var%20wrap%3B%0A%0A%09%09if%20%28%20this%5B%200%20%5D%20%29%20%7B%0A%09%09%09if%20%28%20isFunction%28%20html%20%29%20%29%20%7B%0A%09%09%09%09html%20%3D%20html.call%28%20this%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20The%20elements%20to%20wrap%20the%20target%20around%0A%09%09%09wrap%20%3D%20jQuery%28%20html%2C%20this%5B%200%20%5D.ownerDocument%20%29.eq%28%200%20%29.clone%28%20true%20%29%3B%0A%0A%09%09%09if%20%28%20this%5B%200%20%5D.parentNode%20%29%20%7B%0A%09%09%09%09wrap.insertBefore%28%20this%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09wrap.map%28%20function%28%29%20%7B%0A%09%09%09%09var%20elem%20%3D%20this%3B%0A%0A%09%09%09%09while%20%28%20elem.firstElementChild%20%29%20%7B%0A%09%09%09%09%09elem%20%3D%20elem.firstElementChild%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20elem%3B%0A%09%09%09%7D%20%29.append%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09wrapInner%3A%20function%28%20html%20%29%20%7B%0A%09%09if%20%28%20isFunction%28%20html%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.wrapInner%28%20html.call%28%20this%2C%20i%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20self%20%3D%20jQuery%28%20this%20%29%2C%0A%09%09%09%09contents%20%3D%20self.contents%28%29%3B%0A%0A%09%09%09if%20%28%20contents.length%20%29%20%7B%0A%09%09%09%09contents.wrapAll%28%20html%20%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09self.append%28%20html%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09wrap%3A%20function%28%20html%20%29%20%7B%0A%09%09var%20htmlIsFunction%20%3D%20isFunction%28%20html%20%29%3B%0A%0A%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09jQuery%28%20this%20%29.wrapAll%28%20htmlIsFunction%20%3F%20html.call%28%20this%2C%20i%20%29%20%3A%20html%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09unwrap%3A%20function%28%20selector%20%29%20%7B%0A%09%09this.parent%28%20selector%20%29.not%28%20%22body%22%20%29.each%28%20function%28%29%20%7B%0A%09%09%09jQuery%28%20this%20%29.replaceWith%28%20this.childNodes%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%09return%20this%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery.expr.pseudos.hidden%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20%21jQuery.expr.pseudos.visible%28%20elem%20%29%3B%0A%7D%3B%0AjQuery.expr.pseudos.visible%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20%21%21%28%20elem.offsetWidth%20%7C%7C%20elem.offsetHeight%20%7C%7C%20elem.getClientRects%28%29.length%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.ajaxSettings.xhr%20%3D%20function%28%29%20%7B%0A%09try%20%7B%0A%09%09return%20new%20window.XMLHttpRequest%28%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%7D%3B%0A%0Avar%20xhrSuccessStatus%20%3D%20%7B%0A%0A%09%09//%20File%20protocol%20always%20yields%20status%20code%200%2C%20assume%20200%0A%09%090%3A%20200%2C%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09//%20%231450%3A%20sometimes%20IE%20returns%201223%20when%20it%20should%20be%20204%0A%09%091223%3A%20204%0A%09%7D%2C%0A%09xhrSupported%20%3D%20jQuery.ajaxSettings.xhr%28%29%3B%0A%0Asupport.cors%20%3D%20%21%21xhrSupported%20%26%26%20%28%20%22withCredentials%22%20in%20xhrSupported%20%29%3B%0Asupport.ajax%20%3D%20xhrSupported%20%3D%20%21%21xhrSupported%3B%0A%0AjQuery.ajaxTransport%28%20function%28%20options%20%29%20%7B%0A%09var%20callback%2C%20errorCallback%3B%0A%0A%09//%20Cross%20domain%20only%20allowed%20if%20supported%20through%20XMLHttpRequest%0A%09if%20%28%20support.cors%20%7C%7C%20xhrSupported%20%26%26%20%21options.crossDomain%20%29%20%7B%0A%09%09return%20%7B%0A%09%09%09send%3A%20function%28%20headers%2C%20complete%20%29%20%7B%0A%09%09%09%09var%20i%2C%0A%09%09%09%09%09xhr%20%3D%20options.xhr%28%29%3B%0A%0A%09%09%09%09xhr.open%28%0A%09%09%09%09%09options.type%2C%0A%09%09%09%09%09options.url%2C%0A%09%09%09%09%09options.async%2C%0A%09%09%09%09%09options.username%2C%0A%09%09%09%09%09options.password%0A%09%09%09%09%29%3B%0A%0A%09%09%09%09//%20Apply%20custom%20fields%20if%20provided%0A%09%09%09%09if%20%28%20options.xhrFields%20%29%20%7B%0A%09%09%09%09%09for%20%28%20i%20in%20options.xhrFields%20%29%20%7B%0A%09%09%09%09%09%09xhr%5B%20i%20%5D%20%3D%20options.xhrFields%5B%20i%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Override%20mime%20type%20if%20needed%0A%09%09%09%09if%20%28%20options.mimeType%20%26%26%20xhr.overrideMimeType%20%29%20%7B%0A%09%09%09%09%09xhr.overrideMimeType%28%20options.mimeType%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20X-Requested-With%20header%0A%09%09%09%09//%20For%20cross-domain%20requests%2C%20seeing%20as%20conditions%20for%20a%20preflight%20are%0A%09%09%09%09//%20akin%20to%20a%20jigsaw%20puzzle%2C%20we%20simply%20never%20set%20it%20to%20be%20sure.%0A%09%09%09%09//%20%28it%20can%20always%20be%20set%20on%20a%20per-request%20basis%20or%20even%20using%20ajaxSetup%29%0A%09%09%09%09//%20For%20same-domain%20requests%2C%20won%27t%20change%20header%20if%20already%20provided.%0A%09%09%09%09if%20%28%20%21options.crossDomain%20%26%26%20%21headers%5B%20%22X-Requested-With%22%20%5D%20%29%20%7B%0A%09%09%09%09%09headers%5B%20%22X-Requested-With%22%20%5D%20%3D%20%22XMLHttpRequest%22%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Set%20headers%0A%09%09%09%09for%20%28%20i%20in%20headers%20%29%20%7B%0A%09%09%09%09%09xhr.setRequestHeader%28%20i%2C%20headers%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Callback%0A%09%09%09%09callback%20%3D%20function%28%20type%20%29%20%7B%0A%09%09%09%09%09return%20function%28%29%20%7B%0A%09%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09%09callback%20%3D%20errorCallback%20%3D%20xhr.onload%20%3D%0A%09%09%09%09%09%09%09%09xhr.onerror%20%3D%20xhr.onabort%20%3D%20xhr.ontimeout%20%3D%0A%09%09%09%09%09%09%09%09%09xhr.onreadystatechange%20%3D%20null%3B%0A%0A%09%09%09%09%09%09%09if%20%28%20type%20%3D%3D%3D%20%22abort%22%20%29%20%7B%0A%09%09%09%09%09%09%09%09xhr.abort%28%29%3B%0A%09%09%09%09%09%09%09%7D%20else%20if%20%28%20type%20%3D%3D%3D%20%22error%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09%09%09%09//%20On%20a%20manual%20native%20abort%2C%20IE9%20throws%0A%09%09%09%09%09%09%09%09//%20errors%20on%20any%20property%20access%20that%20is%20not%20readyState%0A%09%09%09%09%09%09%09%09if%20%28%20typeof%20xhr.status%20%21%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09complete%28%200%2C%20%22error%22%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09%09complete%28%0A%0A%09%09%09%09%09%09%09%09%09%09//%20File%3A%20protocol%20always%20yields%20status%200%3B%20see%20%238605%2C%20%2314207%0A%09%09%09%09%09%09%09%09%09%09xhr.status%2C%0A%09%09%09%09%09%09%09%09%09%09xhr.statusText%0A%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09complete%28%0A%09%09%09%09%09%09%09%09%09xhrSuccessStatus%5B%20xhr.status%20%5D%20%7C%7C%20xhr.status%2C%0A%09%09%09%09%09%09%09%09%09xhr.statusText%2C%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09%09%09%09%09//%20IE9%20has%20no%20XHR2%20but%20throws%20on%20binary%20%28trac-11426%29%0A%09%09%09%09%09%09%09%09%09//%20For%20XHR2%20non-text%2C%20let%20the%20caller%20handle%20it%20%28gh-2498%29%0A%09%09%09%09%09%09%09%09%09%28%20xhr.responseType%20%7C%7C%20%22text%22%20%29%20%21%3D%3D%20%22text%22%20%20%7C%7C%0A%09%09%09%09%09%09%09%09%09typeof%20xhr.responseText%20%21%3D%3D%20%22string%22%20%3F%0A%09%09%09%09%09%09%09%09%09%09%7B%20binary%3A%20xhr.response%20%7D%20%3A%0A%09%09%09%09%09%09%09%09%09%09%7B%20text%3A%20xhr.responseText%20%7D%2C%0A%09%09%09%09%09%09%09%09%09xhr.getAllResponseHeaders%28%29%0A%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%7D%3B%0A%0A%09%09%09%09//%20Listen%20to%20events%0A%09%09%09%09xhr.onload%20%3D%20callback%28%29%3B%0A%09%09%09%09errorCallback%20%3D%20xhr.onerror%20%3D%20xhr.ontimeout%20%3D%20callback%28%20%22error%22%20%29%3B%0A%0A%09%09%09%09//%20Support%3A%20IE%209%20only%0A%09%09%09%09//%20Use%20onreadystatechange%20to%20replace%20onabort%0A%09%09%09%09//%20to%20handle%20uncaught%20aborts%0A%09%09%09%09if%20%28%20xhr.onabort%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09xhr.onabort%20%3D%20errorCallback%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09xhr.onreadystatechange%20%3D%20function%28%29%20%7B%0A%0A%09%09%09%09%09%09//%20Check%20readyState%20before%20timeout%20as%20it%20changes%0A%09%09%09%09%09%09if%20%28%20xhr.readyState%20%3D%3D%3D%204%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Allow%20onerror%20to%20be%20called%20first%2C%0A%09%09%09%09%09%09%09//%20but%20that%20will%20not%20handle%20a%20native%20abort%0A%09%09%09%09%09%09%09//%20Also%2C%20save%20errorCallback%20to%20a%20variable%0A%09%09%09%09%09%09%09//%20as%20xhr.onerror%20cannot%20be%20accessed%0A%09%09%09%09%09%09%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09errorCallback%28%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Create%20the%20abort%20callback%0A%09%09%09%09callback%20%3D%20callback%28%20%22abort%22%20%29%3B%0A%0A%09%09%09%09try%20%7B%0A%0A%09%09%09%09%09//%20Do%20send%20the%20request%20%28this%20may%20raise%20an%20exception%29%0A%09%09%09%09%09xhr.send%28%20options.hasContent%20%26%26%20options.data%20%7C%7C%20null%20%29%3B%0A%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09%09//%20%2314683%3A%20Only%20rethrow%20if%20this%20hasn%27t%20been%20notified%20as%20an%20error%20yet%0A%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09throw%20e%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%0A%09%09%09abort%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09callback%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Prevent%20auto-execution%20of%20scripts%20when%20no%20explicit%20dataType%20was%20provided%20%28See%20gh-2432%29%0AjQuery.ajaxPrefilter%28%20function%28%20s%20%29%20%7B%0A%09if%20%28%20s.crossDomain%20%29%20%7B%0A%09%09s.contents.script%20%3D%20false%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Install%20script%20dataType%0AjQuery.ajaxSetup%28%20%7B%0A%09accepts%3A%20%7B%0A%09%09script%3A%20%22text/javascript%2C%20application/javascript%2C%20%22%20%2B%0A%09%09%09%22application/ecmascript%2C%20application/x-ecmascript%22%0A%09%7D%2C%0A%09contents%3A%20%7B%0A%09%09script%3A%20/%5Cb%28%3F%3Ajava%7Cecma%29script%5Cb/%0A%09%7D%2C%0A%09converters%3A%20%7B%0A%09%09%22text%20script%22%3A%20function%28%20text%20%29%20%7B%0A%09%09%09jQuery.globalEval%28%20text%20%29%3B%0A%09%09%09return%20text%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Handle%20cache%27s%20special%20case%20and%20crossDomain%0AjQuery.ajaxPrefilter%28%20%22script%22%2C%20function%28%20s%20%29%20%7B%0A%09if%20%28%20s.cache%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09s.cache%20%3D%20false%3B%0A%09%7D%0A%09if%20%28%20s.crossDomain%20%29%20%7B%0A%09%09s.type%20%3D%20%22GET%22%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Bind%20script%20tag%20hack%20transport%0AjQuery.ajaxTransport%28%20%22script%22%2C%20function%28%20s%20%29%20%7B%0A%0A%09//%20This%20transport%20only%20deals%20with%20cross%20domain%20or%20forced-by-attrs%20requests%0A%09if%20%28%20s.crossDomain%20%7C%7C%20s.scriptAttrs%20%29%20%7B%0A%09%09var%20script%2C%20callback%3B%0A%09%09return%20%7B%0A%09%09%09send%3A%20function%28%20_%2C%20complete%20%29%20%7B%0A%09%09%09%09script%20%3D%20jQuery%28%20%22%3Cscript%3E%22%20%29%0A%09%09%09%09%09.attr%28%20s.scriptAttrs%20%7C%7C%20%7B%7D%20%29%0A%09%09%09%09%09.prop%28%20%7B%20charset%3A%20s.scriptCharset%2C%20src%3A%20s.url%20%7D%20%29%0A%09%09%09%09%09.on%28%20%22load%20error%22%2C%20callback%20%3D%20function%28%20evt%20%29%20%7B%0A%09%09%09%09%09%09script.remove%28%29%3B%0A%09%09%09%09%09%09callback%20%3D%20null%3B%0A%09%09%09%09%09%09if%20%28%20evt%20%29%20%7B%0A%09%09%09%09%09%09%09complete%28%20evt.type%20%3D%3D%3D%20%22error%22%20%3F%20404%20%3A%20200%2C%20evt.type%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%20%29%3B%0A%0A%09%09%09%09//%20Use%20native%20DOM%20manipulation%20to%20avoid%20our%20domManip%20AJAX%20trickery%0A%09%09%09%09document.head.appendChild%28%20script%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%2C%0A%09%09%09abort%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09callback%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20oldCallbacks%20%3D%20%5B%5D%2C%0A%09rjsonp%20%3D%20/%28%3D%29%5C%3F%28%3F%3D%26%7C%24%29%7C%5C%3F%5C%3F/%3B%0A%0A//%20Default%20jsonp%20settings%0AjQuery.ajaxSetup%28%20%7B%0A%09jsonp%3A%20%22callback%22%2C%0A%09jsonpCallback%3A%20function%28%29%20%7B%0A%09%09var%20callback%20%3D%20oldCallbacks.pop%28%29%20%7C%7C%20%28%20jQuery.expando%20%2B%20%22_%22%20%2B%20%28%20nonce.guid%2B%2B%20%29%20%29%3B%0A%09%09this%5B%20callback%20%5D%20%3D%20true%3B%0A%09%09return%20callback%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Detect%2C%20normalize%20options%20and%20install%20callbacks%20for%20jsonp%20requests%0AjQuery.ajaxPrefilter%28%20%22json%20jsonp%22%2C%20function%28%20s%2C%20originalSettings%2C%20jqXHR%20%29%20%7B%0A%0A%09var%20callbackName%2C%20overwritten%2C%20responseContainer%2C%0A%09%09jsonProp%20%3D%20s.jsonp%20%21%3D%3D%20false%20%26%26%20%28%20rjsonp.test%28%20s.url%20%29%20%3F%0A%09%09%09%22url%22%20%3A%0A%09%09%09typeof%20s.data%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%28%20s.contentType%20%7C%7C%20%22%22%20%29%0A%09%09%09%09%09.indexOf%28%20%22application/x-www-form-urlencoded%22%20%29%20%3D%3D%3D%200%20%26%26%0A%09%09%09%09rjsonp.test%28%20s.data%20%29%20%26%26%20%22data%22%0A%09%09%29%3B%0A%0A%09//%20Handle%20iff%20the%20expected%20data%20type%20is%20%22jsonp%22%20or%20we%20have%20a%20parameter%20to%20set%0A%09if%20%28%20jsonProp%20%7C%7C%20s.dataTypes%5B%200%20%5D%20%3D%3D%3D%20%22jsonp%22%20%29%20%7B%0A%0A%09%09//%20Get%20callback%20name%2C%20remembering%20preexisting%20value%20associated%20with%20it%0A%09%09callbackName%20%3D%20s.jsonpCallback%20%3D%20isFunction%28%20s.jsonpCallback%20%29%20%3F%0A%09%09%09s.jsonpCallback%28%29%20%3A%0A%09%09%09s.jsonpCallback%3B%0A%0A%09%09//%20Insert%20callback%20into%20url%20or%20form%20data%0A%09%09if%20%28%20jsonProp%20%29%20%7B%0A%09%09%09s%5B%20jsonProp%20%5D%20%3D%20s%5B%20jsonProp%20%5D.replace%28%20rjsonp%2C%20%22%241%22%20%2B%20callbackName%20%29%3B%0A%09%09%7D%20else%20if%20%28%20s.jsonp%20%21%3D%3D%20false%20%29%20%7B%0A%09%09%09s.url%20%2B%3D%20%28%20rquery.test%28%20s.url%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20s.jsonp%20%2B%20%22%3D%22%20%2B%20callbackName%3B%0A%09%09%7D%0A%0A%09%09//%20Use%20data%20converter%20to%20retrieve%20json%20after%20script%20execution%0A%09%09s.converters%5B%20%22script%20json%22%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09if%20%28%20%21responseContainer%20%29%20%7B%0A%09%09%09%09jQuery.error%28%20callbackName%20%2B%20%22%20was%20not%20called%22%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20responseContainer%5B%200%20%5D%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Force%20json%20dataType%0A%09%09s.dataTypes%5B%200%20%5D%20%3D%20%22json%22%3B%0A%0A%09%09//%20Install%20callback%0A%09%09overwritten%20%3D%20window%5B%20callbackName%20%5D%3B%0A%09%09window%5B%20callbackName%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09responseContainer%20%3D%20arguments%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Clean-up%20function%20%28fires%20after%20converters%29%0A%09%09jqXHR.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20If%20previous%20value%20didn%27t%20exist%20-%20remove%20it%0A%09%09%09if%20%28%20overwritten%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09jQuery%28%20window%20%29.removeProp%28%20callbackName%20%29%3B%0A%0A%09%09%09//%20Otherwise%20restore%20preexisting%20value%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09window%5B%20callbackName%20%5D%20%3D%20overwritten%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Save%20back%20as%20free%0A%09%09%09if%20%28%20s%5B%20callbackName%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Make%20sure%20that%20re-using%20the%20options%20doesn%27t%20screw%20things%20around%0A%09%09%09%09s.jsonpCallback%20%3D%20originalSettings.jsonpCallback%3B%0A%0A%09%09%09%09//%20Save%20the%20callback%20name%20for%20future%20use%0A%09%09%09%09oldCallbacks.push%28%20callbackName%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Call%20if%20it%20was%20a%20function%20and%20we%20have%20a%20response%0A%09%09%09if%20%28%20responseContainer%20%26%26%20isFunction%28%20overwritten%20%29%20%29%20%7B%0A%09%09%09%09overwritten%28%20responseContainer%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09responseContainer%20%3D%20overwritten%20%3D%20undefined%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09//%20Delegate%20to%20script%0A%09%09return%20%22script%22%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Support%3A%20Safari%208%20only%0A//%20In%20Safari%208%20documents%20created%20via%20document.implementation.createHTMLDocument%0A//%20collapse%20sibling%20forms%3A%20the%20second%20one%20becomes%20a%20child%20of%20the%20first%20one.%0A//%20Because%20of%20that%2C%20this%20security%20measure%20has%20to%20be%20disabled%20in%20Safari%208.%0A//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D137337%0Asupport.createHTMLDocument%20%3D%20%28%20function%28%29%20%7B%0A%09var%20body%20%3D%20document.implementation.createHTMLDocument%28%20%22%22%20%29.body%3B%0A%09body.innerHTML%20%3D%20%22%3Cform%3E%3C/form%3E%3Cform%3E%3C/form%3E%22%3B%0A%09return%20body.childNodes.length%20%3D%3D%3D%202%3B%0A%7D%20%29%28%29%3B%0A%0A%0A//%20Argument%20%22data%22%20should%20be%20string%20of%20html%0A//%20context%20%28optional%29%3A%20If%20specified%2C%20the%20fragment%20will%20be%20created%20in%20this%20context%2C%0A//%20defaults%20to%20document%0A//%20keepScripts%20%28optional%29%3A%20If%20true%2C%20will%20include%20scripts%20passed%20in%20the%20html%20string%0AjQuery.parseHTML%20%3D%20function%28%20data%2C%20context%2C%20keepScripts%20%29%20%7B%0A%09if%20%28%20typeof%20data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20%5B%5D%3B%0A%09%7D%0A%09if%20%28%20typeof%20context%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09keepScripts%20%3D%20context%3B%0A%09%09context%20%3D%20false%3B%0A%09%7D%0A%0A%09var%20base%2C%20parsed%2C%20scripts%3B%0A%0A%09if%20%28%20%21context%20%29%20%7B%0A%0A%09%09//%20Stop%20scripts%20or%20inline%20event%20handlers%20from%20being%20executed%20immediately%0A%09%09//%20by%20using%20document.implementation%0A%09%09if%20%28%20support.createHTMLDocument%20%29%20%7B%0A%09%09%09context%20%3D%20document.implementation.createHTMLDocument%28%20%22%22%20%29%3B%0A%0A%09%09%09//%20Set%20the%20base%20href%20for%20the%20created%20document%0A%09%09%09//%20so%20any%20parsed%20elements%20with%20URLs%0A%09%09%09//%20are%20based%20on%20the%20document%27s%20URL%20%28gh-2965%29%0A%09%09%09base%20%3D%20context.createElement%28%20%22base%22%20%29%3B%0A%09%09%09base.href%20%3D%20document.location.href%3B%0A%09%09%09context.head.appendChild%28%20base%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09context%20%3D%20document%3B%0A%09%09%7D%0A%09%7D%0A%0A%09parsed%20%3D%20rsingleTag.exec%28%20data%20%29%3B%0A%09scripts%20%3D%20%21keepScripts%20%26%26%20%5B%5D%3B%0A%0A%09//%20Single%20tag%0A%09if%20%28%20parsed%20%29%20%7B%0A%09%09return%20%5B%20context.createElement%28%20parsed%5B%201%20%5D%20%29%20%5D%3B%0A%09%7D%0A%0A%09parsed%20%3D%20buildFragment%28%20%5B%20data%20%5D%2C%20context%2C%20scripts%20%29%3B%0A%0A%09if%20%28%20scripts%20%26%26%20scripts.length%20%29%20%7B%0A%09%09jQuery%28%20scripts%20%29.remove%28%29%3B%0A%09%7D%0A%0A%09return%20jQuery.merge%28%20%5B%5D%2C%20parsed.childNodes%20%29%3B%0A%7D%3B%0A%0A%0A/%2A%2A%0A%20%2A%20Load%20a%20url%20into%20a%20page%0A%20%2A/%0AjQuery.fn.load%20%3D%20function%28%20url%2C%20params%2C%20callback%20%29%20%7B%0A%09var%20selector%2C%20type%2C%20response%2C%0A%09%09self%20%3D%20this%2C%0A%09%09off%20%3D%20url.indexOf%28%20%22%20%22%20%29%3B%0A%0A%09if%20%28%20off%20%3E%20-1%20%29%20%7B%0A%09%09selector%20%3D%20stripAndCollapse%28%20url.slice%28%20off%20%29%20%29%3B%0A%09%09url%20%3D%20url.slice%28%200%2C%20off%20%29%3B%0A%09%7D%0A%0A%09//%20If%20it%27s%20a%20function%0A%09if%20%28%20isFunction%28%20params%20%29%20%29%20%7B%0A%0A%09%09//%20We%20assume%20that%20it%27s%20the%20callback%0A%09%09callback%20%3D%20params%3B%0A%09%09params%20%3D%20undefined%3B%0A%0A%09//%20Otherwise%2C%20build%20a%20param%20string%0A%09%7D%20else%20if%20%28%20params%20%26%26%20typeof%20params%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09type%20%3D%20%22POST%22%3B%0A%09%7D%0A%0A%09//%20If%20we%20have%20elements%20to%20modify%2C%20make%20the%20request%0A%09if%20%28%20self.length%20%3E%200%20%29%20%7B%0A%09%09jQuery.ajax%28%20%7B%0A%09%09%09url%3A%20url%2C%0A%0A%09%09%09//%20If%20%22type%22%20variable%20is%20undefined%2C%20then%20%22GET%22%20method%20will%20be%20used.%0A%09%09%09//%20Make%20value%20of%20this%20field%20explicit%20since%0A%09%09%09//%20user%20can%20override%20it%20through%20ajaxSetup%20method%0A%09%09%09type%3A%20type%20%7C%7C%20%22GET%22%2C%0A%09%09%09dataType%3A%20%22html%22%2C%0A%09%09%09data%3A%20params%0A%09%09%7D%20%29.done%28%20function%28%20responseText%20%29%20%7B%0A%0A%09%09%09//%20Save%20response%20for%20use%20in%20complete%20callback%0A%09%09%09response%20%3D%20arguments%3B%0A%0A%09%09%09self.html%28%20selector%20%3F%0A%0A%09%09%09%09//%20If%20a%20selector%20was%20specified%2C%20locate%20the%20right%20elements%20in%20a%20dummy%20div%0A%09%09%09%09//%20Exclude%20scripts%20to%20avoid%20IE%20%27Permission%20Denied%27%20errors%0A%09%09%09%09jQuery%28%20%22%3Cdiv%3E%22%20%29.append%28%20jQuery.parseHTML%28%20responseText%20%29%20%29.find%28%20selector%20%29%20%3A%0A%0A%09%09%09%09//%20Otherwise%20use%20the%20full%20result%0A%09%09%09%09responseText%20%29%3B%0A%0A%09%09//%20If%20the%20request%20succeeds%2C%20this%20function%20gets%20%22data%22%2C%20%22status%22%2C%20%22jqXHR%22%0A%09%09//%20but%20they%20are%20ignored%20because%20response%20was%20set%20above.%0A%09%09//%20If%20it%20fails%2C%20this%20function%20gets%20%22jqXHR%22%2C%20%22status%22%2C%20%22error%22%0A%09%09%7D%20%29.always%28%20callback%20%26%26%20function%28%20jqXHR%2C%20status%20%29%20%7B%0A%09%09%09self.each%28%20function%28%29%20%7B%0A%09%09%09%09callback.apply%28%20this%2C%20response%20%7C%7C%20%5B%20jqXHR.responseText%2C%20status%2C%20jqXHR%20%5D%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09return%20this%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.expr.pseudos.animated%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20jQuery.grep%28%20jQuery.timers%2C%20function%28%20fn%20%29%20%7B%0A%09%09return%20elem%20%3D%3D%3D%20fn.elem%3B%0A%09%7D%20%29.length%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.offset%20%3D%20%7B%0A%09setOffset%3A%20function%28%20elem%2C%20options%2C%20i%20%29%20%7B%0A%09%09var%20curPosition%2C%20curLeft%2C%20curCSSTop%2C%20curTop%2C%20curOffset%2C%20curCSSLeft%2C%20calculatePosition%2C%0A%09%09%09position%20%3D%20jQuery.css%28%20elem%2C%20%22position%22%20%29%2C%0A%09%09%09curElem%20%3D%20jQuery%28%20elem%20%29%2C%0A%09%09%09props%20%3D%20%7B%7D%3B%0A%0A%09%09//%20Set%20position%20first%2C%20in-case%20top/left%20are%20set%20even%20on%20static%20elem%0A%09%09if%20%28%20position%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%09%09%09elem.style.position%20%3D%20%22relative%22%3B%0A%09%09%7D%0A%0A%09%09curOffset%20%3D%20curElem.offset%28%29%3B%0A%09%09curCSSTop%20%3D%20jQuery.css%28%20elem%2C%20%22top%22%20%29%3B%0A%09%09curCSSLeft%20%3D%20jQuery.css%28%20elem%2C%20%22left%22%20%29%3B%0A%09%09calculatePosition%20%3D%20%28%20position%20%3D%3D%3D%20%22absolute%22%20%7C%7C%20position%20%3D%3D%3D%20%22fixed%22%20%29%20%26%26%0A%09%09%09%28%20curCSSTop%20%2B%20curCSSLeft%20%29.indexOf%28%20%22auto%22%20%29%20%3E%20-1%3B%0A%0A%09%09//%20Need%20to%20be%20able%20to%20calculate%20position%20if%20either%0A%09%09//%20top%20or%20left%20is%20auto%20and%20position%20is%20either%20absolute%20or%20fixed%0A%09%09if%20%28%20calculatePosition%20%29%20%7B%0A%09%09%09curPosition%20%3D%20curElem.position%28%29%3B%0A%09%09%09curTop%20%3D%20curPosition.top%3B%0A%09%09%09curLeft%20%3D%20curPosition.left%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09curTop%20%3D%20parseFloat%28%20curCSSTop%20%29%20%7C%7C%200%3B%0A%09%09%09curLeft%20%3D%20parseFloat%28%20curCSSLeft%20%29%20%7C%7C%200%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20isFunction%28%20options%20%29%20%29%20%7B%0A%0A%09%09%09//%20Use%20jQuery.extend%20here%20to%20allow%20modification%20of%20coordinates%20argument%20%28gh-1848%29%0A%09%09%09options%20%3D%20options.call%28%20elem%2C%20i%2C%20jQuery.extend%28%20%7B%7D%2C%20curOffset%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20options.top%20%21%3D%20null%20%29%20%7B%0A%09%09%09props.top%20%3D%20%28%20options.top%20-%20curOffset.top%20%29%20%2B%20curTop%3B%0A%09%09%7D%0A%09%09if%20%28%20options.left%20%21%3D%20null%20%29%20%7B%0A%09%09%09props.left%20%3D%20%28%20options.left%20-%20curOffset.left%20%29%20%2B%20curLeft%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%22using%22%20in%20options%20%29%20%7B%0A%09%09%09options.using.call%28%20elem%2C%20props%20%29%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28%20typeof%20props.top%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09props.top%20%2B%3D%20%22px%22%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20typeof%20props.left%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09props.left%20%2B%3D%20%22px%22%3B%0A%09%09%09%7D%0A%09%09%09curElem.css%28%20props%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09//%20offset%28%29%20relates%20an%20element%27s%20border%20box%20to%20the%20document%20origin%0A%09offset%3A%20function%28%20options%20%29%20%7B%0A%0A%09%09//%20Preserve%20chaining%20for%20setter%0A%09%09if%20%28%20arguments.length%20%29%20%7B%0A%09%09%09return%20options%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09%09this%20%3A%0A%09%09%09%09this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09%09jQuery.offset.setOffset%28%20this%2C%20options%2C%20i%20%29%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09var%20rect%2C%20win%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%3B%0A%0A%09%09if%20%28%20%21elem%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20zeros%20for%20disconnected%20and%20hidden%20%28display%3A%20none%29%20elements%20%28gh-2310%29%0A%09%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09%09//%20Running%20getBoundingClientRect%20on%20a%0A%09%09//%20disconnected%20node%20in%20IE%20throws%20an%20error%0A%09%09if%20%28%20%21elem.getClientRects%28%29.length%20%29%20%7B%0A%09%09%09return%20%7B%20top%3A%200%2C%20left%3A%200%20%7D%3B%0A%09%09%7D%0A%0A%09%09//%20Get%20document-relative%20position%20by%20adding%20viewport%20scroll%20to%20viewport-relative%20gBCR%0A%09%09rect%20%3D%20elem.getBoundingClientRect%28%29%3B%0A%09%09win%20%3D%20elem.ownerDocument.defaultView%3B%0A%09%09return%20%7B%0A%09%09%09top%3A%20rect.top%20%2B%20win.pageYOffset%2C%0A%09%09%09left%3A%20rect.left%20%2B%20win.pageXOffset%0A%09%09%7D%3B%0A%09%7D%2C%0A%0A%09//%20position%28%29%20relates%20an%20element%27s%20margin%20box%20to%20its%20offset%20parent%27s%20padding%20box%0A%09//%20This%20corresponds%20to%20the%20behavior%20of%20CSS%20absolute%20positioning%0A%09position%3A%20function%28%29%20%7B%0A%09%09if%20%28%20%21this%5B%200%20%5D%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09var%20offsetParent%2C%20offset%2C%20doc%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%2C%0A%09%09%09parentOffset%20%3D%20%7B%20top%3A%200%2C%20left%3A%200%20%7D%3B%0A%0A%09%09//%20position%3Afixed%20elements%20are%20offset%20from%20the%20viewport%2C%20which%20itself%20always%20has%20zero%20offset%0A%09%09if%20%28%20jQuery.css%28%20elem%2C%20%22position%22%20%29%20%3D%3D%3D%20%22fixed%22%20%29%20%7B%0A%0A%09%09%09//%20Assume%20position%3Afixed%20implies%20availability%20of%20getBoundingClientRect%0A%09%09%09offset%20%3D%20elem.getBoundingClientRect%28%29%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09offset%20%3D%20this.offset%28%29%3B%0A%0A%09%09%09//%20Account%20for%20the%20%2Areal%2A%20offset%20parent%2C%20which%20can%20be%20the%20document%20or%20its%20root%20element%0A%09%09%09//%20when%20a%20statically%20positioned%20element%20is%20identified%0A%09%09%09doc%20%3D%20elem.ownerDocument%3B%0A%09%09%09offsetParent%20%3D%20elem.offsetParent%20%7C%7C%20doc.documentElement%3B%0A%09%09%09while%20%28%20offsetParent%20%26%26%0A%09%09%09%09%28%20offsetParent%20%3D%3D%3D%20doc.body%20%7C%7C%20offsetParent%20%3D%3D%3D%20doc.documentElement%20%29%20%26%26%0A%09%09%09%09jQuery.css%28%20offsetParent%2C%20%22position%22%20%29%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%0A%09%09%09%09offsetParent%20%3D%20offsetParent.parentNode%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20offsetParent%20%26%26%20offsetParent%20%21%3D%3D%20elem%20%26%26%20offsetParent.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09//%20Incorporate%20borders%20into%20its%20offset%2C%20since%20they%20are%20outside%20its%20content%20origin%0A%09%09%09%09parentOffset%20%3D%20jQuery%28%20offsetParent%20%29.offset%28%29%3B%0A%09%09%09%09parentOffset.top%20%2B%3D%20jQuery.css%28%20offsetParent%2C%20%22borderTopWidth%22%2C%20true%20%29%3B%0A%09%09%09%09parentOffset.left%20%2B%3D%20jQuery.css%28%20offsetParent%2C%20%22borderLeftWidth%22%2C%20true%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Subtract%20parent%20offsets%20and%20element%20margins%0A%09%09return%20%7B%0A%09%09%09top%3A%20offset.top%20-%20parentOffset.top%20-%20jQuery.css%28%20elem%2C%20%22marginTop%22%2C%20true%20%29%2C%0A%09%09%09left%3A%20offset.left%20-%20parentOffset.left%20-%20jQuery.css%28%20elem%2C%20%22marginLeft%22%2C%20true%20%29%0A%09%09%7D%3B%0A%09%7D%2C%0A%0A%09//%20This%20method%20will%20return%20documentElement%20in%20the%20following%20cases%3A%0A%09//%201%29%20For%20the%20element%20inside%20the%20iframe%20without%20offsetParent%2C%20this%20method%20will%20return%0A%09//%20%20%20%20documentElement%20of%20the%20parent%20window%0A%09//%202%29%20For%20the%20hidden%20or%20detached%20element%0A%09//%203%29%20For%20body%20or%20html%20element%2C%20i.e.%20in%20case%20of%20the%20html%20node%20-%20it%20will%20return%20itself%0A%09//%0A%09//%20but%20those%20exceptions%20were%20never%20presented%20as%20a%20real%20life%20use-cases%0A%09//%20and%20might%20be%20considered%20as%20more%20preferable%20results.%0A%09//%0A%09//%20This%20logic%2C%20however%2C%20is%20not%20guaranteed%20and%20can%20change%20at%20any%20point%20in%20the%20future%0A%09offsetParent%3A%20function%28%29%20%7B%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%09%09%09var%20offsetParent%20%3D%20this.offsetParent%3B%0A%0A%09%09%09while%20%28%20offsetParent%20%26%26%20jQuery.css%28%20offsetParent%2C%20%22position%22%20%29%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%09%09%09%09offsetParent%20%3D%20offsetParent.offsetParent%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20offsetParent%20%7C%7C%20documentElement%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Create%20scrollLeft%20and%20scrollTop%20methods%0AjQuery.each%28%20%7B%20scrollLeft%3A%20%22pageXOffset%22%2C%20scrollTop%3A%20%22pageYOffset%22%20%7D%2C%20function%28%20method%2C%20prop%20%29%20%7B%0A%09var%20top%20%3D%20%22pageYOffset%22%20%3D%3D%3D%20prop%3B%0A%0A%09jQuery.fn%5B%20method%20%5D%20%3D%20function%28%20val%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20method%2C%20val%20%29%20%7B%0A%0A%09%09%09//%20Coalesce%20documents%20and%20windows%0A%09%09%09var%20win%3B%0A%09%09%09if%20%28%20isWindow%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09win%20%3D%20elem%3B%0A%09%09%09%7D%20else%20if%20%28%20elem.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09win%20%3D%20elem.defaultView%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20val%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20win%20%3F%20win%5B%20prop%20%5D%20%3A%20elem%5B%20method%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20win%20%29%20%7B%0A%09%09%09%09win.scrollTo%28%0A%09%09%09%09%09%21top%20%3F%20val%20%3A%20win.pageXOffset%2C%0A%09%09%09%09%09top%20%3F%20val%20%3A%20win.pageYOffset%0A%09%09%09%09%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09elem%5B%20method%20%5D%20%3D%20val%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20method%2C%20val%2C%20arguments.length%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Support%3A%20Safari%20%3C%3D7%20-%209.1%2C%20Chrome%20%3C%3D37%20-%2049%0A//%20Add%20the%20top/left%20cssHooks%20using%20jQuery.fn.position%0A//%20Webkit%20bug%3A%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D29084%0A//%20Blink%20bug%3A%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D589347%0A//%20getComputedStyle%20returns%20percent%20when%20specified%20for%20top/left/bottom/right%3B%0A//%20rather%20than%20make%20the%20css%20module%20depend%20on%20the%20offset%20module%2C%20just%20check%20for%20it%20here%0AjQuery.each%28%20%5B%20%22top%22%2C%20%22left%22%20%5D%2C%20function%28%20_i%2C%20prop%20%29%20%7B%0A%09jQuery.cssHooks%5B%20prop%20%5D%20%3D%20addGetHookIf%28%20support.pixelPosition%2C%0A%09%09function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09%09if%20%28%20computed%20%29%20%7B%0A%09%09%09%09computed%20%3D%20curCSS%28%20elem%2C%20prop%20%29%3B%0A%0A%09%09%09%09//%20If%20curCSS%20returns%20percentage%2C%20fallback%20to%20offset%0A%09%09%09%09return%20rnumnonpx.test%28%20computed%20%29%20%3F%0A%09%09%09%09%09jQuery%28%20elem%20%29.position%28%29%5B%20prop%20%5D%20%2B%20%22px%22%20%3A%0A%09%09%09%09%09computed%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%29%3B%0A%7D%20%29%3B%0A%0A%0A//%20Create%20innerHeight%2C%20innerWidth%2C%20height%2C%20width%2C%20outerHeight%20and%20outerWidth%20methods%0AjQuery.each%28%20%7B%20Height%3A%20%22height%22%2C%20Width%3A%20%22width%22%20%7D%2C%20function%28%20name%2C%20type%20%29%20%7B%0A%09jQuery.each%28%20%7B%20padding%3A%20%22inner%22%20%2B%20name%2C%20content%3A%20type%2C%20%22%22%3A%20%22outer%22%20%2B%20name%20%7D%2C%0A%09%09function%28%20defaultExtra%2C%20funcName%20%29%20%7B%0A%0A%09%09//%20Margin%20is%20only%20for%20outerHeight%2C%20outerWidth%0A%09%09jQuery.fn%5B%20funcName%20%5D%20%3D%20function%28%20margin%2C%20value%20%29%20%7B%0A%09%09%09var%20chainable%20%3D%20arguments.length%20%26%26%20%28%20defaultExtra%20%7C%7C%20typeof%20margin%20%21%3D%3D%20%22boolean%22%20%29%2C%0A%09%09%09%09extra%20%3D%20defaultExtra%20%7C%7C%20%28%20margin%20%3D%3D%3D%20true%20%7C%7C%20value%20%3D%3D%3D%20true%20%3F%20%22margin%22%20%3A%20%22border%22%20%29%3B%0A%0A%09%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20type%2C%20value%20%29%20%7B%0A%09%09%09%09var%20doc%3B%0A%0A%09%09%09%09if%20%28%20isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20%24%28%20window%20%29.outerWidth/Height%20return%20w/h%20including%20scrollbars%20%28gh-1729%29%0A%09%09%09%09%09return%20funcName.indexOf%28%20%22outer%22%20%29%20%3D%3D%3D%200%20%3F%0A%09%09%09%09%09%09elem%5B%20%22inner%22%20%2B%20name%20%5D%20%3A%0A%09%09%09%09%09%09elem.document.documentElement%5B%20%22client%22%20%2B%20name%20%5D%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Get%20document%20width%20or%20height%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09doc%20%3D%20elem.documentElement%3B%0A%0A%09%09%09%09%09//%20Either%20scroll%5BWidth/Height%5D%20or%20offset%5BWidth/Height%5D%20or%20client%5BWidth/Height%5D%2C%0A%09%09%09%09%09//%20whichever%20is%20greatest%0A%09%09%09%09%09return%20Math.max%28%0A%09%09%09%09%09%09elem.body%5B%20%22scroll%22%20%2B%20name%20%5D%2C%20doc%5B%20%22scroll%22%20%2B%20name%20%5D%2C%0A%09%09%09%09%09%09elem.body%5B%20%22offset%22%20%2B%20name%20%5D%2C%20doc%5B%20%22offset%22%20%2B%20name%20%5D%2C%0A%09%09%09%09%09%09doc%5B%20%22client%22%20%2B%20name%20%5D%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20value%20%3D%3D%3D%20undefined%20%3F%0A%0A%09%09%09%09%09//%20Get%20width%20or%20height%20on%20the%20element%2C%20requesting%20but%20not%20forcing%20parseFloat%0A%09%09%09%09%09jQuery.css%28%20elem%2C%20type%2C%20extra%20%29%20%3A%0A%0A%09%09%09%09%09//%20Set%20width%20or%20height%20on%20the%20element%0A%09%09%09%09%09jQuery.style%28%20elem%2C%20type%2C%20value%2C%20extra%20%29%3B%0A%09%09%09%7D%2C%20type%2C%20chainable%20%3F%20margin%20%3A%20undefined%2C%20chainable%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%20%29%3B%0A%0A%0AjQuery.each%28%20%5B%0A%09%22ajaxStart%22%2C%0A%09%22ajaxStop%22%2C%0A%09%22ajaxComplete%22%2C%0A%09%22ajaxError%22%2C%0A%09%22ajaxSuccess%22%2C%0A%09%22ajaxSend%22%0A%5D%2C%20function%28%20_i%2C%20type%20%29%20%7B%0A%09jQuery.fn%5B%20type%20%5D%20%3D%20function%28%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20type%2C%20fn%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09bind%3A%20function%28%20types%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20types%2C%20null%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09unbind%3A%20function%28%20types%2C%20fn%20%29%20%7B%0A%09%09return%20this.off%28%20types%2C%20null%2C%20fn%20%29%3B%0A%09%7D%2C%0A%0A%09delegate%3A%20function%28%20selector%2C%20types%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09undelegate%3A%20function%28%20selector%2C%20types%2C%20fn%20%29%20%7B%0A%0A%09%09//%20%28%20namespace%20%29%20or%20%28%20selector%2C%20types%20%5B%2C%20fn%5D%20%29%0A%09%09return%20arguments.length%20%3D%3D%3D%201%20%3F%0A%09%09%09this.off%28%20selector%2C%20%22%2A%2A%22%20%29%20%3A%0A%09%09%09this.off%28%20types%2C%20selector%20%7C%7C%20%22%2A%2A%22%2C%20fn%20%29%3B%0A%09%7D%2C%0A%0A%09hover%3A%20function%28%20fnOver%2C%20fnOut%20%29%20%7B%0A%09%09return%20this.mouseenter%28%20fnOver%20%29.mouseleave%28%20fnOut%20%7C%7C%20fnOver%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%28%20%22blur%20focus%20focusin%20focusout%20resize%20scroll%20click%20dblclick%20%22%20%2B%0A%09%22mousedown%20mouseup%20mousemove%20mouseover%20mouseout%20mouseenter%20mouseleave%20%22%20%2B%0A%09%22change%20select%20submit%20keydown%20keypress%20keyup%20contextmenu%22%20%29.split%28%20%22%20%22%20%29%2C%0A%09function%28%20_i%2C%20name%20%29%20%7B%0A%0A%09%09//%20Handle%20event%20binding%0A%09%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20data%2C%20fn%20%29%20%7B%0A%09%09%09return%20arguments.length%20%3E%200%20%3F%0A%09%09%09%09this.on%28%20name%2C%20null%2C%20data%2C%20fn%20%29%20%3A%0A%09%09%09%09this.trigger%28%20name%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%0A%0A%0A%0A//%20Support%3A%20Android%20%3C%3D4.0%20only%0A//%20Make%20sure%20we%20trim%20BOM%20and%20NBSP%0Avar%20rtrim%20%3D%20/%5E%5B%5Cs%5CuFEFF%5CxA0%5D%2B%7C%5B%5Cs%5CuFEFF%5CxA0%5D%2B%24/g%3B%0A%0A//%20Bind%20a%20function%20to%20a%20context%2C%20optionally%20partially%20applying%20any%0A//%20arguments.%0A//%20jQuery.proxy%20is%20deprecated%20to%20promote%20standards%20%28specifically%20Function%23bind%29%0A//%20However%2C%20it%20is%20not%20slated%20for%20removal%20any%20time%20soon%0AjQuery.proxy%20%3D%20function%28%20fn%2C%20context%20%29%20%7B%0A%09var%20tmp%2C%20args%2C%20proxy%3B%0A%0A%09if%20%28%20typeof%20context%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09tmp%20%3D%20fn%5B%20context%20%5D%3B%0A%09%09context%20%3D%20fn%3B%0A%09%09fn%20%3D%20tmp%3B%0A%09%7D%0A%0A%09//%20Quick%20check%20to%20determine%20if%20target%20is%20callable%2C%20in%20the%20spec%0A%09//%20this%20throws%20a%20TypeError%2C%20but%20we%20will%20just%20return%20undefined.%0A%09if%20%28%20%21isFunction%28%20fn%20%29%20%29%20%7B%0A%09%09return%20undefined%3B%0A%09%7D%0A%0A%09//%20Simulated%20bind%0A%09args%20%3D%20slice.call%28%20arguments%2C%202%20%29%3B%0A%09proxy%20%3D%20function%28%29%20%7B%0A%09%09return%20fn.apply%28%20context%20%7C%7C%20this%2C%20args.concat%28%20slice.call%28%20arguments%20%29%20%29%20%29%3B%0A%09%7D%3B%0A%0A%09//%20Set%20the%20guid%20of%20unique%20handler%20to%20the%20same%20of%20original%20handler%2C%20so%20it%20can%20be%20removed%0A%09proxy.guid%20%3D%20fn.guid%20%3D%20fn.guid%20%7C%7C%20jQuery.guid%2B%2B%3B%0A%0A%09return%20proxy%3B%0A%7D%3B%0A%0AjQuery.holdReady%20%3D%20function%28%20hold%20%29%20%7B%0A%09if%20%28%20hold%20%29%20%7B%0A%09%09jQuery.readyWait%2B%2B%3B%0A%09%7D%20else%20%7B%0A%09%09jQuery.ready%28%20true%20%29%3B%0A%09%7D%0A%7D%3B%0AjQuery.isArray%20%3D%20Array.isArray%3B%0AjQuery.parseJSON%20%3D%20JSON.parse%3B%0AjQuery.nodeName%20%3D%20nodeName%3B%0AjQuery.isFunction%20%3D%20isFunction%3B%0AjQuery.isWindow%20%3D%20isWindow%3B%0AjQuery.camelCase%20%3D%20camelCase%3B%0AjQuery.type%20%3D%20toType%3B%0A%0AjQuery.now%20%3D%20Date.now%3B%0A%0AjQuery.isNumeric%20%3D%20function%28%20obj%20%29%20%7B%0A%0A%09//%20As%20of%20jQuery%203.0%2C%20isNumeric%20is%20limited%20to%0A%09//%20strings%20and%20numbers%20%28primitives%20or%20objects%29%0A%09//%20that%20can%20be%20coerced%20to%20finite%20numbers%20%28gh-2662%29%0A%09var%20type%20%3D%20jQuery.type%28%20obj%20%29%3B%0A%09return%20%28%20type%20%3D%3D%3D%20%22number%22%20%7C%7C%20type%20%3D%3D%3D%20%22string%22%20%29%20%26%26%0A%0A%09%09//%20parseFloat%20NaNs%20numeric-cast%20false%20positives%20%28%22%22%29%0A%09%09//%20...but%20misinterprets%20leading-number%20strings%2C%20particularly%20hex%20literals%20%28%220x...%22%29%0A%09%09//%20subtraction%20forces%20infinities%20to%20NaN%0A%09%09%21isNaN%28%20obj%20-%20parseFloat%28%20obj%20%29%20%29%3B%0A%7D%3B%0A%0AjQuery.trim%20%3D%20function%28%20text%20%29%20%7B%0A%09return%20text%20%3D%3D%20null%20%3F%0A%09%09%22%22%20%3A%0A%09%09%28%20text%20%2B%20%22%22%20%29.replace%28%20rtrim%2C%20%22%22%20%29%3B%0A%7D%3B%0A%0A%0A%0A//%20Register%20as%20a%20named%20AMD%20module%2C%20since%20jQuery%20can%20be%20concatenated%20with%20other%0A//%20files%20that%20may%20use%20define%2C%20but%20not%20via%20a%20proper%20concatenation%20script%20that%0A//%20understands%20anonymous%20AMD%20modules.%20A%20named%20AMD%20is%20safest%20and%20most%20robust%0A//%20way%20to%20register.%20Lowercase%20jquery%20is%20used%20because%20AMD%20module%20names%20are%0A//%20derived%20from%20file%20names%2C%20and%20jQuery%20is%20normally%20delivered%20in%20a%20lowercase%0A//%20file%20name.%20Do%20this%20after%20creating%20the%20global%20so%20that%20if%20an%20AMD%20module%20wants%0A//%20to%20call%20noConflict%20to%20hide%20this%20version%20of%20jQuery%2C%20it%20will%20work.%0A%0A//%20Note%20that%20for%20maximum%20portability%2C%20libraries%20that%20are%20not%20jQuery%20should%0A//%20declare%20themselves%20as%20anonymous%20modules%2C%20and%20avoid%20setting%20a%20global%20if%20an%0A//%20AMD%20loader%20is%20present.%20jQuery%20is%20a%20special%20case.%20For%20more%20information%2C%20see%0A//%20https%3A//github.com/jrburke/requirejs/wiki/Updating-existing-libraries%23wiki-anon%0A%0Aif%20%28%20typeof%20define%20%3D%3D%3D%20%22function%22%20%26%26%20define.amd%20%29%20%7B%0A%09define%28%20%22jquery%22%2C%20%5B%5D%2C%20function%28%29%20%7B%0A%09%09return%20jQuery%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A%0A%0A%0Avar%0A%0A%09//%20Map%20over%20jQuery%20in%20case%20of%20overwrite%0A%09_jQuery%20%3D%20window.jQuery%2C%0A%0A%09//%20Map%20over%20the%20%24%20in%20case%20of%20overwrite%0A%09_%24%20%3D%20window.%24%3B%0A%0AjQuery.noConflict%20%3D%20function%28%20deep%20%29%20%7B%0A%09if%20%28%20window.%24%20%3D%3D%3D%20jQuery%20%29%20%7B%0A%09%09window.%24%20%3D%20_%24%3B%0A%09%7D%0A%0A%09if%20%28%20deep%20%26%26%20window.jQuery%20%3D%3D%3D%20jQuery%20%29%20%7B%0A%09%09window.jQuery%20%3D%20_jQuery%3B%0A%09%7D%0A%0A%09return%20jQuery%3B%0A%7D%3B%0A%0A//%20Expose%20jQuery%20and%20%24%20identifiers%2C%20even%20in%20AMD%0A//%20%28%237102%23comment%3A10%2C%20https%3A//github.com/jquery/jquery/pull/557%29%0A//%20and%20CommonJS%20for%20browser%20emulators%20%28%2313566%29%0Aif%20%28%20typeof%20noGlobal%20%3D%3D%3D%20%22undefined%22%20%29%20%7B%0A%09window.jQuery%20%3D%20window.%24%20%3D%20jQuery%3B%0A%7D%0A%0A%0A%0A%0Areturn%20jQuery%3B%0A%7D%20%29%3B%0A"></script><!--URL:_static/jquery.js-->
-<script src="data:application/javascript,//%20%20%20%20%20Underscore.js%201.9.1%0A//%20%20%20%20%20http%3A//underscorejs.org%0A//%20%20%20%20%20%28c%29%202009-2018%20Jeremy%20Ashkenas%2C%20DocumentCloud%20and%20Investigative%20Reporters%20%26%20Editors%0A//%20%20%20%20%20Underscore%20may%20be%20freely%20distributed%20under%20the%20MIT%20license.%0A%0A%28function%28%29%20%7B%0A%0A%20%20//%20Baseline%20setup%0A%20%20//%20--------------%0A%0A%20%20//%20Establish%20the%20root%20object%2C%20%60window%60%20%28%60self%60%29%20in%20the%20browser%2C%20%60global%60%0A%20%20//%20on%20the%20server%2C%20or%20%60this%60%20in%20some%20virtual%20machines.%20We%20use%20%60self%60%0A%20%20//%20instead%20of%20%60window%60%20for%20%60WebWorker%60%20support.%0A%20%20var%20root%20%3D%20typeof%20self%20%3D%3D%20%27object%27%20%26%26%20self.self%20%3D%3D%3D%20self%20%26%26%20self%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20typeof%20global%20%3D%3D%20%27object%27%20%26%26%20global.global%20%3D%3D%3D%20global%20%26%26%20global%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20this%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%7D%3B%0A%0A%20%20//%20Save%20the%20previous%20value%20of%20the%20%60_%60%20variable.%0A%20%20var%20previousUnderscore%20%3D%20root._%3B%0A%0A%20%20//%20Save%20bytes%20in%20the%20minified%20%28but%20not%20gzipped%29%20version%3A%0A%20%20var%20ArrayProto%20%3D%20Array.prototype%2C%20ObjProto%20%3D%20Object.prototype%3B%0A%20%20var%20SymbolProto%20%3D%20typeof%20Symbol%20%21%3D%3D%20%27undefined%27%20%3F%20Symbol.prototype%20%3A%20null%3B%0A%0A%20%20//%20Create%20quick%20reference%20variables%20for%20speed%20access%20to%20core%20prototypes.%0A%20%20var%20push%20%3D%20ArrayProto.push%2C%0A%20%20%20%20%20%20slice%20%3D%20ArrayProto.slice%2C%0A%20%20%20%20%20%20toString%20%3D%20ObjProto.toString%2C%0A%20%20%20%20%20%20hasOwnProperty%20%3D%20ObjProto.hasOwnProperty%3B%0A%0A%20%20//%20All%20%2A%2AECMAScript%205%2A%2A%20native%20function%20implementations%20that%20we%20hope%20to%20use%0A%20%20//%20are%20declared%20here.%0A%20%20var%20nativeIsArray%20%3D%20Array.isArray%2C%0A%20%20%20%20%20%20nativeKeys%20%3D%20Object.keys%2C%0A%20%20%20%20%20%20nativeCreate%20%3D%20Object.create%3B%0A%0A%20%20//%20Naked%20function%20reference%20for%20surrogate-prototype-swapping.%0A%20%20var%20Ctor%20%3D%20function%28%29%7B%7D%3B%0A%0A%20%20//%20Create%20a%20safe%20reference%20to%20the%20Underscore%20object%20for%20use%20below.%0A%20%20var%20_%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20instanceof%20_%29%20return%20obj%3B%0A%20%20%20%20if%20%28%21%28this%20instanceof%20_%29%29%20return%20new%20_%28obj%29%3B%0A%20%20%20%20this._wrapped%20%3D%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Export%20the%20Underscore%20object%20for%20%2A%2ANode.js%2A%2A%2C%20with%0A%20%20//%20backwards-compatibility%20for%20their%20old%20module%20API.%20If%20we%27re%20in%0A%20%20//%20the%20browser%2C%20add%20%60_%60%20as%20a%20global%20object.%0A%20%20//%20%28%60nodeType%60%20is%20checked%20to%20ensure%20that%20%60module%60%0A%20%20//%20and%20%60exports%60%20are%20not%20HTML%20elements.%29%0A%20%20if%20%28typeof%20exports%20%21%3D%20%27undefined%27%20%26%26%20%21exports.nodeType%29%20%7B%0A%20%20%20%20if%20%28typeof%20module%20%21%3D%20%27undefined%27%20%26%26%20%21module.nodeType%20%26%26%20module.exports%29%20%7B%0A%20%20%20%20%20%20exports%20%3D%20module.exports%20%3D%20_%3B%0A%20%20%20%20%7D%0A%20%20%20%20exports._%20%3D%20_%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20root._%20%3D%20_%3B%0A%20%20%7D%0A%0A%20%20//%20Current%20version.%0A%20%20_.VERSION%20%3D%20%271.9.1%27%3B%0A%0A%20%20//%20Internal%20function%20that%20returns%20an%20efficient%20%28for%20current%20engines%29%20version%0A%20%20//%20of%20the%20passed-in%20callback%2C%20to%20be%20repeatedly%20applied%20in%20other%20Underscore%0A%20%20//%20functions.%0A%20%20var%20optimizeCb%20%3D%20function%28func%2C%20context%2C%20argCount%29%20%7B%0A%20%20%20%20if%20%28context%20%3D%3D%3D%20void%200%29%20return%20func%3B%0A%20%20%20%20switch%20%28argCount%20%3D%3D%20null%20%3F%203%20%3A%20argCount%29%20%7B%0A%20%20%20%20%20%20case%201%3A%20return%20function%28value%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20value%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20//%20The%202-argument%20case%20is%20omitted%20because%20we%E2%80%99re%20not%20using%20it.%0A%20%20%20%20%20%20case%203%3A%20return%20function%28value%2C%20index%2C%20collection%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20value%2C%20index%2C%20collection%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20case%204%3A%20return%20function%28accumulator%2C%20value%2C%20index%2C%20collection%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20accumulator%2C%20value%2C%20index%2C%20collection%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20func.apply%28context%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20var%20builtinIteratee%3B%0A%0A%20%20//%20An%20internal%20function%20to%20generate%20callbacks%20that%20can%20be%20applied%20to%20each%0A%20%20//%20element%20in%20a%20collection%2C%20returning%20the%20desired%20result%20%E2%80%94%20either%20%60identity%60%2C%0A%20%20//%20an%20arbitrary%20callback%2C%20a%20property%20matcher%2C%20or%20a%20property%20accessor.%0A%20%20var%20cb%20%3D%20function%28value%2C%20context%2C%20argCount%29%20%7B%0A%20%20%20%20if%20%28_.iteratee%20%21%3D%3D%20builtinIteratee%29%20return%20_.iteratee%28value%2C%20context%29%3B%0A%20%20%20%20if%20%28value%20%3D%3D%20null%29%20return%20_.identity%3B%0A%20%20%20%20if%20%28_.isFunction%28value%29%29%20return%20optimizeCb%28value%2C%20context%2C%20argCount%29%3B%0A%20%20%20%20if%20%28_.isObject%28value%29%20%26%26%20%21_.isArray%28value%29%29%20return%20_.matcher%28value%29%3B%0A%20%20%20%20return%20_.property%28value%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20External%20wrapper%20for%20our%20callback%20generator.%20Users%20may%20customize%0A%20%20//%20%60_.iteratee%60%20if%20they%20want%20additional%20predicate/iteratee%20shorthand%20styles.%0A%20%20//%20This%20abstraction%20hides%20the%20internal-only%20argCount%20argument.%0A%20%20_.iteratee%20%3D%20builtinIteratee%20%3D%20function%28value%2C%20context%29%20%7B%0A%20%20%20%20return%20cb%28value%2C%20context%2C%20Infinity%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Some%20functions%20take%20a%20variable%20number%20of%20arguments%2C%20or%20a%20few%20expected%0A%20%20//%20arguments%20at%20the%20beginning%20and%20then%20a%20variable%20number%20of%20values%20to%20operate%0A%20%20//%20on.%20This%20helper%20accumulates%20all%20remaining%20arguments%20past%20the%20function%E2%80%99s%0A%20%20//%20argument%20length%20%28or%20an%20explicit%20%60startIndex%60%29%2C%20into%20an%20array%20that%20becomes%0A%20%20//%20the%20last%20argument.%20Similar%20to%20ES6%E2%80%99s%20%22rest%20parameter%22.%0A%20%20var%20restArguments%20%3D%20function%28func%2C%20startIndex%29%20%7B%0A%20%20%20%20startIndex%20%3D%20startIndex%20%3D%3D%20null%20%3F%20func.length%20-%201%20%3A%20%2BstartIndex%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20length%20%3D%20Math.max%28arguments.length%20-%20startIndex%2C%200%29%2C%0A%20%20%20%20%20%20%20%20%20%20rest%20%3D%20Array%28length%29%2C%0A%20%20%20%20%20%20%20%20%20%20index%20%3D%200%3B%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20rest%5Bindex%5D%20%3D%20arguments%5Bindex%20%2B%20startIndex%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20switch%20%28startIndex%29%20%7B%0A%20%20%20%20%20%20%20%20case%200%3A%20return%20func.call%28this%2C%20rest%29%3B%0A%20%20%20%20%20%20%20%20case%201%3A%20return%20func.call%28this%2C%20arguments%5B0%5D%2C%20rest%29%3B%0A%20%20%20%20%20%20%20%20case%202%3A%20return%20func.call%28this%2C%20arguments%5B0%5D%2C%20arguments%5B1%5D%2C%20rest%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20args%20%3D%20Array%28startIndex%20%2B%201%29%3B%0A%20%20%20%20%20%20for%20%28index%20%3D%200%3B%20index%20%3C%20startIndex%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20args%5Bindex%5D%20%3D%20arguments%5Bindex%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20args%5BstartIndex%5D%20%3D%20rest%3B%0A%20%20%20%20%20%20return%20func.apply%28this%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20for%20creating%20a%20new%20object%20that%20inherits%20from%20another.%0A%20%20var%20baseCreate%20%3D%20function%28prototype%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28prototype%29%29%20return%20%7B%7D%3B%0A%20%20%20%20if%20%28nativeCreate%29%20return%20nativeCreate%28prototype%29%3B%0A%20%20%20%20Ctor.prototype%20%3D%20prototype%3B%0A%20%20%20%20var%20result%20%3D%20new%20Ctor%3B%0A%20%20%20%20Ctor.prototype%20%3D%20null%3B%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20var%20shallowProperty%20%3D%20function%28key%29%20%7B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20obj%20%3D%3D%20null%20%3F%20void%200%20%3A%20obj%5Bkey%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20var%20has%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20return%20obj%20%21%3D%20null%20%26%26%20hasOwnProperty.call%28obj%2C%20path%29%3B%0A%20%20%7D%0A%0A%20%20var%20deepGet%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20void%200%3B%0A%20%20%20%20%20%20obj%20%3D%20obj%5Bpath%5Bi%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20length%20%3F%20obj%20%3A%20void%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Helper%20for%20collection%20methods%20to%20determine%20whether%20a%20collection%0A%20%20//%20should%20be%20iterated%20as%20an%20array%20or%20as%20an%20object.%0A%20%20//%20Related%3A%20http%3A//people.mozilla.org/~jorendorff/es6-draft.html%23sec-tolength%0A%20%20//%20Avoids%20a%20very%20nasty%20iOS%208%20JIT%20bug%20on%20ARM-64.%20%232094%0A%20%20var%20MAX_ARRAY_INDEX%20%3D%20Math.pow%282%2C%2053%29%20-%201%3B%0A%20%20var%20getLength%20%3D%20shallowProperty%28%27length%27%29%3B%0A%20%20var%20isArrayLike%20%3D%20function%28collection%29%20%7B%0A%20%20%20%20var%20length%20%3D%20getLength%28collection%29%3B%0A%20%20%20%20return%20typeof%20length%20%3D%3D%20%27number%27%20%26%26%20length%20%3E%3D%200%20%26%26%20length%20%3C%3D%20MAX_ARRAY_INDEX%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Collection%20Functions%0A%20%20//%20--------------------%0A%0A%20%20//%20The%20cornerstone%2C%20an%20%60each%60%20implementation%2C%20aka%20%60forEach%60.%0A%20%20//%20Handles%20raw%20objects%20in%20addition%20to%20array-likes.%20Treats%20all%0A%20%20//%20sparse%20array-likes%20as%20if%20they%20were%20dense.%0A%20%20_.each%20%3D%20_.forEach%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20i%2C%20length%3B%0A%20%20%20%20if%20%28isArrayLike%28obj%29%29%20%7B%0A%20%20%20%20%20%20for%20%28i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20iteratee%28obj%5Bi%5D%2C%20i%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20%20%20for%20%28i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20iteratee%28obj%5Bkeys%5Bi%5D%5D%2C%20keys%5Bi%5D%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20results%20of%20applying%20the%20iteratee%20to%20each%20element.%0A%20%20_.map%20%3D%20_.collect%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%2C%0A%20%20%20%20%20%20%20%20results%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20results%5Bindex%5D%20%3D%20iteratee%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20reducing%20function%20iterating%20left%20or%20right.%0A%20%20var%20createReduce%20%3D%20function%28dir%29%20%7B%0A%20%20%20%20//%20Wrap%20code%20that%20reassigns%20argument%20variables%20in%20a%20separate%20function%20than%0A%20%20%20%20//%20the%20one%20that%20accesses%20%60arguments.length%60%20to%20avoid%20a%20perf%20hit.%20%28%231991%29%0A%20%20%20%20var%20reducer%20%3D%20function%28obj%2C%20iteratee%2C%20memo%2C%20initial%29%20%7B%0A%20%20%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%2C%0A%20%20%20%20%20%20%20%20%20%20index%20%3D%20dir%20%3E%200%20%3F%200%20%3A%20length%20-%201%3B%0A%20%20%20%20%20%20if%20%28%21initial%29%20%7B%0A%20%20%20%20%20%20%20%20memo%20%3D%20obj%5Bkeys%20%3F%20keys%5Bindex%5D%20%3A%20index%5D%3B%0A%20%20%20%20%20%20%20%20index%20%2B%3D%20dir%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3E%3D%200%20%26%26%20index%20%3C%20length%3B%20index%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20%20%20memo%20%3D%20iteratee%28memo%2C%20obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20memo%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20function%28obj%2C%20iteratee%2C%20memo%2C%20context%29%20%7B%0A%20%20%20%20%20%20var%20initial%20%3D%20arguments.length%20%3E%3D%203%3B%0A%20%20%20%20%20%20return%20reducer%28obj%2C%20optimizeCb%28iteratee%2C%20context%2C%204%29%2C%20memo%2C%20initial%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20%2A%2AReduce%2A%2A%20builds%20up%20a%20single%20result%20from%20a%20list%20of%20values%2C%20aka%20%60inject%60%2C%0A%20%20//%20or%20%60foldl%60.%0A%20%20_.reduce%20%3D%20_.foldl%20%3D%20_.inject%20%3D%20createReduce%281%29%3B%0A%0A%20%20//%20The%20right-associative%20version%20of%20reduce%2C%20also%20known%20as%20%60foldr%60.%0A%20%20_.reduceRight%20%3D%20_.foldr%20%3D%20createReduce%28-1%29%3B%0A%0A%20%20//%20Return%20the%20first%20value%20which%20passes%20a%20truth%20test.%20Aliased%20as%20%60detect%60.%0A%20%20_.find%20%3D%20_.detect%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20var%20keyFinder%20%3D%20isArrayLike%28obj%29%20%3F%20_.findIndex%20%3A%20_.findKey%3B%0A%20%20%20%20var%20key%20%3D%20keyFinder%28obj%2C%20predicate%2C%20context%29%3B%0A%20%20%20%20if%20%28key%20%21%3D%3D%20void%200%20%26%26%20key%20%21%3D%3D%20-1%29%20return%20obj%5Bkey%5D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20all%20the%20elements%20that%20pass%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60select%60.%0A%20%20_.filter%20%3D%20_.select%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20_.each%28obj%2C%20function%28value%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20if%20%28predicate%28value%2C%20index%2C%20list%29%29%20results.push%28value%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20all%20the%20elements%20for%20which%20a%20truth%20test%20fails.%0A%20%20_.reject%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20return%20_.filter%28obj%2C%20_.negate%28cb%28predicate%29%29%2C%20context%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20whether%20all%20of%20the%20elements%20match%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60all%60.%0A%20%20_.every%20%3D%20_.all%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20if%20%28%21predicate%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%29%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20if%20at%20least%20one%20element%20in%20the%20object%20matches%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60any%60.%0A%20%20_.some%20%3D%20_.any%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20if%20%28predicate%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%29%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20if%20the%20array%20or%20object%20contains%20a%20given%20item%20%28using%20%60%3D%3D%3D%60%29.%0A%20%20//%20Aliased%20as%20%60includes%60%20and%20%60include%60.%0A%20%20_.contains%20%3D%20_.includes%20%3D%20_.include%20%3D%20function%28obj%2C%20item%2C%20fromIndex%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28%21isArrayLike%28obj%29%29%20obj%20%3D%20_.values%28obj%29%3B%0A%20%20%20%20if%20%28typeof%20fromIndex%20%21%3D%20%27number%27%20%7C%7C%20guard%29%20fromIndex%20%3D%200%3B%0A%20%20%20%20return%20_.indexOf%28obj%2C%20item%2C%20fromIndex%29%20%3E%3D%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invoke%20a%20method%20%28with%20arguments%29%20on%20every%20item%20in%20a%20collection.%0A%20%20_.invoke%20%3D%20restArguments%28function%28obj%2C%20path%2C%20args%29%20%7B%0A%20%20%20%20var%20contextPath%2C%20func%3B%0A%20%20%20%20if%20%28_.isFunction%28path%29%29%20%7B%0A%20%20%20%20%20%20func%20%3D%20path%3B%0A%20%20%20%20%7D%20else%20if%20%28_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20contextPath%20%3D%20path.slice%280%2C%20-1%29%3B%0A%20%20%20%20%20%20path%20%3D%20path%5Bpath.length%20-%201%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20_.map%28obj%2C%20function%28context%29%20%7B%0A%20%20%20%20%20%20var%20method%20%3D%20func%3B%0A%20%20%20%20%20%20if%20%28%21method%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28contextPath%20%26%26%20contextPath.length%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20context%20%3D%20deepGet%28context%2C%20contextPath%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28context%20%3D%3D%20null%29%20return%20void%200%3B%0A%20%20%20%20%20%20%20%20method%20%3D%20context%5Bpath%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20method%20%3D%3D%20null%20%3F%20method%20%3A%20method.apply%28context%2C%20args%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60map%60%3A%20fetching%20a%20property.%0A%20%20_.pluck%20%3D%20function%28obj%2C%20key%29%20%7B%0A%20%20%20%20return%20_.map%28obj%2C%20_.property%28key%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60filter%60%3A%20selecting%20only%20objects%0A%20%20//%20containing%20specific%20%60key%3Avalue%60%20pairs.%0A%20%20_.where%20%3D%20function%28obj%2C%20attrs%29%20%7B%0A%20%20%20%20return%20_.filter%28obj%2C%20_.matcher%28attrs%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60find%60%3A%20getting%20the%20first%20object%0A%20%20//%20containing%20specific%20%60key%3Avalue%60%20pairs.%0A%20%20_.findWhere%20%3D%20function%28obj%2C%20attrs%29%20%7B%0A%20%20%20%20return%20_.find%28obj%2C%20_.matcher%28attrs%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20maximum%20element%20%28or%20element-based%20computation%29.%0A%20%20_.max%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20result%20%3D%20-Infinity%2C%20lastComputed%20%3D%20-Infinity%2C%0A%20%20%20%20%20%20%20%20value%2C%20computed%3B%0A%20%20%20%20if%20%28iteratee%20%3D%3D%20null%20%7C%7C%20typeof%20iteratee%20%3D%3D%20%27number%27%20%26%26%20typeof%20obj%5B0%5D%20%21%3D%20%27object%27%20%26%26%20obj%20%21%3D%20null%29%20%7B%0A%20%20%20%20%20%20obj%20%3D%20isArrayLike%28obj%29%20%3F%20obj%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20obj%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28value%20%21%3D%20null%20%26%26%20value%20%3E%20result%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28v%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%28v%2C%20index%2C%20list%29%3B%0A%20%20%20%20%20%20%20%20if%20%28computed%20%3E%20lastComputed%20%7C%7C%20computed%20%3D%3D%3D%20-Infinity%20%26%26%20result%20%3D%3D%3D%20-Infinity%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20v%3B%0A%20%20%20%20%20%20%20%20%20%20lastComputed%20%3D%20computed%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20minimum%20element%20%28or%20element-based%20computation%29.%0A%20%20_.min%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20result%20%3D%20Infinity%2C%20lastComputed%20%3D%20Infinity%2C%0A%20%20%20%20%20%20%20%20value%2C%20computed%3B%0A%20%20%20%20if%20%28iteratee%20%3D%3D%20null%20%7C%7C%20typeof%20iteratee%20%3D%3D%20%27number%27%20%26%26%20typeof%20obj%5B0%5D%20%21%3D%20%27object%27%20%26%26%20obj%20%21%3D%20null%29%20%7B%0A%20%20%20%20%20%20obj%20%3D%20isArrayLike%28obj%29%20%3F%20obj%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20obj%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28value%20%21%3D%20null%20%26%26%20value%20%3C%20result%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28v%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%28v%2C%20index%2C%20list%29%3B%0A%20%20%20%20%20%20%20%20if%20%28computed%20%3C%20lastComputed%20%7C%7C%20computed%20%3D%3D%3D%20Infinity%20%26%26%20result%20%3D%3D%3D%20Infinity%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20v%3B%0A%20%20%20%20%20%20%20%20%20%20lastComputed%20%3D%20computed%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Shuffle%20a%20collection.%0A%20%20_.shuffle%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20_.sample%28obj%2C%20Infinity%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Sample%20%2A%2An%2A%2A%20random%20values%20from%20a%20collection%20using%20the%20modern%20version%20of%20the%0A%20%20//%20%5BFisher-Yates%20shuffle%5D%28http%3A//en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle%29.%0A%20%20//%20If%20%2A%2An%2A%2A%20is%20not%20specified%2C%20returns%20a%20single%20random%20element.%0A%20%20//%20The%20internal%20%60guard%60%20argument%20allows%20it%20to%20work%20with%20%60map%60.%0A%20%20_.sample%20%3D%20function%28obj%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20%7B%0A%20%20%20%20%20%20if%20%28%21isArrayLike%28obj%29%29%20obj%20%3D%20_.values%28obj%29%3B%0A%20%20%20%20%20%20return%20obj%5B_.random%28obj.length%20-%201%29%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20sample%20%3D%20isArrayLike%28obj%29%20%3F%20_.clone%28obj%29%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20getLength%28sample%29%3B%0A%20%20%20%20n%20%3D%20Math.max%28Math.min%28n%2C%20length%29%2C%200%29%3B%0A%20%20%20%20var%20last%20%3D%20length%20-%201%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20n%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20rand%20%3D%20_.random%28index%2C%20last%29%3B%0A%20%20%20%20%20%20var%20temp%20%3D%20sample%5Bindex%5D%3B%0A%20%20%20%20%20%20sample%5Bindex%5D%20%3D%20sample%5Brand%5D%3B%0A%20%20%20%20%20%20sample%5Brand%5D%20%3D%20temp%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20sample.slice%280%2C%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Sort%20the%20object%27s%20values%20by%20a%20criterion%20produced%20by%20an%20iteratee.%0A%20%20_.sortBy%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20index%20%3D%200%3B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20return%20_.pluck%28_.map%28obj%2C%20function%28value%2C%20key%2C%20list%29%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20value%3A%20value%2C%0A%20%20%20%20%20%20%20%20index%3A%20index%2B%2B%2C%0A%20%20%20%20%20%20%20%20criteria%3A%20iteratee%28value%2C%20key%2C%20list%29%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29.sort%28function%28left%2C%20right%29%20%7B%0A%20%20%20%20%20%20var%20a%20%3D%20left.criteria%3B%0A%20%20%20%20%20%20var%20b%20%3D%20right.criteria%3B%0A%20%20%20%20%20%20if%20%28a%20%21%3D%3D%20b%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28a%20%3E%20b%20%7C%7C%20a%20%3D%3D%3D%20void%200%29%20return%201%3B%0A%20%20%20%20%20%20%20%20if%20%28a%20%3C%20b%20%7C%7C%20b%20%3D%3D%3D%20void%200%29%20return%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20left.index%20-%20right.index%3B%0A%20%20%20%20%7D%29%2C%20%27value%27%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20used%20for%20aggregate%20%22group%20by%22%20operations.%0A%20%20var%20group%20%3D%20function%28behavior%2C%20partition%29%20%7B%0A%20%20%20%20return%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20%20%20var%20result%20%3D%20partition%20%3F%20%5B%5B%5D%2C%20%5B%5D%5D%20%3A%20%7B%7D%3B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28value%2C%20index%29%20%7B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20iteratee%28value%2C%20index%2C%20obj%29%3B%0A%20%20%20%20%20%20%20%20behavior%28result%2C%20value%2C%20key%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Groups%20the%20object%27s%20values%20by%20a%20criterion.%20Pass%20either%20a%20string%20attribute%0A%20%20//%20to%20group%20by%2C%20or%20a%20function%20that%20returns%20the%20criterion.%0A%20%20_.groupBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20if%20%28has%28result%2C%20key%29%29%20result%5Bkey%5D.push%28value%29%3B%20else%20result%5Bkey%5D%20%3D%20%5Bvalue%5D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Indexes%20the%20object%27s%20values%20by%20a%20criterion%2C%20similar%20to%20%60groupBy%60%2C%20but%20for%0A%20%20//%20when%20you%20know%20that%20your%20index%20values%20will%20be%20unique.%0A%20%20_.indexBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20result%5Bkey%5D%20%3D%20value%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Counts%20instances%20of%20an%20object%20that%20group%20by%20a%20certain%20criterion.%20Pass%0A%20%20//%20either%20a%20string%20attribute%20to%20count%20by%2C%20or%20a%20function%20that%20returns%20the%0A%20%20//%20criterion.%0A%20%20_.countBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20if%20%28has%28result%2C%20key%29%29%20result%5Bkey%5D%2B%2B%3B%20else%20result%5Bkey%5D%20%3D%201%3B%0A%20%20%7D%29%3B%0A%0A%20%20var%20reStrSymbol%20%3D%20/%5B%5E%5Cud800-%5Cudfff%5D%7C%5B%5Cud800-%5Cudbff%5D%5B%5Cudc00-%5Cudfff%5D%7C%5B%5Cud800-%5Cudfff%5D/g%3B%0A%20%20//%20Safely%20create%20a%20real%2C%20live%20array%20from%20anything%20iterable.%0A%20%20_.toArray%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21obj%29%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28_.isArray%28obj%29%29%20return%20slice.call%28obj%29%3B%0A%20%20%20%20if%20%28_.isString%28obj%29%29%20%7B%0A%20%20%20%20%20%20//%20Keep%20surrogate%20pair%20characters%20together%0A%20%20%20%20%20%20return%20obj.match%28reStrSymbol%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28isArrayLike%28obj%29%29%20return%20_.map%28obj%2C%20_.identity%29%3B%0A%20%20%20%20return%20_.values%28obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20number%20of%20elements%20in%20an%20object.%0A%20%20_.size%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%200%3B%0A%20%20%20%20return%20isArrayLike%28obj%29%20%3F%20obj.length%20%3A%20_.keys%28obj%29.length%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Split%20a%20collection%20into%20two%20arrays%3A%20one%20whose%20elements%20all%20satisfy%20the%20given%0A%20%20//%20predicate%2C%20and%20one%20whose%20elements%20all%20do%20not%20satisfy%20the%20predicate.%0A%20%20_.partition%20%3D%20group%28function%28result%2C%20value%2C%20pass%29%20%7B%0A%20%20%20%20result%5Bpass%20%3F%200%20%3A%201%5D.push%28value%29%3B%0A%20%20%7D%2C%20true%29%3B%0A%0A%20%20//%20Array%20Functions%0A%20%20//%20---------------%0A%0A%20%20//%20Get%20the%20first%20element%20of%20an%20array.%20Passing%20%2A%2An%2A%2A%20will%20return%20the%20first%20N%0A%20%20//%20values%20in%20the%20array.%20Aliased%20as%20%60head%60%20and%20%60take%60.%20The%20%2A%2Aguard%2A%2A%20check%0A%20%20//%20allows%20it%20to%20work%20with%20%60_.map%60.%0A%20%20_.first%20%3D%20_.head%20%3D%20_.take%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28array%20%3D%3D%20null%20%7C%7C%20array.length%20%3C%201%29%20return%20n%20%3D%3D%20null%20%3F%20void%200%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20return%20array%5B0%5D%3B%0A%20%20%20%20return%20_.initial%28array%2C%20array.length%20-%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20everything%20but%20the%20last%20entry%20of%20the%20array.%20Especially%20useful%20on%0A%20%20//%20the%20arguments%20object.%20Passing%20%2A%2An%2A%2A%20will%20return%20all%20the%20values%20in%0A%20%20//%20the%20array%2C%20excluding%20the%20last%20N.%0A%20%20_.initial%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20return%20slice.call%28array%2C%200%2C%20Math.max%280%2C%20array.length%20-%20%28n%20%3D%3D%20null%20%7C%7C%20guard%20%3F%201%20%3A%20n%29%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Get%20the%20last%20element%20of%20an%20array.%20Passing%20%2A%2An%2A%2A%20will%20return%20the%20last%20N%0A%20%20//%20values%20in%20the%20array.%0A%20%20_.last%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28array%20%3D%3D%20null%20%7C%7C%20array.length%20%3C%201%29%20return%20n%20%3D%3D%20null%20%3F%20void%200%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20return%20array%5Barray.length%20-%201%5D%3B%0A%20%20%20%20return%20_.rest%28array%2C%20Math.max%280%2C%20array.length%20-%20n%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20everything%20but%20the%20first%20entry%20of%20the%20array.%20Aliased%20as%20%60tail%60%20and%20%60drop%60.%0A%20%20//%20Especially%20useful%20on%20the%20arguments%20object.%20Passing%20an%20%2A%2An%2A%2A%20will%20return%0A%20%20//%20the%20rest%20N%20values%20in%20the%20array.%0A%20%20_.rest%20%3D%20_.tail%20%3D%20_.drop%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20return%20slice.call%28array%2C%20n%20%3D%3D%20null%20%7C%7C%20guard%20%3F%201%20%3A%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Trim%20out%20all%20falsy%20values%20from%20an%20array.%0A%20%20_.compact%20%3D%20function%28array%29%20%7B%0A%20%20%20%20return%20_.filter%28array%2C%20Boolean%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20implementation%20of%20a%20recursive%20%60flatten%60%20function.%0A%20%20var%20flatten%20%3D%20function%28input%2C%20shallow%2C%20strict%2C%20output%29%20%7B%0A%20%20%20%20output%20%3D%20output%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20idx%20%3D%20output.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28input%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20input%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28isArrayLike%28value%29%20%26%26%20%28_.isArray%28value%29%20%7C%7C%20_.isArguments%28value%29%29%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Flatten%20current%20level%20of%20array%20or%20arguments%20object.%0A%20%20%20%20%20%20%20%20if%20%28shallow%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20j%20%3D%200%2C%20len%20%3D%20value.length%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28j%20%3C%20len%29%20output%5Bidx%2B%2B%5D%20%3D%20value%5Bj%2B%2B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20flatten%28value%2C%20shallow%2C%20strict%2C%20output%29%3B%0A%20%20%20%20%20%20%20%20%20%20idx%20%3D%20output.length%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21strict%29%20%7B%0A%20%20%20%20%20%20%20%20output%5Bidx%2B%2B%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20output%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Flatten%20out%20an%20array%2C%20either%20recursively%20%28by%20default%29%2C%20or%20just%20one%20level.%0A%20%20_.flatten%20%3D%20function%28array%2C%20shallow%29%20%7B%0A%20%20%20%20return%20flatten%28array%2C%20shallow%2C%20false%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20version%20of%20the%20array%20that%20does%20not%20contain%20the%20specified%20value%28s%29.%0A%20%20_.without%20%3D%20restArguments%28function%28array%2C%20otherArrays%29%20%7B%0A%20%20%20%20return%20_.difference%28array%2C%20otherArrays%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Produce%20a%20duplicate-free%20version%20of%20the%20array.%20If%20the%20array%20has%20already%0A%20%20//%20been%20sorted%2C%20you%20have%20the%20option%20of%20using%20a%20faster%20algorithm.%0A%20%20//%20The%20faster%20algorithm%20will%20not%20work%20with%20an%20iteratee%20if%20the%20iteratee%0A%20%20//%20is%20not%20a%20one-to-one%20function%2C%20so%20providing%20an%20iteratee%20will%20disable%0A%20%20//%20the%20faster%20algorithm.%0A%20%20//%20Aliased%20as%20%60unique%60.%0A%20%20_.uniq%20%3D%20_.unique%20%3D%20function%28array%2C%20isSorted%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20if%20%28%21_.isBoolean%28isSorted%29%29%20%7B%0A%20%20%20%20%20%20context%20%3D%20iteratee%3B%0A%20%20%20%20%20%20iteratee%20%3D%20isSorted%3B%0A%20%20%20%20%20%20isSorted%20%3D%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28iteratee%20%21%3D%20null%29%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20seen%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20array%5Bi%5D%2C%0A%20%20%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%20%3F%20iteratee%28value%2C%20i%2C%20array%29%20%3A%20value%3B%0A%20%20%20%20%20%20if%20%28isSorted%20%26%26%20%21iteratee%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21i%20%7C%7C%20seen%20%21%3D%3D%20computed%29%20result.push%28value%29%3B%0A%20%20%20%20%20%20%20%20seen%20%3D%20computed%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28iteratee%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21_.contains%28seen%2C%20computed%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20seen.push%28computed%29%3B%0A%20%20%20%20%20%20%20%20%20%20result.push%28value%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21_.contains%28result%2C%20value%29%29%20%7B%0A%20%20%20%20%20%20%20%20result.push%28value%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Produce%20an%20array%20that%20contains%20the%20union%3A%20each%20distinct%20element%20from%20all%20of%0A%20%20//%20the%20passed-in%20arrays.%0A%20%20_.union%20%3D%20restArguments%28function%28arrays%29%20%7B%0A%20%20%20%20return%20_.uniq%28flatten%28arrays%2C%20true%2C%20true%29%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Produce%20an%20array%20that%20contains%20every%20item%20shared%20between%20all%20the%0A%20%20//%20passed-in%20arrays.%0A%20%20_.intersection%20%3D%20function%28array%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20argsLength%20%3D%20arguments.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20item%20%3D%20array%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28_.contains%28result%2C%20item%29%29%20continue%3B%0A%20%20%20%20%20%20var%20j%3B%0A%20%20%20%20%20%20for%20%28j%20%3D%201%3B%20j%20%3C%20argsLength%3B%20j%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21_.contains%28arguments%5Bj%5D%2C%20item%29%29%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28j%20%3D%3D%3D%20argsLength%29%20result.push%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Take%20the%20difference%20between%20one%20array%20and%20a%20number%20of%20other%20arrays.%0A%20%20//%20Only%20the%20elements%20present%20in%20just%20the%20first%20array%20will%20remain.%0A%20%20_.difference%20%3D%20restArguments%28function%28array%2C%20rest%29%20%7B%0A%20%20%20%20rest%20%3D%20flatten%28rest%2C%20true%2C%20true%29%3B%0A%20%20%20%20return%20_.filter%28array%2C%20function%28value%29%7B%0A%20%20%20%20%20%20return%20%21_.contains%28rest%2C%20value%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Complement%20of%20_.zip.%20Unzip%20accepts%20an%20array%20of%20arrays%20and%20groups%0A%20%20//%20each%20array%27s%20elements%20on%20shared%20indices.%0A%20%20_.unzip%20%3D%20function%28array%29%20%7B%0A%20%20%20%20var%20length%20%3D%20array%20%26%26%20_.max%28array%2C%20getLength%29.length%20%7C%7C%200%3B%0A%20%20%20%20var%20result%20%3D%20Array%28length%29%3B%0A%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20result%5Bindex%5D%20%3D%20_.pluck%28array%2C%20index%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Zip%20together%20multiple%20lists%20into%20a%20single%20array%20--%20elements%20that%20share%0A%20%20//%20an%20index%20go%20together.%0A%20%20_.zip%20%3D%20restArguments%28_.unzip%29%3B%0A%0A%20%20//%20Converts%20lists%20into%20objects.%20Pass%20either%20a%20single%20array%20of%20%60%5Bkey%2C%20value%5D%60%0A%20%20//%20pairs%2C%20or%20two%20parallel%20arrays%20of%20the%20same%20length%20--%20one%20of%20keys%2C%20and%20one%20of%0A%20%20//%20the%20corresponding%20values.%20Passing%20by%20pairs%20is%20the%20reverse%20of%20_.pairs.%0A%20%20_.object%20%3D%20function%28list%2C%20values%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28list%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28values%29%20%7B%0A%20%20%20%20%20%20%20%20result%5Blist%5Bi%5D%5D%20%3D%20values%5Bi%5D%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20result%5Blist%5Bi%5D%5B0%5D%5D%20%3D%20list%5Bi%5D%5B1%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generator%20function%20to%20create%20the%20findIndex%20and%20findLastIndex%20functions.%0A%20%20var%20createPredicateIndexFinder%20%3D%20function%28dir%29%20%7B%0A%20%20%20%20return%20function%28array%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20%20%20var%20length%20%3D%20getLength%28array%29%3B%0A%20%20%20%20%20%20var%20index%20%3D%20dir%20%3E%200%20%3F%200%20%3A%20length%20-%201%3B%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3E%3D%200%20%26%26%20index%20%3C%20length%3B%20index%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28predicate%28array%5Bindex%5D%2C%20index%2C%20array%29%29%20return%20index%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20-1%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20first%20index%20on%20an%20array-like%20that%20passes%20a%20predicate%20test.%0A%20%20_.findIndex%20%3D%20createPredicateIndexFinder%281%29%3B%0A%20%20_.findLastIndex%20%3D%20createPredicateIndexFinder%28-1%29%3B%0A%0A%20%20//%20Use%20a%20comparator%20function%20to%20figure%20out%20the%20smallest%20index%20at%20which%0A%20%20//%20an%20object%20should%20be%20inserted%20so%20as%20to%20maintain%20order.%20Uses%20binary%20search.%0A%20%20_.sortedIndex%20%3D%20function%28array%2C%20obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%2C%201%29%3B%0A%20%20%20%20var%20value%20%3D%20iteratee%28obj%29%3B%0A%20%20%20%20var%20low%20%3D%200%2C%20high%20%3D%20getLength%28array%29%3B%0A%20%20%20%20while%20%28low%20%3C%20high%29%20%7B%0A%20%20%20%20%20%20var%20mid%20%3D%20Math.floor%28%28low%20%2B%20high%29%20/%202%29%3B%0A%20%20%20%20%20%20if%20%28iteratee%28array%5Bmid%5D%29%20%3C%20value%29%20low%20%3D%20mid%20%2B%201%3B%20else%20high%20%3D%20mid%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20low%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generator%20function%20to%20create%20the%20indexOf%20and%20lastIndexOf%20functions.%0A%20%20var%20createIndexFinder%20%3D%20function%28dir%2C%20predicateFind%2C%20sortedIndex%29%20%7B%0A%20%20%20%20return%20function%28array%2C%20item%2C%20idx%29%20%7B%0A%20%20%20%20%20%20var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%0A%20%20%20%20%20%20if%20%28typeof%20idx%20%3D%3D%20%27number%27%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28dir%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20i%20%3D%20idx%20%3E%3D%200%20%3F%20idx%20%3A%20Math.max%28idx%20%2B%20length%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20length%20%3D%20idx%20%3E%3D%200%20%3F%20Math.min%28idx%20%2B%201%2C%20length%29%20%3A%20idx%20%2B%20length%20%2B%201%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28sortedIndex%20%26%26%20idx%20%26%26%20length%29%20%7B%0A%20%20%20%20%20%20%20%20idx%20%3D%20sortedIndex%28array%2C%20item%29%3B%0A%20%20%20%20%20%20%20%20return%20array%5Bidx%5D%20%3D%3D%3D%20item%20%3F%20idx%20%3A%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28item%20%21%3D%3D%20item%29%20%7B%0A%20%20%20%20%20%20%20%20idx%20%3D%20predicateFind%28slice.call%28array%2C%20i%2C%20length%29%2C%20_.isNaN%29%3B%0A%20%20%20%20%20%20%20%20return%20idx%20%3E%3D%200%20%3F%20idx%20%2B%20i%20%3A%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20for%20%28idx%20%3D%20dir%20%3E%200%20%3F%20i%20%3A%20length%20-%201%3B%20idx%20%3E%3D%200%20%26%26%20idx%20%3C%20length%3B%20idx%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28array%5Bidx%5D%20%3D%3D%3D%20item%29%20return%20idx%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20-1%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20position%20of%20the%20first%20occurrence%20of%20an%20item%20in%20an%20array%2C%0A%20%20//%20or%20-1%20if%20the%20item%20is%20not%20included%20in%20the%20array.%0A%20%20//%20If%20the%20array%20is%20large%20and%20already%20in%20sort%20order%2C%20pass%20%60true%60%0A%20%20//%20for%20%2A%2AisSorted%2A%2A%20to%20use%20binary%20search.%0A%20%20_.indexOf%20%3D%20createIndexFinder%281%2C%20_.findIndex%2C%20_.sortedIndex%29%3B%0A%20%20_.lastIndexOf%20%3D%20createIndexFinder%28-1%2C%20_.findLastIndex%29%3B%0A%0A%20%20//%20Generate%20an%20integer%20Array%20containing%20an%20arithmetic%20progression.%20A%20port%20of%0A%20%20//%20the%20native%20Python%20%60range%28%29%60%20function.%20See%0A%20%20//%20%5Bthe%20Python%20documentation%5D%28http%3A//docs.python.org/library/functions.html%23range%29.%0A%20%20_.range%20%3D%20function%28start%2C%20stop%2C%20step%29%20%7B%0A%20%20%20%20if%20%28stop%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20stop%20%3D%20start%20%7C%7C%200%3B%0A%20%20%20%20%20%20start%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21step%29%20%7B%0A%20%20%20%20%20%20step%20%3D%20stop%20%3C%20start%20%3F%20-1%20%3A%201%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20length%20%3D%20Math.max%28Math.ceil%28%28stop%20-%20start%29%20/%20step%29%2C%200%29%3B%0A%20%20%20%20var%20range%20%3D%20Array%28length%29%3B%0A%0A%20%20%20%20for%20%28var%20idx%20%3D%200%3B%20idx%20%3C%20length%3B%20idx%2B%2B%2C%20start%20%2B%3D%20step%29%20%7B%0A%20%20%20%20%20%20range%5Bidx%5D%20%3D%20start%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20range%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Chunk%20a%20single%20array%20into%20multiple%20arrays%2C%20each%20containing%20%60count%60%20or%20fewer%0A%20%20//%20items.%0A%20%20_.chunk%20%3D%20function%28array%2C%20count%29%20%7B%0A%20%20%20%20if%20%28count%20%3D%3D%20null%20%7C%7C%20count%20%3C%201%29%20return%20%5B%5D%3B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20i%20%3D%200%2C%20length%20%3D%20array.length%3B%0A%20%20%20%20while%20%28i%20%3C%20length%29%20%7B%0A%20%20%20%20%20%20result.push%28slice.call%28array%2C%20i%2C%20i%20%2B%3D%20count%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Function%20%28ahem%29%20Functions%0A%20%20//%20------------------%0A%0A%20%20//%20Determines%20whether%20to%20execute%20a%20function%20as%20a%20constructor%0A%20%20//%20or%20a%20normal%20function%20with%20the%20provided%20arguments.%0A%20%20var%20executeBound%20%3D%20function%28sourceFunc%2C%20boundFunc%2C%20context%2C%20callingContext%2C%20args%29%20%7B%0A%20%20%20%20if%20%28%21%28callingContext%20instanceof%20boundFunc%29%29%20return%20sourceFunc.apply%28context%2C%20args%29%3B%0A%20%20%20%20var%20self%20%3D%20baseCreate%28sourceFunc.prototype%29%3B%0A%20%20%20%20var%20result%20%3D%20sourceFunc.apply%28self%2C%20args%29%3B%0A%20%20%20%20if%20%28_.isObject%28result%29%29%20return%20result%3B%0A%20%20%20%20return%20self%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20function%20bound%20to%20a%20given%20object%20%28assigning%20%60this%60%2C%20and%20arguments%2C%0A%20%20//%20optionally%29.%20Delegates%20to%20%2A%2AECMAScript%205%2A%2A%27s%20native%20%60Function.bind%60%20if%0A%20%20//%20available.%0A%20%20_.bind%20%3D%20restArguments%28function%28func%2C%20context%2C%20args%29%20%7B%0A%20%20%20%20if%20%28%21_.isFunction%28func%29%29%20throw%20new%20TypeError%28%27Bind%20must%20be%20called%20on%20a%20function%27%29%3B%0A%20%20%20%20var%20bound%20%3D%20restArguments%28function%28callArgs%29%20%7B%0A%20%20%20%20%20%20return%20executeBound%28func%2C%20bound%2C%20context%2C%20this%2C%20args.concat%28callArgs%29%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20bound%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Partially%20apply%20a%20function%20by%20creating%20a%20version%20that%20has%20had%20some%20of%20its%0A%20%20//%20arguments%20pre-filled%2C%20without%20changing%20its%20dynamic%20%60this%60%20context.%20_%20acts%0A%20%20//%20as%20a%20placeholder%20by%20default%2C%20allowing%20any%20combination%20of%20arguments%20to%20be%0A%20%20//%20pre-filled.%20Set%20%60_.partial.placeholder%60%20for%20a%20custom%20placeholder%20argument.%0A%20%20_.partial%20%3D%20restArguments%28function%28func%2C%20boundArgs%29%20%7B%0A%20%20%20%20var%20placeholder%20%3D%20_.partial.placeholder%3B%0A%20%20%20%20var%20bound%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20position%20%3D%200%2C%20length%20%3D%20boundArgs.length%3B%0A%20%20%20%20%20%20var%20args%20%3D%20Array%28length%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20args%5Bi%5D%20%3D%20boundArgs%5Bi%5D%20%3D%3D%3D%20placeholder%20%3F%20arguments%5Bposition%2B%2B%5D%20%3A%20boundArgs%5Bi%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20while%20%28position%20%3C%20arguments.length%29%20args.push%28arguments%5Bposition%2B%2B%5D%29%3B%0A%20%20%20%20%20%20return%20executeBound%28func%2C%20bound%2C%20this%2C%20this%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20bound%3B%0A%20%20%7D%29%3B%0A%0A%20%20_.partial.placeholder%20%3D%20_%3B%0A%0A%20%20//%20Bind%20a%20number%20of%20an%20object%27s%20methods%20to%20that%20object.%20Remaining%20arguments%0A%20%20//%20are%20the%20method%20names%20to%20be%20bound.%20Useful%20for%20ensuring%20that%20all%20callbacks%0A%20%20//%20defined%20on%20an%20object%20belong%20to%20it.%0A%20%20_.bindAll%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20keys%20%3D%20flatten%28keys%2C%20false%2C%20false%29%3B%0A%20%20%20%20var%20index%20%3D%20keys.length%3B%0A%20%20%20%20if%20%28index%20%3C%201%29%20throw%20new%20Error%28%27bindAll%20must%20be%20passed%20function%20names%27%29%3B%0A%20%20%20%20while%20%28index--%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bindex%5D%3B%0A%20%20%20%20%20%20obj%5Bkey%5D%20%3D%20_.bind%28obj%5Bkey%5D%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%3B%0A%0A%20%20//%20Memoize%20an%20expensive%20function%20by%20storing%20its%20results.%0A%20%20_.memoize%20%3D%20function%28func%2C%20hasher%29%20%7B%0A%20%20%20%20var%20memoize%20%3D%20function%28key%29%20%7B%0A%20%20%20%20%20%20var%20cache%20%3D%20memoize.cache%3B%0A%20%20%20%20%20%20var%20address%20%3D%20%27%27%20%2B%20%28hasher%20%3F%20hasher.apply%28this%2C%20arguments%29%20%3A%20key%29%3B%0A%20%20%20%20%20%20if%20%28%21has%28cache%2C%20address%29%29%20cache%5Baddress%5D%20%3D%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20return%20cache%5Baddress%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20memoize.cache%20%3D%20%7B%7D%3B%0A%20%20%20%20return%20memoize%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Delays%20a%20function%20for%20the%20given%20number%20of%20milliseconds%2C%20and%20then%20calls%0A%20%20//%20it%20with%20the%20arguments%20supplied.%0A%20%20_.delay%20%3D%20restArguments%28function%28func%2C%20wait%2C%20args%29%20%7B%0A%20%20%20%20return%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20return%20func.apply%28null%2C%20args%29%3B%0A%20%20%20%20%7D%2C%20wait%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Defers%20a%20function%2C%20scheduling%20it%20to%20run%20after%20the%20current%20call%20stack%20has%0A%20%20//%20cleared.%0A%20%20_.defer%20%3D%20_.partial%28_.delay%2C%20_%2C%201%29%3B%0A%0A%20%20//%20Returns%20a%20function%2C%20that%2C%20when%20invoked%2C%20will%20only%20be%20triggered%20at%20most%20once%0A%20%20//%20during%20a%20given%20window%20of%20time.%20Normally%2C%20the%20throttled%20function%20will%20run%0A%20%20//%20as%20much%20as%20it%20can%2C%20without%20ever%20going%20more%20than%20once%20per%20%60wait%60%20duration%3B%0A%20%20//%20but%20if%20you%27d%20like%20to%20disable%20the%20execution%20on%20the%20leading%20edge%2C%20pass%0A%20%20//%20%60%7Bleading%3A%20false%7D%60.%20To%20disable%20execution%20on%20the%20trailing%20edge%2C%20ditto.%0A%20%20_.throttle%20%3D%20function%28func%2C%20wait%2C%20options%29%20%7B%0A%20%20%20%20var%20timeout%2C%20context%2C%20args%2C%20result%3B%0A%20%20%20%20var%20previous%20%3D%200%3B%0A%20%20%20%20if%20%28%21options%29%20options%20%3D%20%7B%7D%3B%0A%0A%20%20%20%20var%20later%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20previous%20%3D%20options.leading%20%3D%3D%3D%20false%20%3F%200%20%3A%20_.now%28%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20throttled%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20now%20%3D%20_.now%28%29%3B%0A%20%20%20%20%20%20if%20%28%21previous%20%26%26%20options.leading%20%3D%3D%3D%20false%29%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20var%20remaining%20%3D%20wait%20-%20%28now%20-%20previous%29%3B%0A%20%20%20%20%20%20context%20%3D%20this%3B%0A%20%20%20%20%20%20args%20%3D%20arguments%3B%0A%20%20%20%20%20%20if%20%28remaining%20%3C%3D%200%20%7C%7C%20remaining%20%3E%20wait%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28timeout%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20%20%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21timeout%20%26%26%20options.trailing%20%21%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20remaining%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20throttled.cancel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20previous%20%3D%200%3B%0A%20%20%20%20%20%20timeout%20%3D%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20throttled%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%2C%20that%2C%20as%20long%20as%20it%20continues%20to%20be%20invoked%2C%20will%20not%0A%20%20//%20be%20triggered.%20The%20function%20will%20be%20called%20after%20it%20stops%20being%20called%20for%0A%20%20//%20N%20milliseconds.%20If%20%60immediate%60%20is%20passed%2C%20trigger%20the%20function%20on%20the%0A%20%20//%20leading%20edge%2C%20instead%20of%20the%20trailing.%0A%20%20_.debounce%20%3D%20function%28func%2C%20wait%2C%20immediate%29%20%7B%0A%20%20%20%20var%20timeout%2C%20result%3B%0A%0A%20%20%20%20var%20later%20%3D%20function%28context%2C%20args%29%20%7B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20if%20%28args%29%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20debounced%20%3D%20restArguments%28function%28args%29%20%7B%0A%20%20%20%20%20%20if%20%28timeout%29%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20if%20%28immediate%29%20%7B%0A%20%20%20%20%20%20%20%20var%20callNow%20%3D%20%21timeout%3B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20wait%29%3B%0A%20%20%20%20%20%20%20%20if%20%28callNow%29%20result%20%3D%20func.apply%28this%2C%20args%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20_.delay%28later%2C%20wait%2C%20this%2C%20args%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20debounced.cancel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20debounced%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20first%20function%20passed%20as%20an%20argument%20to%20the%20second%2C%0A%20%20//%20allowing%20you%20to%20adjust%20arguments%2C%20run%20code%20before%20and%20after%2C%20and%0A%20%20//%20conditionally%20execute%20the%20original%20function.%0A%20%20_.wrap%20%3D%20function%28func%2C%20wrapper%29%20%7B%0A%20%20%20%20return%20_.partial%28wrapper%2C%20func%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20negated%20version%20of%20the%20passed-in%20predicate.%0A%20%20_.negate%20%3D%20function%28predicate%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20%21predicate.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20is%20the%20composition%20of%20a%20list%20of%20functions%2C%20each%0A%20%20//%20consuming%20the%20return%20value%20of%20the%20function%20that%20follows.%0A%20%20_.compose%20%3D%20function%28%29%20%7B%0A%20%20%20%20var%20args%20%3D%20arguments%3B%0A%20%20%20%20var%20start%20%3D%20args.length%20-%201%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20i%20%3D%20start%3B%0A%20%20%20%20%20%20var%20result%20%3D%20args%5Bstart%5D.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20while%20%28i--%29%20result%20%3D%20args%5Bi%5D.call%28this%2C%20result%29%3B%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20only%20be%20executed%20on%20and%20after%20the%20Nth%20call.%0A%20%20_.after%20%3D%20function%28times%2C%20func%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28--times%20%3C%201%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20only%20be%20executed%20up%20to%20%28but%20not%20including%29%20the%20Nth%20call.%0A%20%20_.before%20%3D%20function%28times%2C%20func%29%20%7B%0A%20%20%20%20var%20memo%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28--times%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20memo%20%3D%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28times%20%3C%3D%201%29%20func%20%3D%20null%3B%0A%20%20%20%20%20%20return%20memo%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20be%20executed%20at%20most%20one%20time%2C%20no%20matter%20how%0A%20%20//%20often%20you%20call%20it.%20Useful%20for%20lazy%20initialization.%0A%20%20_.once%20%3D%20_.partial%28_.before%2C%202%29%3B%0A%0A%20%20_.restArguments%20%3D%20restArguments%3B%0A%0A%20%20//%20Object%20Functions%0A%20%20//%20----------------%0A%0A%20%20//%20Keys%20in%20IE%20%3C%209%20that%20won%27t%20be%20iterated%20by%20%60for%20key%20in%20...%60%20and%20thus%20missed.%0A%20%20var%20hasEnumBug%20%3D%20%21%7BtoString%3A%20null%7D.propertyIsEnumerable%28%27toString%27%29%3B%0A%20%20var%20nonEnumerableProps%20%3D%20%5B%27valueOf%27%2C%20%27isPrototypeOf%27%2C%20%27toString%27%2C%0A%20%20%20%20%27propertyIsEnumerable%27%2C%20%27hasOwnProperty%27%2C%20%27toLocaleString%27%5D%3B%0A%0A%20%20var%20collectNonEnumProps%20%3D%20function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20nonEnumIdx%20%3D%20nonEnumerableProps.length%3B%0A%20%20%20%20var%20constructor%20%3D%20obj.constructor%3B%0A%20%20%20%20var%20proto%20%3D%20_.isFunction%28constructor%29%20%26%26%20constructor.prototype%20%7C%7C%20ObjProto%3B%0A%0A%20%20%20%20//%20Constructor%20is%20a%20special%20case.%0A%20%20%20%20var%20prop%20%3D%20%27constructor%27%3B%0A%20%20%20%20if%20%28has%28obj%2C%20prop%29%20%26%26%20%21_.contains%28keys%2C%20prop%29%29%20keys.push%28prop%29%3B%0A%0A%20%20%20%20while%20%28nonEnumIdx--%29%20%7B%0A%20%20%20%20%20%20prop%20%3D%20nonEnumerableProps%5BnonEnumIdx%5D%3B%0A%20%20%20%20%20%20if%20%28prop%20in%20obj%20%26%26%20obj%5Bprop%5D%20%21%3D%3D%20proto%5Bprop%5D%20%26%26%20%21_.contains%28keys%2C%20prop%29%29%20%7B%0A%20%20%20%20%20%20%20%20keys.push%28prop%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20the%20names%20of%20an%20object%27s%20own%20properties.%0A%20%20//%20Delegates%20to%20%2A%2AECMAScript%205%2A%2A%27s%20native%20%60Object.keys%60.%0A%20%20_.keys%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28nativeKeys%29%20return%20nativeKeys%28obj%29%3B%0A%20%20%20%20var%20keys%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20if%20%28has%28obj%2C%20key%29%29%20keys.push%28key%29%3B%0A%20%20%20%20//%20Ahem%2C%20IE%20%3C%209.%0A%20%20%20%20if%20%28hasEnumBug%29%20collectNonEnumProps%28obj%2C%20keys%29%3B%0A%20%20%20%20return%20keys%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20all%20the%20property%20names%20of%20an%20object.%0A%20%20_.allKeys%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20%5B%5D%3B%0A%20%20%20%20var%20keys%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20keys.push%28key%29%3B%0A%20%20%20%20//%20Ahem%2C%20IE%20%3C%209.%0A%20%20%20%20if%20%28hasEnumBug%29%20collectNonEnumProps%28obj%2C%20keys%29%3B%0A%20%20%20%20return%20keys%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20the%20values%20of%20an%20object%27s%20properties.%0A%20%20_.values%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20keys.length%3B%0A%20%20%20%20var%20values%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20values%5Bi%5D%20%3D%20obj%5Bkeys%5Bi%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20values%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20results%20of%20applying%20the%20iteratee%20to%20each%20element%20of%20the%20object.%0A%20%20//%20In%20contrast%20to%20_.map%20it%20returns%20an%20object.%0A%20%20_.mapObject%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20keys.length%2C%0A%20%20%20%20%20%20%20%20results%20%3D%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%5Bindex%5D%3B%0A%20%20%20%20%20%20results%5BcurrentKey%5D%20%3D%20iteratee%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convert%20an%20object%20into%20a%20list%20of%20%60%5Bkey%2C%20value%5D%60%20pairs.%0A%20%20//%20The%20opposite%20of%20_.object.%0A%20%20_.pairs%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20keys.length%3B%0A%20%20%20%20var%20pairs%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20pairs%5Bi%5D%20%3D%20%5Bkeys%5Bi%5D%2C%20obj%5Bkeys%5Bi%5D%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20pairs%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invert%20the%20keys%20and%20values%20of%20an%20object.%20The%20values%20must%20be%20serializable.%0A%20%20_.invert%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20result%5Bobj%5Bkeys%5Bi%5D%5D%5D%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20sorted%20list%20of%20the%20function%20names%20available%20on%20the%20object.%0A%20%20//%20Aliased%20as%20%60methods%60.%0A%20%20_.functions%20%3D%20_.methods%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20names%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20%7B%0A%20%20%20%20%20%20if%20%28_.isFunction%28obj%5Bkey%5D%29%29%20names.push%28key%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20names.sort%28%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20for%20creating%20assigner%20functions.%0A%20%20var%20createAssigner%20%3D%20function%28keysFunc%2C%20defaults%29%20%7B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20var%20length%20%3D%20arguments.length%3B%0A%20%20%20%20%20%20if%20%28defaults%29%20obj%20%3D%20Object%28obj%29%3B%0A%20%20%20%20%20%20if%20%28length%20%3C%202%20%7C%7C%20obj%20%3D%3D%20null%29%20return%20obj%3B%0A%20%20%20%20%20%20for%20%28var%20index%20%3D%201%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20var%20source%20%3D%20arguments%5Bindex%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20keys%20%3D%20keysFunc%28source%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20l%20%3D%20keys.length%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20l%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21defaults%20%7C%7C%20obj%5Bkey%5D%20%3D%3D%3D%20void%200%29%20obj%5Bkey%5D%20%3D%20source%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20obj%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Extend%20a%20given%20object%20with%20all%20the%20properties%20in%20passed-in%20object%28s%29.%0A%20%20_.extend%20%3D%20createAssigner%28_.allKeys%29%3B%0A%0A%20%20//%20Assigns%20a%20given%20object%20with%20all%20the%20own%20properties%20in%20the%20passed-in%20object%28s%29.%0A%20%20//%20%28https%3A//developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign%29%0A%20%20_.extendOwn%20%3D%20_.assign%20%3D%20createAssigner%28_.keys%29%3B%0A%0A%20%20//%20Returns%20the%20first%20key%20on%20an%20object%20that%20passes%20a%20predicate%20test.%0A%20%20_.findKey%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%2C%20key%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28predicate%28obj%5Bkey%5D%2C%20key%2C%20obj%29%29%20return%20key%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20pick%20helper%20function%20to%20determine%20if%20%60obj%60%20has%20key%20%60key%60.%0A%20%20var%20keyInObj%20%3D%20function%28value%2C%20key%2C%20obj%29%20%7B%0A%20%20%20%20return%20key%20in%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20copy%20of%20the%20object%20only%20containing%20the%20whitelisted%20properties.%0A%20%20_.pick%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%2C%20iteratee%20%3D%20keys%5B0%5D%3B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20result%3B%0A%20%20%20%20if%20%28_.isFunction%28iteratee%29%29%20%7B%0A%20%20%20%20%20%20if%20%28keys.length%20%3E%201%29%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20keys%5B1%5D%29%3B%0A%20%20%20%20%20%20keys%20%3D%20_.allKeys%28obj%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20keyInObj%3B%0A%20%20%20%20%20%20keys%20%3D%20flatten%28keys%2C%20false%2C%20false%29%3B%0A%20%20%20%20%20%20obj%20%3D%20Object%28obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20var%20value%20%3D%20obj%5Bkey%5D%3B%0A%20%20%20%20%20%20if%20%28iteratee%28value%2C%20key%2C%20obj%29%29%20result%5Bkey%5D%20%3D%20value%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Return%20a%20copy%20of%20the%20object%20without%20the%20blacklisted%20properties.%0A%20%20_.omit%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20iteratee%20%3D%20keys%5B0%5D%2C%20context%3B%0A%20%20%20%20if%20%28_.isFunction%28iteratee%29%29%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20_.negate%28iteratee%29%3B%0A%20%20%20%20%20%20if%20%28keys.length%20%3E%201%29%20context%20%3D%20keys%5B1%5D%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20keys%20%3D%20_.map%28flatten%28keys%2C%20false%2C%20false%29%2C%20String%29%3B%0A%20%20%20%20%20%20iteratee%20%3D%20function%28value%2C%20key%29%20%7B%0A%20%20%20%20%20%20%20%20return%20%21_.contains%28keys%2C%20key%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20_.pick%28obj%2C%20iteratee%2C%20context%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Fill%20in%20a%20given%20object%20with%20default%20properties.%0A%20%20_.defaults%20%3D%20createAssigner%28_.allKeys%2C%20true%29%3B%0A%0A%20%20//%20Creates%20an%20object%20that%20inherits%20from%20the%20given%20prototype%20object.%0A%20%20//%20If%20additional%20properties%20are%20provided%20then%20they%20will%20be%20added%20to%20the%0A%20%20//%20created%20object.%0A%20%20_.create%20%3D%20function%28prototype%2C%20props%29%20%7B%0A%20%20%20%20var%20result%20%3D%20baseCreate%28prototype%29%3B%0A%20%20%20%20if%20%28props%29%20_.extendOwn%28result%2C%20props%29%3B%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20%28shallow-cloned%29%20duplicate%20of%20an%20object.%0A%20%20_.clone%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20obj%3B%0A%20%20%20%20return%20_.isArray%28obj%29%20%3F%20obj.slice%28%29%20%3A%20_.extend%28%7B%7D%2C%20obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invokes%20interceptor%20with%20the%20obj%2C%20and%20then%20returns%20obj.%0A%20%20//%20The%20primary%20purpose%20of%20this%20method%20is%20to%20%22tap%20into%22%20a%20method%20chain%2C%20in%0A%20%20//%20order%20to%20perform%20operations%20on%20intermediate%20results%20within%20the%20chain.%0A%20%20_.tap%20%3D%20function%28obj%2C%20interceptor%29%20%7B%0A%20%20%20%20interceptor%28obj%29%3B%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20whether%20an%20object%20has%20a%20given%20set%20of%20%60key%3Avalue%60%20pairs.%0A%20%20_.isMatch%20%3D%20function%28object%2C%20attrs%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28attrs%29%2C%20length%20%3D%20keys.length%3B%0A%20%20%20%20if%20%28object%20%3D%3D%20null%29%20return%20%21length%3B%0A%20%20%20%20var%20obj%20%3D%20Object%28object%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28attrs%5Bkey%5D%20%21%3D%3D%20obj%5Bkey%5D%20%7C%7C%20%21%28key%20in%20obj%29%29%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%0A%20%20//%20Internal%20recursive%20comparison%20function%20for%20%60isEqual%60.%0A%20%20var%20eq%2C%20deepEq%3B%0A%20%20eq%20%3D%20function%28a%2C%20b%2C%20aStack%2C%20bStack%29%20%7B%0A%20%20%20%20//%20Identical%20objects%20are%20equal.%20%600%20%3D%3D%3D%20-0%60%2C%20but%20they%20aren%27t%20identical.%0A%20%20%20%20//%20See%20the%20%5BHarmony%20%60egal%60%20proposal%5D%28http%3A//wiki.ecmascript.org/doku.php%3Fid%3Dharmony%3Aegal%29.%0A%20%20%20%20if%20%28a%20%3D%3D%3D%20b%29%20return%20a%20%21%3D%3D%200%20%7C%7C%201%20/%20a%20%3D%3D%3D%201%20/%20b%3B%0A%20%20%20%20//%20%60null%60%20or%20%60undefined%60%20only%20equal%20to%20itself%20%28strict%20comparison%29.%0A%20%20%20%20if%20%28a%20%3D%3D%20null%20%7C%7C%20b%20%3D%3D%20null%29%20return%20false%3B%0A%20%20%20%20//%20%60NaN%60s%20are%20equivalent%2C%20but%20non-reflexive.%0A%20%20%20%20if%20%28a%20%21%3D%3D%20a%29%20return%20b%20%21%3D%3D%20b%3B%0A%20%20%20%20//%20Exhaust%20primitive%20checks%0A%20%20%20%20var%20type%20%3D%20typeof%20a%3B%0A%20%20%20%20if%20%28type%20%21%3D%3D%20%27function%27%20%26%26%20type%20%21%3D%3D%20%27object%27%20%26%26%20typeof%20b%20%21%3D%20%27object%27%29%20return%20false%3B%0A%20%20%20%20return%20deepEq%28a%2C%20b%2C%20aStack%2C%20bStack%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20recursive%20comparison%20function%20for%20%60isEqual%60.%0A%20%20deepEq%20%3D%20function%28a%2C%20b%2C%20aStack%2C%20bStack%29%20%7B%0A%20%20%20%20//%20Unwrap%20any%20wrapped%20objects.%0A%20%20%20%20if%20%28a%20instanceof%20_%29%20a%20%3D%20a._wrapped%3B%0A%20%20%20%20if%20%28b%20instanceof%20_%29%20b%20%3D%20b._wrapped%3B%0A%20%20%20%20//%20Compare%20%60%5B%5BClass%5D%5D%60%20names.%0A%20%20%20%20var%20className%20%3D%20toString.call%28a%29%3B%0A%20%20%20%20if%20%28className%20%21%3D%3D%20toString.call%28b%29%29%20return%20false%3B%0A%20%20%20%20switch%20%28className%29%20%7B%0A%20%20%20%20%20%20//%20Strings%2C%20numbers%2C%20regular%20expressions%2C%20dates%2C%20and%20booleans%20are%20compared%20by%20value.%0A%20%20%20%20%20%20case%20%27%5Bobject%20RegExp%5D%27%3A%0A%20%20%20%20%20%20//%20RegExps%20are%20coerced%20to%20strings%20for%20comparison%20%28Note%3A%20%27%27%20%2B%20/a/i%20%3D%3D%3D%20%27/a/i%27%29%0A%20%20%20%20%20%20case%20%27%5Bobject%20String%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20Primitives%20and%20their%20corresponding%20object%20wrappers%20are%20equivalent%3B%20thus%2C%20%60%225%22%60%20is%0A%20%20%20%20%20%20%20%20//%20equivalent%20to%20%60new%20String%28%225%22%29%60.%0A%20%20%20%20%20%20%20%20return%20%27%27%20%2B%20a%20%3D%3D%3D%20%27%27%20%2B%20b%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Number%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20%60NaN%60s%20are%20equivalent%2C%20but%20non-reflexive.%0A%20%20%20%20%20%20%20%20//%20Object%28NaN%29%20is%20equivalent%20to%20NaN.%0A%20%20%20%20%20%20%20%20if%20%28%2Ba%20%21%3D%3D%20%2Ba%29%20return%20%2Bb%20%21%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20%20%20//%20An%20%60egal%60%20comparison%20is%20performed%20for%20other%20numeric%20values.%0A%20%20%20%20%20%20%20%20return%20%2Ba%20%3D%3D%3D%200%20%3F%201%20/%20%2Ba%20%3D%3D%3D%201%20/%20b%20%3A%20%2Ba%20%3D%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Date%5D%27%3A%0A%20%20%20%20%20%20case%20%27%5Bobject%20Boolean%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20Coerce%20dates%20and%20booleans%20to%20numeric%20primitive%20values.%20Dates%20are%20compared%20by%20their%0A%20%20%20%20%20%20%20%20//%20millisecond%20representations.%20Note%20that%20invalid%20dates%20with%20millisecond%20representations%0A%20%20%20%20%20%20%20%20//%20of%20%60NaN%60%20are%20not%20equivalent.%0A%20%20%20%20%20%20%20%20return%20%2Ba%20%3D%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Symbol%5D%27%3A%0A%20%20%20%20%20%20%20%20return%20SymbolProto.valueOf.call%28a%29%20%3D%3D%3D%20SymbolProto.valueOf.call%28b%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20areArrays%20%3D%20className%20%3D%3D%3D%20%27%5Bobject%20Array%5D%27%3B%0A%20%20%20%20if%20%28%21areArrays%29%20%7B%0A%20%20%20%20%20%20if%20%28typeof%20a%20%21%3D%20%27object%27%20%7C%7C%20typeof%20b%20%21%3D%20%27object%27%29%20return%20false%3B%0A%0A%20%20%20%20%20%20//%20Objects%20with%20different%20constructors%20are%20not%20equivalent%2C%20but%20%60Object%60s%20or%20%60Array%60s%0A%20%20%20%20%20%20//%20from%20different%20frames%20are.%0A%20%20%20%20%20%20var%20aCtor%20%3D%20a.constructor%2C%20bCtor%20%3D%20b.constructor%3B%0A%20%20%20%20%20%20if%20%28aCtor%20%21%3D%3D%20bCtor%20%26%26%20%21%28_.isFunction%28aCtor%29%20%26%26%20aCtor%20instanceof%20aCtor%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_.isFunction%28bCtor%29%20%26%26%20bCtor%20instanceof%20bCtor%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20%28%27constructor%27%20in%20a%20%26%26%20%27constructor%27%20in%20b%29%29%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20Assume%20equality%20for%20cyclic%20structures.%20The%20algorithm%20for%20detecting%20cyclic%0A%20%20%20%20//%20structures%20is%20adapted%20from%20ES%205.1%20section%2015.12.3%2C%20abstract%20operation%20%60JO%60.%0A%0A%20%20%20%20//%20Initializing%20stack%20of%20traversed%20objects.%0A%20%20%20%20//%20It%27s%20done%20here%20since%20we%20only%20need%20them%20for%20objects%20and%20arrays%20comparison.%0A%20%20%20%20aStack%20%3D%20aStack%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20bStack%20%3D%20bStack%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20length%20%3D%20aStack.length%3B%0A%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20//%20Linear%20search.%20Performance%20is%20inversely%20proportional%20to%20the%20number%20of%0A%20%20%20%20%20%20//%20unique%20nested%20structures.%0A%20%20%20%20%20%20if%20%28aStack%5Blength%5D%20%3D%3D%3D%20a%29%20return%20bStack%5Blength%5D%20%3D%3D%3D%20b%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20Add%20the%20first%20object%20to%20the%20stack%20of%20traversed%20objects.%0A%20%20%20%20aStack.push%28a%29%3B%0A%20%20%20%20bStack.push%28b%29%3B%0A%0A%20%20%20%20//%20Recursively%20compare%20objects%20and%20arrays.%0A%20%20%20%20if%20%28areArrays%29%20%7B%0A%20%20%20%20%20%20//%20Compare%20array%20lengths%20to%20determine%20if%20a%20deep%20comparison%20is%20necessary.%0A%20%20%20%20%20%20length%20%3D%20a.length%3B%0A%20%20%20%20%20%20if%20%28length%20%21%3D%3D%20b.length%29%20return%20false%3B%0A%20%20%20%20%20%20//%20Deep%20compare%20the%20contents%2C%20ignoring%20non-numeric%20properties.%0A%20%20%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21eq%28a%5Blength%5D%2C%20b%5Blength%5D%2C%20aStack%2C%20bStack%29%29%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20//%20Deep%20compare%20objects.%0A%20%20%20%20%20%20var%20keys%20%3D%20_.keys%28a%29%2C%20key%3B%0A%20%20%20%20%20%20length%20%3D%20keys.length%3B%0A%20%20%20%20%20%20//%20Ensure%20that%20both%20objects%20contain%20the%20same%20number%20of%20properties%20before%20comparing%20deep%20equality.%0A%20%20%20%20%20%20if%20%28_.keys%28b%29.length%20%21%3D%3D%20length%29%20return%20false%3B%0A%20%20%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Deep%20compare%20each%20member%0A%20%20%20%20%20%20%20%20key%20%3D%20keys%5Blength%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28%21%28has%28b%2C%20key%29%20%26%26%20eq%28a%5Bkey%5D%2C%20b%5Bkey%5D%2C%20aStack%2C%20bStack%29%29%29%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20Remove%20the%20first%20object%20from%20the%20stack%20of%20traversed%20objects.%0A%20%20%20%20aStack.pop%28%29%3B%0A%20%20%20%20bStack.pop%28%29%3B%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Perform%20a%20deep%20comparison%20to%20check%20if%20two%20objects%20are%20equal.%0A%20%20_.isEqual%20%3D%20function%28a%2C%20b%29%20%7B%0A%20%20%20%20return%20eq%28a%2C%20b%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20array%2C%20string%2C%20or%20object%20empty%3F%0A%20%20//%20An%20%22empty%22%20object%20has%20no%20enumerable%20own-properties.%0A%20%20_.isEmpty%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20true%3B%0A%20%20%20%20if%20%28isArrayLike%28obj%29%20%26%26%20%28_.isArray%28obj%29%20%7C%7C%20_.isString%28obj%29%20%7C%7C%20_.isArguments%28obj%29%29%29%20return%20obj.length%20%3D%3D%3D%200%3B%0A%20%20%20%20return%20_.keys%28obj%29.length%20%3D%3D%3D%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20a%20DOM%20element%3F%0A%20%20_.isElement%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20%21%21%28obj%20%26%26%20obj.nodeType%20%3D%3D%3D%201%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20an%20array%3F%0A%20%20//%20Delegates%20to%20ECMA5%27s%20native%20Array.isArray%0A%20%20_.isArray%20%3D%20nativeIsArray%20%7C%7C%20function%28obj%29%20%7B%0A%20%20%20%20return%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20Array%5D%27%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20variable%20an%20object%3F%0A%20%20_.isObject%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20type%20%3D%20typeof%20obj%3B%0A%20%20%20%20return%20type%20%3D%3D%3D%20%27function%27%20%7C%7C%20type%20%3D%3D%3D%20%27object%27%20%26%26%20%21%21obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20some%20isType%20methods%3A%20isArguments%2C%20isFunction%2C%20isString%2C%20isNumber%2C%20isDate%2C%20isRegExp%2C%20isError%2C%20isMap%2C%20isWeakMap%2C%20isSet%2C%20isWeakSet.%0A%20%20_.each%28%5B%27Arguments%27%2C%20%27Function%27%2C%20%27String%27%2C%20%27Number%27%2C%20%27Date%27%2C%20%27RegExp%27%2C%20%27Error%27%2C%20%27Symbol%27%2C%20%27Map%27%2C%20%27WeakMap%27%2C%20%27Set%27%2C%20%27WeakSet%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20_%5B%27is%27%20%2B%20name%5D%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20%27%20%2B%20name%20%2B%20%27%5D%27%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Define%20a%20fallback%20version%20of%20the%20method%20in%20browsers%20%28ahem%2C%20IE%20%3C%209%29%2C%20where%0A%20%20//%20there%20isn%27t%20any%20inspectable%20%22Arguments%22%20type.%0A%20%20if%20%28%21_.isArguments%28arguments%29%29%20%7B%0A%20%20%20%20_.isArguments%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20has%28obj%2C%20%27callee%27%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20//%20Optimize%20%60isFunction%60%20if%20appropriate.%20Work%20around%20some%20typeof%20bugs%20in%20old%20v8%2C%0A%20%20//%20IE%2011%20%28%231621%29%2C%20Safari%208%20%28%231929%29%2C%20and%20PhantomJS%20%28%232236%29.%0A%20%20var%20nodelist%20%3D%20root.document%20%26%26%20root.document.childNodes%3B%0A%20%20if%20%28typeof%20/./%20%21%3D%20%27function%27%20%26%26%20typeof%20Int8Array%20%21%3D%20%27object%27%20%26%26%20typeof%20nodelist%20%21%3D%20%27function%27%29%20%7B%0A%20%20%20%20_.isFunction%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20typeof%20obj%20%3D%3D%20%27function%27%20%7C%7C%20false%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20//%20Is%20a%20given%20object%20a%20finite%20number%3F%0A%20%20_.isFinite%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20%21_.isSymbol%28obj%29%20%26%26%20isFinite%28obj%29%20%26%26%20%21isNaN%28parseFloat%28obj%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20the%20given%20value%20%60NaN%60%3F%0A%20%20_.isNaN%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20_.isNumber%28obj%29%20%26%26%20isNaN%28obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20a%20boolean%3F%0A%20%20_.isBoolean%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20true%20%7C%7C%20obj%20%3D%3D%3D%20false%20%7C%7C%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20Boolean%5D%27%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20equal%20to%20null%3F%0A%20%20_.isNull%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20null%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20variable%20undefined%3F%0A%20%20_.isUndefined%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20void%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Shortcut%20function%20for%20checking%20if%20an%20object%20has%20a%20given%20property%20directly%0A%20%20//%20on%20itself%20%28in%20other%20words%2C%20not%20on%20a%20prototype%29.%0A%20%20_.has%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20return%20has%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20path%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28obj%20%3D%3D%20null%20%7C%7C%20%21hasOwnProperty.call%28obj%2C%20key%29%29%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20obj%20%3D%20obj%5Bkey%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20%21%21length%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Utility%20Functions%0A%20%20//%20-----------------%0A%0A%20%20//%20Run%20Underscore.js%20in%20%2AnoConflict%2A%20mode%2C%20returning%20the%20%60_%60%20variable%20to%20its%0A%20%20//%20previous%20owner.%20Returns%20a%20reference%20to%20the%20Underscore%20object.%0A%20%20_.noConflict%20%3D%20function%28%29%20%7B%0A%20%20%20%20root._%20%3D%20previousUnderscore%3B%0A%20%20%20%20return%20this%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Keep%20the%20identity%20function%20around%20for%20default%20iteratees.%0A%20%20_.identity%20%3D%20function%28value%29%20%7B%0A%20%20%20%20return%20value%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Predicate-generating%20functions.%20Often%20useful%20outside%20of%20Underscore.%0A%20%20_.constant%20%3D%20function%28value%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20_.noop%20%3D%20function%28%29%7B%7D%3B%0A%0A%20%20//%20Creates%20a%20function%20that%2C%20when%20passed%20an%20object%2C%20will%20traverse%20that%20object%E2%80%99s%0A%20%20//%20properties%20down%20the%20given%20%60path%60%2C%20specified%20as%20an%20array%20of%20keys%20or%20indexes.%0A%20%20_.property%20%3D%20function%28path%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20return%20shallowProperty%28path%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20deepGet%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generates%20a%20function%20for%20a%20given%20object%20that%20returns%20a%20given%20property.%0A%20%20_.propertyOf%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20return%20function%28%29%7B%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28path%29%20%7B%0A%20%20%20%20%20%20return%20%21_.isArray%28path%29%20%3F%20obj%5Bpath%5D%20%3A%20deepGet%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20predicate%20for%20checking%20whether%20an%20object%20has%20a%20given%20set%20of%0A%20%20//%20%60key%3Avalue%60%20pairs.%0A%20%20_.matcher%20%3D%20_.matches%20%3D%20function%28attrs%29%20%7B%0A%20%20%20%20attrs%20%3D%20_.extendOwn%28%7B%7D%2C%20attrs%29%3B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20_.isMatch%28obj%2C%20attrs%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Run%20a%20function%20%2A%2An%2A%2A%20times.%0A%20%20_.times%20%3D%20function%28n%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20accum%20%3D%20Array%28Math.max%280%2C%20n%29%29%3B%0A%20%20%20%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20context%2C%201%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20n%3B%20i%2B%2B%29%20accum%5Bi%5D%20%3D%20iteratee%28i%29%3B%0A%20%20%20%20return%20accum%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20random%20integer%20between%20min%20and%20max%20%28inclusive%29.%0A%20%20_.random%20%3D%20function%28min%2C%20max%29%20%7B%0A%20%20%20%20if%20%28max%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20max%20%3D%20min%3B%0A%20%20%20%20%20%20min%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20min%20%2B%20Math.floor%28Math.random%28%29%20%2A%20%28max%20-%20min%20%2B%201%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20A%20%28possibly%20faster%29%20way%20to%20get%20the%20current%20timestamp%20as%20an%20integer.%0A%20%20_.now%20%3D%20Date.now%20%7C%7C%20function%28%29%20%7B%0A%20%20%20%20return%20new%20Date%28%29.getTime%28%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20List%20of%20HTML%20entities%20for%20escaping.%0A%20%20var%20escapeMap%20%3D%20%7B%0A%20%20%20%20%27%26%27%3A%20%27%26amp%3B%27%2C%0A%20%20%20%20%27%3C%27%3A%20%27%26lt%3B%27%2C%0A%20%20%20%20%27%3E%27%3A%20%27%26gt%3B%27%2C%0A%20%20%20%20%27%22%27%3A%20%27%26quot%3B%27%2C%0A%20%20%20%20%22%27%22%3A%20%27%26%23x27%3B%27%2C%0A%20%20%20%20%27%60%27%3A%20%27%26%23x60%3B%27%0A%20%20%7D%3B%0A%20%20var%20unescapeMap%20%3D%20_.invert%28escapeMap%29%3B%0A%0A%20%20//%20Functions%20for%20escaping%20and%20unescaping%20strings%20to/from%20HTML%20interpolation.%0A%20%20var%20createEscaper%20%3D%20function%28map%29%20%7B%0A%20%20%20%20var%20escaper%20%3D%20function%28match%29%20%7B%0A%20%20%20%20%20%20return%20map%5Bmatch%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20//%20Regexes%20for%20identifying%20a%20key%20that%20needs%20to%20be%20escaped.%0A%20%20%20%20var%20source%20%3D%20%27%28%3F%3A%27%20%2B%20_.keys%28map%29.join%28%27%7C%27%29%20%2B%20%27%29%27%3B%0A%20%20%20%20var%20testRegexp%20%3D%20RegExp%28source%29%3B%0A%20%20%20%20var%20replaceRegexp%20%3D%20RegExp%28source%2C%20%27g%27%29%3B%0A%20%20%20%20return%20function%28string%29%20%7B%0A%20%20%20%20%20%20string%20%3D%20string%20%3D%3D%20null%20%3F%20%27%27%20%3A%20%27%27%20%2B%20string%3B%0A%20%20%20%20%20%20return%20testRegexp.test%28string%29%20%3F%20string.replace%28replaceRegexp%2C%20escaper%29%20%3A%20string%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%20%20_.escape%20%3D%20createEscaper%28escapeMap%29%3B%0A%20%20_.unescape%20%3D%20createEscaper%28unescapeMap%29%3B%0A%0A%20%20//%20Traverses%20the%20children%20of%20%60obj%60%20along%20%60path%60.%20If%20a%20child%20is%20a%20function%2C%20it%0A%20%20//%20is%20invoked%20with%20its%20parent%20as%20context.%20Returns%20the%20value%20of%20the%20final%0A%20%20//%20child%2C%20or%20%60fallback%60%20if%20any%20child%20is%20undefined.%0A%20%20_.result%20%3D%20function%28obj%2C%20path%2C%20fallback%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20path%20%3D%20%5Bpath%5D%3B%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20if%20%28%21length%29%20%7B%0A%20%20%20%20%20%20return%20_.isFunction%28fallback%29%20%3F%20fallback.call%28obj%29%20%3A%20fallback%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20prop%20%3D%20obj%20%3D%3D%20null%20%3F%20void%200%20%3A%20obj%5Bpath%5Bi%5D%5D%3B%0A%20%20%20%20%20%20if%20%28prop%20%3D%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20prop%20%3D%20fallback%3B%0A%20%20%20%20%20%20%20%20i%20%3D%20length%3B%20//%20Ensure%20we%20don%27t%20continue%20iterating.%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20obj%20%3D%20_.isFunction%28prop%29%20%3F%20prop.call%28obj%29%20%3A%20prop%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generate%20a%20unique%20integer%20id%20%28unique%20within%20the%20entire%20client%20session%29.%0A%20%20//%20Useful%20for%20temporary%20DOM%20ids.%0A%20%20var%20idCounter%20%3D%200%3B%0A%20%20_.uniqueId%20%3D%20function%28prefix%29%20%7B%0A%20%20%20%20var%20id%20%3D%20%2B%2BidCounter%20%2B%20%27%27%3B%0A%20%20%20%20return%20prefix%20%3F%20prefix%20%2B%20id%20%3A%20id%3B%0A%20%20%7D%3B%0A%0A%20%20//%20By%20default%2C%20Underscore%20uses%20ERB-style%20template%20delimiters%2C%20change%20the%0A%20%20//%20following%20template%20settings%20to%20use%20alternative%20delimiters.%0A%20%20_.templateSettings%20%3D%20%7B%0A%20%20%20%20evaluate%3A%20/%3C%25%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%2C%0A%20%20%20%20interpolate%3A%20/%3C%25%3D%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%2C%0A%20%20%20%20escape%3A%20/%3C%25-%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%0A%20%20%7D%3B%0A%0A%20%20//%20When%20customizing%20%60templateSettings%60%2C%20if%20you%20don%27t%20want%20to%20define%20an%0A%20%20//%20interpolation%2C%20evaluation%20or%20escaping%20regex%2C%20we%20need%20one%20that%20is%0A%20%20//%20guaranteed%20not%20to%20match.%0A%20%20var%20noMatch%20%3D%20/%28.%29%5E/%3B%0A%0A%20%20//%20Certain%20characters%20need%20to%20be%20escaped%20so%20that%20they%20can%20be%20put%20into%20a%0A%20%20//%20string%20literal.%0A%20%20var%20escapes%20%3D%20%7B%0A%20%20%20%20%22%27%22%3A%20%22%27%22%2C%0A%20%20%20%20%27%5C%5C%27%3A%20%27%5C%5C%27%2C%0A%20%20%20%20%27%5Cr%27%3A%20%27r%27%2C%0A%20%20%20%20%27%5Cn%27%3A%20%27n%27%2C%0A%20%20%20%20%27%5Cu2028%27%3A%20%27u2028%27%2C%0A%20%20%20%20%27%5Cu2029%27%3A%20%27u2029%27%0A%20%20%7D%3B%0A%0A%20%20var%20escapeRegExp%20%3D%20/%5C%5C%7C%27%7C%5Cr%7C%5Cn%7C%5Cu2028%7C%5Cu2029/g%3B%0A%0A%20%20var%20escapeChar%20%3D%20function%28match%29%20%7B%0A%20%20%20%20return%20%27%5C%5C%27%20%2B%20escapes%5Bmatch%5D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20In%20order%20to%20prevent%20third-party%20code%20injection%20through%0A%20%20//%20%60_.templateSettings.variable%60%2C%20we%20test%20it%20against%20the%20following%20regular%0A%20%20//%20expression.%20It%20is%20intentionally%20a%20bit%20more%20liberal%20than%20just%20matching%20valid%0A%20%20//%20identifiers%2C%20but%20still%20prevents%20possible%20loopholes%20through%20defaults%20or%0A%20%20//%20destructuring%20assignment.%0A%20%20var%20bareIdentifier%20%3D%20/%5E%5Cs%2A%28%5Cw%7C%5C%24%29%2B%5Cs%2A%24/%3B%0A%0A%20%20//%20JavaScript%20micro-templating%2C%20similar%20to%20John%20Resig%27s%20implementation.%0A%20%20//%20Underscore%20templating%20handles%20arbitrary%20delimiters%2C%20preserves%20whitespace%2C%0A%20%20//%20and%20correctly%20escapes%20quotes%20within%20interpolated%20code.%0A%20%20//%20NB%3A%20%60oldSettings%60%20only%20exists%20for%20backwards%20compatibility.%0A%20%20_.template%20%3D%20function%28text%2C%20settings%2C%20oldSettings%29%20%7B%0A%20%20%20%20if%20%28%21settings%20%26%26%20oldSettings%29%20settings%20%3D%20oldSettings%3B%0A%20%20%20%20settings%20%3D%20_.defaults%28%7B%7D%2C%20settings%2C%20_.templateSettings%29%3B%0A%0A%20%20%20%20//%20Combine%20delimiters%20into%20one%20regular%20expression%20via%20alternation.%0A%20%20%20%20var%20matcher%20%3D%20RegExp%28%5B%0A%20%20%20%20%20%20%28settings.escape%20%7C%7C%20noMatch%29.source%2C%0A%20%20%20%20%20%20%28settings.interpolate%20%7C%7C%20noMatch%29.source%2C%0A%20%20%20%20%20%20%28settings.evaluate%20%7C%7C%20noMatch%29.source%0A%20%20%20%20%5D.join%28%27%7C%27%29%20%2B%20%27%7C%24%27%2C%20%27g%27%29%3B%0A%0A%20%20%20%20//%20Compile%20the%20template%20source%2C%20escaping%20string%20literals%20appropriately.%0A%20%20%20%20var%20index%20%3D%200%3B%0A%20%20%20%20var%20source%20%3D%20%22__p%2B%3D%27%22%3B%0A%20%20%20%20text.replace%28matcher%2C%20function%28match%2C%20escape%2C%20interpolate%2C%20evaluate%2C%20offset%29%20%7B%0A%20%20%20%20%20%20source%20%2B%3D%20text.slice%28index%2C%20offset%29.replace%28escapeRegExp%2C%20escapeChar%29%3B%0A%20%20%20%20%20%20index%20%3D%20offset%20%2B%20match.length%3B%0A%0A%20%20%20%20%20%20if%20%28escape%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%2B%5Cn%28%28__t%3D%28%22%20%2B%20escape%20%2B%20%22%29%29%3D%3Dnull%3F%27%27%3A_.escape%28__t%29%29%2B%5Cn%27%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28interpolate%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%2B%5Cn%28%28__t%3D%28%22%20%2B%20interpolate%20%2B%20%22%29%29%3D%3Dnull%3F%27%27%3A__t%29%2B%5Cn%27%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28evaluate%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%3B%5Cn%22%20%2B%20evaluate%20%2B%20%22%5Cn__p%2B%3D%27%22%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%20Adobe%20VMs%20need%20the%20match%20returned%20to%20produce%20the%20correct%20offset.%0A%20%20%20%20%20%20return%20match%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20source%20%2B%3D%20%22%27%3B%5Cn%22%3B%0A%0A%20%20%20%20var%20argument%20%3D%20settings.variable%3B%0A%20%20%20%20if%20%28argument%29%20%7B%0A%20%20%20%20%20%20//%20Insure%20against%20third-party%20code%20injection.%0A%20%20%20%20%20%20if%20%28%21bareIdentifier.test%28argument%29%29%20throw%20new%20Error%28%0A%20%20%20%20%20%20%20%20%27variable%20is%20not%20a%20bare%20identifier%3A%20%27%20%2B%20argument%0A%20%20%20%20%20%20%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20//%20If%20a%20variable%20is%20not%20specified%2C%20place%20data%20values%20in%20local%20scope.%0A%20%20%20%20%20%20source%20%3D%20%27with%28obj%7C%7C%7B%7D%29%7B%5Cn%27%20%2B%20source%20%2B%20%27%7D%5Cn%27%3B%0A%20%20%20%20%20%20argument%20%3D%20%27obj%27%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20source%20%3D%20%22var%20__t%2C__p%3D%27%27%2C__j%3DArray.prototype.join%2C%22%20%2B%0A%20%20%20%20%20%20%22print%3Dfunction%28%29%7B__p%2B%3D__j.call%28arguments%2C%27%27%29%3B%7D%3B%5Cn%22%20%2B%0A%20%20%20%20%20%20source%20%2B%20%27return%20__p%3B%5Cn%27%3B%0A%0A%20%20%20%20var%20render%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20render%20%3D%20new%20Function%28argument%2C%20%27_%27%2C%20source%29%3B%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%0A%20%20%20%20%20%20e.source%20%3D%20source%3B%0A%20%20%20%20%20%20throw%20e%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20template%20%3D%20function%28data%29%20%7B%0A%20%20%20%20%20%20return%20render.call%28this%2C%20data%2C%20_%29%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20//%20Provide%20the%20compiled%20source%20as%20a%20convenience%20for%20precompilation.%0A%20%20%20%20template.source%20%3D%20%27function%28%27%20%2B%20argument%20%2B%20%27%29%7B%5Cn%27%20%2B%20source%20%2B%20%27%7D%27%3B%0A%0A%20%20%20%20return%20template%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20a%20%22chain%22%20function.%20Start%20chaining%20a%20wrapped%20Underscore%20object.%0A%20%20_.chain%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20instance%20%3D%20_%28obj%29%3B%0A%20%20%20%20instance._chain%20%3D%20true%3B%0A%20%20%20%20return%20instance%3B%0A%20%20%7D%3B%0A%0A%20%20//%20OOP%0A%20%20//%20---------------%0A%20%20//%20If%20Underscore%20is%20called%20as%20a%20function%2C%20it%20returns%20a%20wrapped%20object%20that%0A%20%20//%20can%20be%20used%20OO-style.%20This%20wrapper%20holds%20altered%20versions%20of%20all%20the%0A%20%20//%20underscore%20functions.%20Wrapped%20objects%20may%20be%20chained.%0A%0A%20%20//%20Helper%20function%20to%20continue%20chaining%20intermediate%20results.%0A%20%20var%20chainResult%20%3D%20function%28instance%2C%20obj%29%20%7B%0A%20%20%20%20return%20instance._chain%20%3F%20_%28obj%29.chain%28%29%20%3A%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20your%20own%20custom%20functions%20to%20the%20Underscore%20object.%0A%20%20_.mixin%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20_.each%28_.functions%28obj%29%2C%20function%28name%29%20%7B%0A%20%20%20%20%20%20var%20func%20%3D%20_%5Bname%5D%20%3D%20obj%5Bname%5D%3B%0A%20%20%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20args%20%3D%20%5Bthis._wrapped%5D%3B%0A%20%20%20%20%20%20%20%20push.apply%28args%2C%20arguments%29%3B%0A%20%20%20%20%20%20%20%20return%20chainResult%28this%2C%20func.apply%28_%2C%20args%29%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20_%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20all%20of%20the%20Underscore%20functions%20to%20the%20wrapper%20object.%0A%20%20_.mixin%28_%29%3B%0A%0A%20%20//%20Add%20all%20mutator%20Array%20functions%20to%20the%20wrapper.%0A%20%20_.each%28%5B%27pop%27%2C%20%27push%27%2C%20%27reverse%27%2C%20%27shift%27%2C%20%27sort%27%2C%20%27splice%27%2C%20%27unshift%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20var%20method%20%3D%20ArrayProto%5Bname%5D%3B%0A%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20obj%20%3D%20this._wrapped%3B%0A%20%20%20%20%20%20method.apply%28obj%2C%20arguments%29%3B%0A%20%20%20%20%20%20if%20%28%28name%20%3D%3D%3D%20%27shift%27%20%7C%7C%20name%20%3D%3D%3D%20%27splice%27%29%20%26%26%20obj.length%20%3D%3D%3D%200%29%20delete%20obj%5B0%5D%3B%0A%20%20%20%20%20%20return%20chainResult%28this%2C%20obj%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Add%20all%20accessor%20Array%20functions%20to%20the%20wrapper.%0A%20%20_.each%28%5B%27concat%27%2C%20%27join%27%2C%20%27slice%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20var%20method%20%3D%20ArrayProto%5Bname%5D%3B%0A%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20chainResult%28this%2C%20method.apply%28this._wrapped%2C%20arguments%29%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Extracts%20the%20result%20from%20a%20wrapped%20and%20chained%20object.%0A%20%20_.prototype.value%20%3D%20function%28%29%20%7B%0A%20%20%20%20return%20this._wrapped%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Provide%20unwrapping%20proxy%20for%20some%20methods%20used%20in%20engine%20operations%0A%20%20//%20such%20as%20arithmetic%20and%20JSON%20stringification.%0A%20%20_.prototype.valueOf%20%3D%20_.prototype.toJSON%20%3D%20_.prototype.value%3B%0A%0A%20%20_.prototype.toString%20%3D%20function%28%29%20%7B%0A%20%20%20%20return%20String%28this._wrapped%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20AMD%20registration%20happens%20at%20the%20end%20for%20compatibility%20with%20AMD%20loaders%0A%20%20//%20that%20may%20not%20enforce%20next-turn%20semantics%20on%20modules.%20Even%20though%20general%0A%20%20//%20practice%20for%20AMD%20registration%20is%20to%20be%20anonymous%2C%20underscore%20registers%0A%20%20//%20as%20a%20named%20module%20because%2C%20like%20jQuery%2C%20it%20is%20a%20base%20library%20that%20is%0A%20%20//%20popular%20enough%20to%20be%20bundled%20in%20a%20third%20party%20lib%2C%20but%20not%20be%20part%20of%0A%20%20//%20an%20AMD%20load%20request.%20Those%20cases%20could%20generate%20an%20error%20when%20an%0A%20%20//%20anonymous%20define%28%29%20is%20called%20outside%20of%20a%20loader%20request.%0A%20%20if%20%28typeof%20define%20%3D%3D%20%27function%27%20%26%26%20define.amd%29%20%7B%0A%20%20%20%20define%28%27underscore%27%2C%20%5B%5D%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20_%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%7D%28%29%29%3B%0A"></script><!--URL:_static/underscore.js-->
-<script src="data:application/javascript,/%2A%0A%20%2A%20doctools.js%0A%20%2A%20~~~~~~~~~~~%0A%20%2A%0A%20%2A%20Sphinx%20JavaScript%20utilities%20for%20all%20documentation.%0A%20%2A%0A%20%2A%20%3Acopyright%3A%20Copyright%202007-2021%20by%20the%20Sphinx%20team%2C%20see%20AUTHORS.%0A%20%2A%20%3Alicense%3A%20BSD%2C%20see%20LICENSE%20for%20details.%0A%20%2A%0A%20%2A/%0A%0A/%2A%2A%0A%20%2A%20select%20a%20different%20prefix%20for%20underscore%0A%20%2A/%0A%24u%20%3D%20_.noConflict%28%29%3B%0A%0A/%2A%2A%0A%20%2A%20make%20the%20code%20below%20compatible%20with%20browsers%20without%0A%20%2A%20an%20installed%20firebug%20like%20debugger%0Aif%20%28%21window.console%20%7C%7C%20%21console.firebug%29%20%7B%0A%20%20var%20names%20%3D%20%5B%22log%22%2C%20%22debug%22%2C%20%22info%22%2C%20%22warn%22%2C%20%22error%22%2C%20%22assert%22%2C%20%22dir%22%2C%0A%20%20%20%20%22dirxml%22%2C%20%22group%22%2C%20%22groupEnd%22%2C%20%22time%22%2C%20%22timeEnd%22%2C%20%22count%22%2C%20%22trace%22%2C%0A%20%20%20%20%22profile%22%2C%20%22profileEnd%22%5D%3B%0A%20%20window.console%20%3D%20%7B%7D%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20names.length%3B%20%2B%2Bi%29%0A%20%20%20%20window.console%5Bnames%5Bi%5D%5D%20%3D%20function%28%29%20%7B%7D%3B%0A%7D%0A%20%2A/%0A%0A/%2A%2A%0A%20%2A%20small%20helper%20function%20to%20urldecode%20strings%0A%20%2A/%0AjQuery.urldecode%20%3D%20function%28x%29%20%7B%0A%20%20return%20decodeURIComponent%28x%29.replace%28/%5C%2B/g%2C%20%27%20%27%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20small%20helper%20function%20to%20urlencode%20strings%0A%20%2A/%0AjQuery.urlencode%20%3D%20encodeURIComponent%3B%0A%0A/%2A%2A%0A%20%2A%20This%20function%20returns%20the%20parsed%20url%20parameters%20of%20the%0A%20%2A%20current%20request.%20Multiple%20values%20per%20key%20are%20supported%2C%0A%20%2A%20it%20will%20always%20return%20arrays%20of%20strings%20for%20the%20value%20parts.%0A%20%2A/%0AjQuery.getQueryParameters%20%3D%20function%28s%29%20%7B%0A%20%20if%20%28typeof%20s%20%3D%3D%3D%20%27undefined%27%29%0A%20%20%20%20s%20%3D%20document.location.search%3B%0A%20%20var%20parts%20%3D%20s.substr%28s.indexOf%28%27%3F%27%29%20%2B%201%29.split%28%27%26%27%29%3B%0A%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20parts.length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20var%20tmp%20%3D%20parts%5Bi%5D.split%28%27%3D%27%2C%202%29%3B%0A%20%20%20%20var%20key%20%3D%20jQuery.urldecode%28tmp%5B0%5D%29%3B%0A%20%20%20%20var%20value%20%3D%20jQuery.urldecode%28tmp%5B1%5D%29%3B%0A%20%20%20%20if%20%28key%20in%20result%29%0A%20%20%20%20%20%20result%5Bkey%5D.push%28value%29%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20result%5Bkey%5D%20%3D%20%5Bvalue%5D%3B%0A%20%20%7D%0A%20%20return%20result%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20highlight%20a%20given%20string%20on%20a%20jquery%20object%20by%20wrapping%20it%20in%0A%20%2A%20span%20elements%20with%20the%20given%20class%20name.%0A%20%2A/%0AjQuery.fn.highlightText%20%3D%20function%28text%2C%20className%29%20%7B%0A%20%20function%20highlight%28node%2C%20addItems%29%20%7B%0A%20%20%20%20if%20%28node.nodeType%20%3D%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20var%20val%20%3D%20node.nodeValue%3B%0A%20%20%20%20%20%20var%20pos%20%3D%20val.toLowerCase%28%29.indexOf%28text%29%3B%0A%20%20%20%20%20%20if%20%28pos%20%3E%3D%200%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%21jQuery%28node.parentNode%29.hasClass%28className%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%21jQuery%28node.parentNode%29.hasClass%28%22nohighlight%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20var%20span%3B%0A%20%20%20%20%20%20%20%20var%20isInSVG%20%3D%20jQuery%28node%29.closest%28%22body%2C%20svg%2C%20foreignObject%22%29.is%28%22svg%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28isInSVG%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20span%20%3D%20document.createElementNS%28%22http%3A//www.w3.org/2000/svg%22%2C%20%22tspan%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20span%20%3D%20document.createElement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20span.className%20%3D%20className%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20span.appendChild%28document.createTextNode%28val.substr%28pos%2C%20text.length%29%29%29%3B%0A%20%20%20%20%20%20%20%20node.parentNode.insertBefore%28span%2C%20node.parentNode.insertBefore%28%0A%20%20%20%20%20%20%20%20%20%20document.createTextNode%28val.substr%28pos%20%2B%20text.length%29%29%2C%0A%20%20%20%20%20%20%20%20%20%20node.nextSibling%29%29%3B%0A%20%20%20%20%20%20%20%20node.nodeValue%20%3D%20val.substr%280%2C%20pos%29%3B%0A%20%20%20%20%20%20%20%20if%20%28isInSVG%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20rect%20%3D%20document.createElementNS%28%22http%3A//www.w3.org/2000/svg%22%2C%20%22rect%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20bbox%20%3D%20node.parentElement.getBBox%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20rect.x.baseVal.value%20%3D%20bbox.x%3B%0A%20%20%20%20%20%20%20%20%20%20rect.y.baseVal.value%20%3D%20bbox.y%3B%0A%20%20%20%20%20%20%20%20%20%20rect.width.baseVal.value%20%3D%20bbox.width%3B%0A%20%20%20%20%20%20%20%20%20%20rect.height.baseVal.value%20%3D%20bbox.height%3B%0A%20%20%20%20%20%20%20%20%20%20rect.setAttribute%28%27class%27%2C%20className%29%3B%0A%20%20%20%20%20%20%20%20%20%20addItems.push%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22parent%22%3A%20node.parentNode%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22target%22%3A%20rect%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28%21jQuery%28node%29.is%28%22button%2C%20select%2C%20textarea%22%29%29%20%7B%0A%20%20%20%20%20%20jQuery.each%28node.childNodes%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20highlight%28this%2C%20addItems%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20var%20addItems%20%3D%20%5B%5D%3B%0A%20%20var%20result%20%3D%20this.each%28function%28%29%20%7B%0A%20%20%20%20highlight%28this%2C%20addItems%29%3B%0A%20%20%7D%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20addItems.length%3B%20%2B%2Bi%29%20%7B%0A%20%20%20%20jQuery%28addItems%5Bi%5D.parent%29.before%28addItems%5Bi%5D.target%29%3B%0A%20%20%7D%0A%20%20return%20result%3B%0A%7D%3B%0A%0A/%2A%0A%20%2A%20backward%20compatibility%20for%20jQuery.browser%0A%20%2A%20This%20will%20be%20supported%20until%20firefox%20bug%20is%20fixed.%0A%20%2A/%0Aif%20%28%21jQuery.browser%29%20%7B%0A%20%20jQuery.uaMatch%20%3D%20function%28ua%29%20%7B%0A%20%20%20%20ua%20%3D%20ua.toLowerCase%28%29%3B%0A%0A%20%20%20%20var%20match%20%3D%20/%28chrome%29%5B%20%5C/%5D%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20/%28webkit%29%5B%20%5C/%5D%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20/%28opera%29%28%3F%3A.%2Aversion%7C%29%5B%20%5C/%5D%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20/%28msie%29%20%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20ua.indexOf%28%22compatible%22%29%20%3C%200%20%26%26%20/%28mozilla%29%28%3F%3A.%2A%3F%20rv%3A%28%5B%5Cw.%5D%2B%29%7C%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20%5B%5D%3B%0A%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20browser%3A%20match%5B%201%20%5D%20%7C%7C%20%22%22%2C%0A%20%20%20%20%20%20version%3A%20match%5B%202%20%5D%20%7C%7C%20%220%22%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%20%20jQuery.browser%20%3D%20%7B%7D%3B%0A%20%20jQuery.browser%5BjQuery.uaMatch%28navigator.userAgent%29.browser%5D%20%3D%20true%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Small%20JavaScript%20module%20for%20the%20documentation.%0A%20%2A/%0Avar%20Documentation%20%3D%20%7B%0A%0A%20%20init%20%3A%20function%28%29%20%7B%0A%20%20%20%20this.fixFirefoxAnchorBug%28%29%3B%0A%20%20%20%20this.highlightSearchWords%28%29%3B%0A%20%20%20%20this.initIndexTable%28%29%3B%0A%20%20%20%20if%20%28DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS%29%20%7B%0A%20%20%20%20%20%20this.initOnKeyListeners%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20i18n%20support%0A%20%20%20%2A/%0A%20%20TRANSLATIONS%20%3A%20%7B%7D%2C%0A%20%20PLURAL_EXPR%20%3A%20function%28n%29%20%7B%20return%20n%20%3D%3D%3D%201%20%3F%200%20%3A%201%3B%20%7D%2C%0A%20%20LOCALE%20%3A%20%27unknown%27%2C%0A%0A%20%20//%20gettext%20and%20ngettext%20don%27t%20access%20this%20so%20that%20the%20functions%0A%20%20//%20can%20safely%20bound%20to%20a%20different%20name%20%28_%20%3D%20Documentation.gettext%29%0A%20%20gettext%20%3A%20function%28string%29%20%7B%0A%20%20%20%20var%20translated%20%3D%20Documentation.TRANSLATIONS%5Bstring%5D%3B%0A%20%20%20%20if%20%28typeof%20translated%20%3D%3D%3D%20%27undefined%27%29%0A%20%20%20%20%20%20return%20string%3B%0A%20%20%20%20return%20%28typeof%20translated%20%3D%3D%3D%20%27string%27%29%20%3F%20translated%20%3A%20translated%5B0%5D%3B%0A%20%20%7D%2C%0A%0A%20%20ngettext%20%3A%20function%28singular%2C%20plural%2C%20n%29%20%7B%0A%20%20%20%20var%20translated%20%3D%20Documentation.TRANSLATIONS%5Bsingular%5D%3B%0A%20%20%20%20if%20%28typeof%20translated%20%3D%3D%3D%20%27undefined%27%29%0A%20%20%20%20%20%20return%20%28n%20%3D%3D%201%29%20%3F%20singular%20%3A%20plural%3B%0A%20%20%20%20return%20translated%5BDocumentation.PLURALEXPR%28n%29%5D%3B%0A%20%20%7D%2C%0A%0A%20%20addTranslations%20%3A%20function%28catalog%29%20%7B%0A%20%20%20%20for%20%28var%20key%20in%20catalog.messages%29%0A%20%20%20%20%20%20this.TRANSLATIONS%5Bkey%5D%20%3D%20catalog.messages%5Bkey%5D%3B%0A%20%20%20%20this.PLURAL_EXPR%20%3D%20new%20Function%28%27n%27%2C%20%27return%20%2B%28%27%20%2B%20catalog.plural_expr%20%2B%20%27%29%27%29%3B%0A%20%20%20%20this.LOCALE%20%3D%20catalog.locale%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20add%20context%20elements%20like%20header%20anchor%20links%0A%20%20%20%2A/%0A%20%20addContextElements%20%3A%20function%28%29%20%7B%0A%20%20%20%20%24%28%27div%5Bid%5D%20%3E%20%3Aheader%3Afirst%27%29.each%28function%28%29%20%7B%0A%20%20%20%20%20%20%24%28%27%3Ca%20class%3D%22headerlink%22%3E%5Cu00B6%3C/a%3E%27%29.%0A%20%20%20%20%20%20attr%28%27href%27%2C%20%27%23%27%20%2B%20this.id%29.%0A%20%20%20%20%20%20attr%28%27title%27%2C%20_%28%27Permalink%20to%20this%20headline%27%29%29.%0A%20%20%20%20%20%20appendTo%28this%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20%24%28%27dt%5Bid%5D%27%29.each%28function%28%29%20%7B%0A%20%20%20%20%20%20%24%28%27%3Ca%20class%3D%22headerlink%22%3E%5Cu00B6%3C/a%3E%27%29.%0A%20%20%20%20%20%20attr%28%27href%27%2C%20%27%23%27%20%2B%20this.id%29.%0A%20%20%20%20%20%20attr%28%27title%27%2C%20_%28%27Permalink%20to%20this%20definition%27%29%29.%0A%20%20%20%20%20%20appendTo%28this%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20workaround%20a%20firefox%20stupidity%0A%20%20%20%2A%20see%3A%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D645075%0A%20%20%20%2A/%0A%20%20fixFirefoxAnchorBug%20%3A%20function%28%29%20%7B%0A%20%20%20%20if%20%28document.location.hash%20%26%26%20%24.browser.mozilla%29%0A%20%20%20%20%20%20window.setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20document.location.href%20%2B%3D%20%27%27%3B%0A%20%20%20%20%20%20%7D%2C%2010%29%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20highlight%20the%20search%20words%20provided%20in%20the%20url%20in%20the%20text%0A%20%20%20%2A/%0A%20%20highlightSearchWords%20%3A%20function%28%29%20%7B%0A%20%20%20%20var%20params%20%3D%20%24.getQueryParameters%28%29%3B%0A%20%20%20%20var%20terms%20%3D%20%28params.highlight%29%20%3F%20params.highlight%5B0%5D.split%28/%5Cs%2B/%29%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28terms.length%29%20%7B%0A%20%20%20%20%20%20var%20body%20%3D%20%24%28%27div.body%27%29%3B%0A%20%20%20%20%20%20if%20%28%21body.length%29%20%7B%0A%20%20%20%20%20%20%20%20body%20%3D%20%24%28%27body%27%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20window.setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%24.each%28terms%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20body.highlightText%28this.toLowerCase%28%29%2C%20%27highlighted%27%29%3B%0A%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%7D%2C%2010%29%3B%0A%20%20%20%20%20%20%24%28%27%3Cp%20class%3D%22highlight-link%22%3E%3Ca%20href%3D%22javascript%3ADocumentation.%27%20%2B%0A%20%20%20%20%20%20%20%20%27hideSearchWords%28%29%22%3E%27%20%2B%20_%28%27Hide%20Search%20Matches%27%29%20%2B%20%27%3C/a%3E%3C/p%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20.appendTo%28%24%28%27%23searchbox%27%29%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20init%20the%20domain%20index%20toggle%20buttons%0A%20%20%20%2A/%0A%20%20initIndexTable%20%3A%20function%28%29%20%7B%0A%20%20%20%20var%20togglers%20%3D%20%24%28%27img.toggler%27%29.click%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20src%20%3D%20%24%28this%29.attr%28%27src%27%29%3B%0A%20%20%20%20%20%20var%20idnum%20%3D%20%24%28this%29.attr%28%27id%27%29.substr%287%29%3B%0A%20%20%20%20%20%20%24%28%27tr.cg-%27%20%2B%20idnum%29.toggle%28%29%3B%0A%20%20%20%20%20%20if%20%28src.substr%28-9%29%20%3D%3D%3D%20%27minus.png%27%29%0A%20%20%20%20%20%20%20%20%24%28this%29.attr%28%27src%27%2C%20src.substr%280%2C%20src.length-9%29%20%2B%20%27plus.png%27%29%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%24%28this%29.attr%28%27src%27%2C%20src.substr%280%2C%20src.length-8%29%20%2B%20%27minus.png%27%29%3B%0A%20%20%20%20%7D%29.css%28%27display%27%2C%20%27%27%29%3B%0A%20%20%20%20if%20%28DOCUMENTATION_OPTIONS.COLLAPSE_INDEX%29%20%7B%0A%20%20%20%20%20%20%20%20togglers.click%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20helper%20function%20to%20hide%20the%20search%20marks%20again%0A%20%20%20%2A/%0A%20%20hideSearchWords%20%3A%20function%28%29%20%7B%0A%20%20%20%20%24%28%27%23searchbox%20.highlight-link%27%29.fadeOut%28300%29%3B%0A%20%20%20%20%24%28%27span.highlighted%27%29.removeClass%28%27highlighted%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20make%20the%20url%20absolute%0A%20%20%20%2A/%0A%20%20makeURL%20%3A%20function%28relativeURL%29%20%7B%0A%20%20%20%20return%20DOCUMENTATION_OPTIONS.URL_ROOT%20%2B%20%27/%27%20%2B%20relativeURL%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20get%20the%20current%20relative%20url%0A%20%20%20%2A/%0A%20%20getCurrentURL%20%3A%20function%28%29%20%7B%0A%20%20%20%20var%20path%20%3D%20document.location.pathname%3B%0A%20%20%20%20var%20parts%20%3D%20path.split%28/%5C//%29%3B%0A%20%20%20%20%24.each%28DOCUMENTATION_OPTIONS.URL_ROOT.split%28/%5C//%29%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28this%20%3D%3D%3D%20%27..%27%29%0A%20%20%20%20%20%20%20%20parts.pop%28%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20var%20url%20%3D%20parts.join%28%27/%27%29%3B%0A%20%20%20%20return%20path.substring%28url.lastIndexOf%28%27/%27%29%20%2B%201%2C%20path.length%20-%201%29%3B%0A%20%20%7D%2C%0A%0A%20%20initOnKeyListeners%3A%20function%28%29%20%7B%0A%20%20%20%20%24%28document%29.keydown%28function%28event%29%20%7B%0A%20%20%20%20%20%20var%20activeElementType%20%3D%20document.activeElement.tagName%3B%0A%20%20%20%20%20%20//%20don%27t%20navigate%20when%20in%20search%20box%2C%20textarea%2C%20dropdown%20or%20button%0A%20%20%20%20%20%20if%20%28activeElementType%20%21%3D%3D%20%27TEXTAREA%27%20%26%26%20activeElementType%20%21%3D%3D%20%27INPUT%27%20%26%26%20activeElementType%20%21%3D%3D%20%27SELECT%27%0A%20%20%20%20%20%20%20%20%20%20%26%26%20activeElementType%20%21%3D%3D%20%27BUTTON%27%20%26%26%20%21event.altKey%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.metaKey%0A%20%20%20%20%20%20%20%20%20%20%26%26%20%21event.shiftKey%29%20%7B%0A%20%20%20%20%20%20%20%20switch%20%28event.keyCode%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%2037%3A%20//%20left%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20prevHref%20%3D%20%24%28%27link%5Brel%3D%22prev%22%5D%27%29.prop%28%27href%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28prevHref%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.location.href%20%3D%20prevHref%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20case%2039%3A%20//%20right%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20nextHref%20%3D%20%24%28%27link%5Brel%3D%22next%22%5D%27%29.prop%28%27href%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28nextHref%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.location.href%20%3D%20nextHref%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%7D%3B%0A%0A//%20quick%20alias%20for%20translations%0A_%20%3D%20Documentation.gettext%3B%0A%0A%24%28document%29.ready%28function%28%29%20%7B%0A%20%20Documentation.init%28%29%3B%0A%7D%29%3B%0A"></script><!--URL:_static/doctools.js-->
-</head><body>
-<div class="document">
-<div class="documentwrapper">
-<div class="bodywrapper">
-<div class="body" role="main">
-<div class="section" id="terms-of-service">
-<h1>Terms Of Service<a class="headerlink" href="#terms-of-service" title="Permalink to this headline">¶</a></h1>
-<p>Last Updated: 09.06.2022</p>
-<p>Welcome! The ICE research center of the Bern University of Applied Sciences
-in Switzerland (“we,” “our,” or “us”) provides an experimental payment service
-through our Internet presence (collectively the “Services”). Before using our
-Services, please read the Terms of Service (the “Terms” or the “Agreement”)
-carefully.</p>
-<div class="section" id="this-is-research">
-<h2>This is research<a class="headerlink" href="#this-is-research" title="Permalink to this headline">¶</a></h2>
-<p>This is a research experiment. Any funds wired to our Bitcoin address are
-considered a donation to our research group. We may use them to enable
-payments following the GNU Taler protocol, or simply keep them at our
-discretion. The service is experimental and may also be discontinued at
-any time, in which case all remaining funds will definitively be kept by
-the research group.</p>
-</div>
-<div class="section" id="overview">
-<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
-<p>This section provides a brief summary of the highlights of this
-Agreement. Please note that when you accept this Agreement, you are accepting
-all of the terms and conditions and not just this section. We and possibly
-other third parties provide Internet services which interact with the Taler
-Wallet’s self-hosted personal payment application. When using the Taler Wallet
-to interact with our Services, you are agreeing to our Terms, so please read
-carefully.</p>
-<div class="section" id="highlights">
-<h3>Highlights:<a class="headerlink" href="#highlights" title="Permalink to this headline">¶</a></h3>
-<blockquote>
-<div><ul class="simple">
-<li><p>You are responsible for keeping the data in your Taler Wallet at all times
-under your control. Any losses arising from you not being in control of
-your private information are your problem.</p></li>
-<li><p>We may transfer funds we receive from our users to any legal
-recipient to the best of our ability within the limitations of the law and
-our implementation. However, the Services offered today are highly
-experimental and the set of recipients of funds is severely restricted.
-Again, we stress this is a research experiment and technically all funds
-held by the exchange are owned by the research group of the university.</p></li>
-<li><p>For our Services, we may charge transaction fees. The specific fee structure
-is provided based on the Taler protocol and should be shown to you when you
-withdraw electronic coins using a Taler Wallet. You agree and understand
-that the Taler protocol allows for the fee structure to change.</p></li>
-<li><p>You agree to not intentionally overwhelm our systems with requests and
-follow responsible disclosure if you find security issues in our services.</p></li>
-<li><p>We cannot be held accountable for our Services not being available due to
-any circumstances. If we modify or terminate our services,
-we may give you the opportunity to recover your funds. However,
-given the experimental state of the Services today, this may not be
-possible. You are strongly advised to limit your use of the Service
-to small-scale experiments expecting total loss of all funds.</p></li>
-</ul>
-</div></blockquote>
-<p>These terms outline approved uses of our Services. The Services and these
-Terms are still at an experimental stage. If you have any questions or
-comments related to this Agreement, please send us a message to
-<a class="reference external" href="mailto:ice%40bfh.ch">ice<span>@</span>bfh<span>.</span>ch</a>. If you do not agree to this Agreement, you must not
-use our Services.</p>
-</div>
-</div>
-<div class="section" id="how-you-accept-this-policy">
-<h2>How you accept this policy<a class="headerlink" href="#how-you-accept-this-policy" title="Permalink to this headline">¶</a></h2>
-<p>By sending funds to us (to top-up your Taler Wallet), you acknowledge that you
-have read, understood, and agreed to these Terms. We reserve the right to
-change these Terms at any time. If you disagree with the change, we may in the
-future offer you with an easy option to recover your unspent funds. However,
-in the current experimental period you acknowledge that this feature is not
-yet available, resulting in your funds being lost unless you accept the new
-Terms. If you continue to use our Services other than to recover your unspent
-funds, your continued use of our Services following any such change will
-signify your acceptance to be bound by the then current Terms. Please check
-the effective date above to determine if there have been any changes since you
-have last reviewed these Terms.</p>
-</div>
-<div class="section" id="services">
-<h2>Services<a class="headerlink" href="#services" title="Permalink to this headline">¶</a></h2>
-<p>We will try to transfer funds that we receive from users to any legal
-recipient to the best of our ability and within the limitations of the
-law. However, the Services offered today are highly experimental and the set
-of recipients of funds is severely restricted. The Taler Wallet can be loaded
-by exchanging fiat or cryptocurrencies against electronic coins. We are
-providing this exchange service. Once your Taler Wallet is loaded with
-electronic coins they can be spent for purchases if the seller is accepting
-Taler as a means of payment. We are not guaranteeing that any seller is
-accepting Taler at all or a particular seller. The seller or recipient of
-deposits of electronic coins must specify the target account, as per the
-design of the Taler protocol. They are responsible for following the protocol
-and specifying the correct bank account, and are solely liable for any losses
-that may arise from specifying the wrong account. We may allow the government
-to link wire transfers to the underlying contract hash. It is the
-responsibility of recipients to preserve the full contracts and to pay
-whatever taxes and charges may be applicable. Technical issues may lead to
-situations where we are unable to make transfers at all or lead to incorrect
-transfers that cannot be reversed. We may refuse to execute transfers if the
-transfers are prohibited by a competent legal authority and we are ordered to
-do so.</p>
-<p>When using our Services, you agree to not take any action that intentionally
-imposes an unreasonable load on our infrastructure. If you find security
-problems in our Services, you agree to first report them to
-<a class="reference external" href="mailto:security%40taler-systems.com">security<span>@</span>taler-systems<span>.</span>com</a> and grant us the right to publish your report. We
-warrant that we will ourselves publicly disclose any issues reported within 3
-months, and that we will not prosecute anyone reporting security issues if
-they did not exploit the issue beyond a proof-of-concept, and followed the
-above responsible disclosure practice.</p>
-</div>
-<div class="section" id="fees">
-<h2>Fees<a class="headerlink" href="#fees" title="Permalink to this headline">¶</a></h2>
-<p>You agree to pay the fees for exchanges and withdrawals completed via the
-Taler Wallet (“Fees”) as defined by us, which we may change from time to
-time. With the exception of wire transfer fees, Taler transaction fees are set
-for any electronic coin at the time of withdrawal and fixed throughout the
-validity period of the respective electronic coin. Your wallet should obtain
-and display applicable fees when withdrawing funds. Fees for coins obtained as
-change may differ from the fees applicable to the original coin. Wire transfer
-fees that are independent from electronic coins may change annually. You
-authorize us to charge or deduct applicable fees owed in connection with
-deposits, exchanges and withdrawals following the rules of the Taler protocol.
-We reserve the right to provide different types of rewards to users either in
-the form of discount for our Services or in any other form at our discretion
-and without prior notice to you.</p>
-</div>
-<div class="section" id="eligibility-and-financial-self-responsibility">
-<h2>Eligibility and Financial self-responsibility<a class="headerlink" href="#eligibility-and-financial-self-responsibility" title="Permalink to this headline">¶</a></h2>
-<p>To be eligible to use our Services, you must be able to form legally binding
-contracts or have the permission of your legal guardian. By using our
-Services, you represent and warrant that you meet all eligibility requirements
-that we outline in these Terms.</p>
-<p>You will be responsible for maintaining the availability, integrity and
-confidentiality of the data stored in your wallet. When you setup a Taler
-Wallet, you are strongly advised to follow the precautionary measures offered
-by the software to minimize the chances to losse access to or control over
-your Wallet data. We will not be liable for any loss or damage arising from
-your failure to comply with this paragraph.</p>
-</div>
-<div class="section" id="copyrights-and-trademarks">
-<h2>Copyrights and trademarks<a class="headerlink" href="#copyrights-and-trademarks" title="Permalink to this headline">¶</a></h2>
-<p>The Taler Wallet is released under the terms of the GNU General Public License
-(GNU GPL). You have the right to access, use, and share the Taler Wallet, in
-modified or unmodified form. However, the GPL is a strong copyleft license,
-which means that any derivative works must be distributed under the same
-license terms as the original software. If you have any questions, you should
-review the GNU GPL’s full terms and conditions at
-<a class="reference external" href="https://www.gnu.org/licenses/gpl-3.0.en.html">https://www.gnu.org/licenses/gpl-3.0.en.html</a>. “Taler” itself is a trademark
-of Taler Systems SA. You are welcome to use the name in relation to processing
-payments using the Taler protocol, assuming your use is compatible with an
-official release from the GNU Project that is not older than two years.</p>
-</div>
-<div class="section" id="limitation-of-liability-disclaimer-of-warranties">
-<h2>Limitation of liability &amp; disclaimer of warranties<a class="headerlink" href="#limitation-of-liability-disclaimer-of-warranties" title="Permalink to this headline">¶</a></h2>
-<p>You understand and agree that we have no control over, and no duty to take any
-action regarding: Failures, disruptions, errors, or delays in processing that
-you may experience while using our Services; The risk of failure of hardware,
-software, and Internet connections; The risk of malicious software being
-introduced or found in the software underlying the Taler Wallet; The risk that
-third parties may obtain unauthorized access to information stored within your
-Taler Wallet, including, but not limited to your Taler Wallet coins or backup
-encryption keys. You release us from all liability related to any losses,
-damages, or claims arising from:</p>
-<ol class="loweralpha simple">
-<li><p>user error such as forgotten passwords, incorrectly constructed
-transactions;</p></li>
-<li><p>server failure or data loss;</p></li>
-<li><p>unauthorized access to the Taler Wallet application;</p></li>
-<li><p>bugs or other errors in the Taler Wallet software; and</p></li>
-<li><p>any unauthorized third party activities, including, but not limited to,
-the use of viruses, phishing, brute forcing, or other means of attack
-against the Taler Wallet. We make no representations concerning any
-Third Party Content contained in or accessed through our Services.</p></li>
-</ol>
-<p>Any other terms, conditions, warranties, or representations associated with
-such content, are solely between you and such organizations and/or
-individuals.</p>
-<p>To the fullest extent permitted by applicable law, in no event will we or any
-of our officers, directors, representatives, agents, servants, counsel,
-employees, consultants, lawyers, and other personnel authorized to act,
-acting, or purporting to act on our behalf (collectively the “Taler Parties”)
-be liable to you under contract, tort, strict liability, negligence, or any
-other legal or equitable theory, for:</p>
-<ol class="loweralpha simple">
-<li><p>any lost profits, data loss, cost of procurement of substitute goods or
-services, or direct, indirect, incidental, special, punitive, compensatory,
-or consequential damages of any kind whatsoever resulting from:</p></li>
-</ol>
-<blockquote>
-<div><ol class="lowerroman simple">
-<li><p>your use of, or conduct in connection with, our services;</p></li>
-<li><p>any unauthorized use of your wallet and/or private key due to your
-failure to maintain the confidentiality of your wallet;</p></li>
-<li><p>any interruption or cessation of transmission to or from the services; or</p></li>
-<li><p>any bugs, viruses, trojan horses, or the like that are found in the Taler
-Wallet software or that may be transmitted to or through our services by
-any third party (regardless of the source of origination), or</p></li>
-</ol>
-</div></blockquote>
-<ol class="loweralpha simple" start="2">
-<li><p>any direct damages.</p></li>
-</ol>
-<p>These limitations apply regardless of legal theory, whether based on tort,
-strict liability, breach of contract, breach of warranty, or any other legal
-theory, and whether or not we were advised of the possibility of such
-damages. Some jurisdictions do not allow the exclusion or limitation of
-liability for consequential or incidental damages, so the above limitation may
-not apply to you.</p>
-<p>Our services are provided “as is” and without warranty of any kind. To the
-maximum extent permitted by law, we disclaim all representations and
-warranties, express or implied, relating to the services and underlying
-software or any content on the services, whether provided or owned by us or by
-any third party, including without limitation, warranties of merchantability,
-fitness for a particular purpose, title, non-infringement, freedom from
-computer virus, and any implied warranties arising from course of dealing,
-course of performance, or usage in trade, all of which are expressly
-disclaimed. In addition, we do not represent or warrant that the content
-accessible via the services is accurate, complete, available, current, free of
-viruses or other harmful components, or that the results of using the services
-will meet your requirements. Some states do not allow the disclaimer of
-implied warranties, so the foregoing disclaimers may not apply to you. This
-paragraph gives you specific legal rights and you may also have other legal
-rights that vary from state to state.</p>
-</div>
-<div class="section" id="indemnity-and-time-limitation-on-claims-and-termination">
-<h2>Indemnity and Time limitation on claims and Termination<a class="headerlink" href="#indemnity-and-time-limitation-on-claims-and-termination" title="Permalink to this headline">¶</a></h2>
-<p>To the extent permitted by applicable law, you agree to defend, indemnify, and
-hold harmless the Taler Parties from and against any and all claims, damages,
-obligations, losses, liabilities, costs or debt, and expenses (including, but
-not limited to, attorney’s fees) arising from: (a) your use of and access to
-the Services; (b) any feedback or submissions you provide to us concerning the
-Taler Wallet; (c) your violation of any term of this Agreement; or (d) your
-violation of any law, rule, or regulation, or the rights of any third party.</p>
-<p>You agree that any claim you may have arising out of or related to your
-relationship with us must be filed within one year after such claim arises,
-otherwise, your claim in permanently barred.</p>
-<p>In the event of termination concerning your use of our Services, your
-obligations under this Agreement will still continue.</p>
-</div>
-<div class="section" id="discontinuance-of-services-and-force-majeure">
-<h2>Discontinuance of services and Force majeure<a class="headerlink" href="#discontinuance-of-services-and-force-majeure" title="Permalink to this headline">¶</a></h2>
-<p>We may, in our sole discretion and without cost to you, with or without prior
-notice, and at any time, modify or discontinue, temporarily or permanently,
-any portion of our Services. We will use the Taler protocol’s provisions to
-notify Wallets if our Services are to be discontinued. It is your
-responsibility to ensure that the Taler Wallet is online at least once every
-three months to observe these notifications. We shall not be held responsible
-or liable for any loss of funds in the event that we discontinue or depreciate
-the Services and your Taler Wallet fails to transfer out the coins within a
-three months notification period.</p>
-<p>We shall not be held liable for any delays, failure in performance, or
-interruptions of service which result directly or indirectly from any cause or
-condition beyond our reasonable control, including but not limited to: any
-delay or failure due to any act of God, act of civil or military authorities,
-act of terrorism, civil disturbance, war, strike or other labor dispute, fire,
-interruption in telecommunications or Internet services or network provider
-services, failure of equipment and/or software, other catastrophe, or any
-other occurrence which is beyond our reasonable control and shall not affect
-the validity and enforceability of any remaining provisions.</p>
-</div>
-<div class="section" id="governing-law-waivers-severability-and-assignment">
-<h2>Governing law, Waivers, Severability and Assignment<a class="headerlink" href="#governing-law-waivers-severability-and-assignment" title="Permalink to this headline">¶</a></h2>
-<p>No matter where you’re located, the laws of Switzerland will govern these
-Terms. If any provisions of these Terms are inconsistent with any applicable
-law, those provisions will be superseded or modified only to the extent such
-provisions are inconsistent. The parties agree to submit to the ordinary
-courts in Bern, Switzerland for exclusive jurisdiction of any dispute
-arising out of or related to your use of the Services or your breach of these
-Terms.</p>
-<p>Our failure to exercise or delay in exercising any right, power, or privilege
-under this Agreement shall not operate as a waiver; nor shall any single or
-partial exercise of any right, power, or privilege preclude any other or
-further exercise thereof.</p>
-<p>You agree that we may assign any of our rights and/or transfer, sub-contract,
-or delegate any of our obligations under these Terms.</p>
-<p>If it turns out that any part of this Agreement is invalid, void, or for any
-reason unenforceable, that term will be deemed severable and limited or
-eliminated to the minimum extent necessary.</p>
-<p>This Agreement sets forth the entire understanding and agreement as to the
-subject matter hereof and supersedes any and all prior discussions,
-agreements, and understandings of any kind (including, without limitation, any
-prior versions of this Agreement) and every nature between us. Except as
-provided for above, any modification to this Agreement must be in writing and
-must be signed by both parties.</p>
-</div>
-<div class="section" id="questions-or-comments">
-<h2>Questions or comments<a class="headerlink" href="#questions-or-comments" title="Permalink to this headline">¶</a></h2>
-<p>We welcome comments, questions, concerns, or suggestions. Please send us a
-message on our contact page at <a class="reference external" href="mailto:legal%40taler-systems.com">legal<span>@</span>taler-systems<span>.</span>com</a>.</p>
-</div>
-</div>
-<div class="clearer"></div>
-</div>
-</div>
-</div>
-<div class="clearer"></div>
-</div>
-</body>
-</html><!--Generated by HTMLArk 2022-11-13 11:11:49.610600. Original URL _build/html/bfh-v0.html--> \ No newline at end of file
diff --git a/contrib/tos/en/bfh-v0.pdf b/contrib/tos/en/bfh-v0.pdf
deleted file mode 100644
index 4ae2471f8..000000000
--- a/contrib/tos/en/bfh-v0.pdf
+++ /dev/null
Binary files differ
diff --git a/contrib/tos/en/bfh-v0.txt b/contrib/tos/en/bfh-v0.txt
deleted file mode 100644
index 19db09844..000000000
--- a/contrib/tos/en/bfh-v0.txt
+++ /dev/null
@@ -1,349 +0,0 @@
-Terms Of Service
-****************
-
-Last Updated: 09.06.2022
-
-Welcome! The ICE research center of the Bern University of Applied
-Sciences in Switzerland (“we,” “our,” or “us”) provides an
-experimental payment service through our Internet presence
-(collectively the “Services”). Before using our Services, please read
-the Terms of Service (the “Terms” or the “Agreement”) carefully.
-
-
-This is research
-================
-
-This is a research experiment. Any funds wired to our Bitcoin address
-are considered a donation to our research group. We may use them to
-enable payments following the GNU Taler protocol, or simply keep them
-at our discretion. The service is experimental and may also be
-discontinued at any time, in which case all remaining funds will
-definitively be kept by the research group.
-
-
-Overview
-========
-
-This section provides a brief summary of the highlights of this
-Agreement. Please note that when you accept this Agreement, you are
-accepting all of the terms and conditions and not just this section.
-We and possibly other third parties provide Internet services which
-interact with the Taler Wallet’s self-hosted personal payment
-application. When using the Taler Wallet to interact with our
-Services, you are agreeing to our Terms, so please read carefully.
-
-
-Highlights:
------------
-
- * You are responsible for keeping the data in your Taler Wallet at
- all times under your control. Any losses arising from you not
- being in control of your private information are your problem.
-
- * We may transfer funds we receive from our users to any legal
- recipient to the best of our ability within the limitations of
- the law and our implementation. However, the Services offered
- today are highly experimental and the set of recipients of funds
- is severely restricted. Again, we stress this is a research
- experiment and technically all funds held by the exchange are
- owned by the research group of the university.
-
- * For our Services, we may charge transaction fees. The specific
- fee structure is provided based on the Taler protocol and should
- be shown to you when you withdraw electronic coins using a Taler
- Wallet. You agree and understand that the Taler protocol allows
- for the fee structure to change.
-
- * You agree to not intentionally overwhelm our systems with
- requests and follow responsible disclosure if you find security
- issues in our services.
-
- * We cannot be held accountable for our Services not being
- available due to any circumstances. If we modify or terminate our
- services, we may give you the opportunity to recover your funds.
- However, given the experimental state of the Services today, this
- may not be possible. You are strongly advised to limit your use
- of the Service to small-scale experiments expecting total loss of
- all funds.
-
-These terms outline approved uses of our Services. The Services and
-these Terms are still at an experimental stage. If you have any
-questions or comments related to this Agreement, please send us a
-message to ice@bfh.ch. If you do not agree to this Agreement, you must
-not use our Services.
-
-
-How you accept this policy
-==========================
-
-By sending funds to us (to top-up your Taler Wallet), you acknowledge
-that you have read, understood, and agreed to these Terms. We reserve
-the right to change these Terms at any time. If you disagree with the
-change, we may in the future offer you with an easy option to recover
-your unspent funds. However, in the current experimental period you
-acknowledge that this feature is not yet available, resulting in your
-funds being lost unless you accept the new Terms. If you continue to
-use our Services other than to recover your unspent funds, your
-continued use of our Services following any such change will signify
-your acceptance to be bound by the then current Terms. Please check
-the effective date above to determine if there have been any changes
-since you have last reviewed these Terms.
-
-
-Services
-========
-
-We will try to transfer funds that we receive from users to any legal
-recipient to the best of our ability and within the limitations of the
-law. However, the Services offered today are highly experimental and
-the set of recipients of funds is severely restricted. The Taler
-Wallet can be loaded by exchanging fiat or cryptocurrencies against
-electronic coins. We are providing this exchange service. Once your
-Taler Wallet is loaded with electronic coins they can be spent for
-purchases if the seller is accepting Taler as a means of payment. We
-are not guaranteeing that any seller is accepting Taler at all or a
-particular seller. The seller or recipient of deposits of electronic
-coins must specify the target account, as per the design of the Taler
-protocol. They are responsible for following the protocol and
-specifying the correct bank account, and are solely liable for any
-losses that may arise from specifying the wrong account. We may allow
-the government to link wire transfers to the underlying contract hash.
-It is the responsibility of recipients to preserve the full contracts
-and to pay whatever taxes and charges may be applicable. Technical
-issues may lead to situations where we are unable to make transfers at
-all or lead to incorrect transfers that cannot be reversed. We may
-refuse to execute transfers if the transfers are prohibited by a
-competent legal authority and we are ordered to do so.
-
-When using our Services, you agree to not take any action that
-intentionally imposes an unreasonable load on our infrastructure. If
-you find security problems in our Services, you agree to first report
-them to security@taler-systems.com and grant us the right to publish
-your report. We warrant that we will ourselves publicly disclose any
-issues reported within 3 months, and that we will not prosecute anyone
-reporting security issues if they did not exploit the issue beyond a
-proof-of-concept, and followed the above responsible disclosure
-practice.
-
-
-Fees
-====
-
-You agree to pay the fees for exchanges and withdrawals completed via
-the Taler Wallet ("Fees") as defined by us, which we may change from
-time to time. With the exception of wire transfer fees, Taler
-transaction fees are set for any electronic coin at the time of
-withdrawal and fixed throughout the validity period of the respective
-electronic coin. Your wallet should obtain and display applicable fees
-when withdrawing funds. Fees for coins obtained as change may differ
-from the fees applicable to the original coin. Wire transfer fees that
-are independent from electronic coins may change annually. You
-authorize us to charge or deduct applicable fees owed in connection
-with deposits, exchanges and withdrawals following the rules of the
-Taler protocol. We reserve the right to provide different types of
-rewards to users either in the form of discount for our Services or in
-any other form at our discretion and without prior notice to you.
-
-
-Eligibility and Financial self-responsibility
-=============================================
-
-To be eligible to use our Services, you must be able to form legally
-binding contracts or have the permission of your legal guardian. By
-using our Services, you represent and warrant that you meet all
-eligibility requirements that we outline in these Terms.
-
-You will be responsible for maintaining the availability, integrity
-and confidentiality of the data stored in your wallet. When you setup
-a Taler Wallet, you are strongly advised to follow the precautionary
-measures offered by the software to minimize the chances to losse
-access to or control over your Wallet data. We will not be liable for
-any loss or damage arising from your failure to comply with this
-paragraph.
-
-
-Copyrights and trademarks
-=========================
-
-The Taler Wallet is released under the terms of the GNU General Public
-License (GNU GPL). You have the right to access, use, and share the
-Taler Wallet, in modified or unmodified form. However, the GPL is a
-strong copyleft license, which means that any derivative works must be
-distributed under the same license terms as the original software. If
-you have any questions, you should review the GNU GPL’s full terms and
-conditions at https://www.gnu.org/licenses/gpl-3.0.en.html. “Taler”
-itself is a trademark of Taler Systems SA. You are welcome to use the
-name in relation to processing payments using the Taler protocol,
-assuming your use is compatible with an official release from the GNU
-Project that is not older than two years.
-
-
-Limitation of liability & disclaimer of warranties
-==================================================
-
-You understand and agree that we have no control over, and no duty to
-take any action regarding: Failures, disruptions, errors, or delays in
-processing that you may experience while using our Services; The risk
-of failure of hardware, software, and Internet connections; The risk
-of malicious software being introduced or found in the software
-underlying the Taler Wallet; The risk that third parties may obtain
-unauthorized access to information stored within your Taler Wallet,
-including, but not limited to your Taler Wallet coins or backup
-encryption keys. You release us from all liability related to any
-losses, damages, or claims arising from:
-
-1. user error such as forgotten passwords, incorrectly constructed
- transactions;
-
-2. server failure or data loss;
-
-3. unauthorized access to the Taler Wallet application;
-
-4. bugs or other errors in the Taler Wallet software; and
-
-5. any unauthorized third party activities, including, but not limited
- to, the use of viruses, phishing, brute forcing, or other means of
- attack against the Taler Wallet. We make no representations
- concerning any Third Party Content contained in or accessed through
- our Services.
-
-Any other terms, conditions, warranties, or representations associated
-with such content, are solely between you and such organizations
-and/or individuals.
-
-To the fullest extent permitted by applicable law, in no event will we
-or any of our officers, directors, representatives, agents, servants,
-counsel, employees, consultants, lawyers, and other personnel
-authorized to act, acting, or purporting to act on our behalf
-(collectively the “Taler Parties”) be liable to you under contract,
-tort, strict liability, negligence, or any other legal or equitable
-theory, for:
-
-1. any lost profits, data loss, cost of procurement of substitute
- goods or services, or direct, indirect, incidental, special,
- punitive, compensatory, or consequential damages of any kind
- whatsoever resulting from:
-
- 1. your use of, or conduct in connection with, our services;
-
- 2. any unauthorized use of your wallet and/or private key due to
- your failure to maintain the confidentiality of your wallet;
-
- 3. any interruption or cessation of transmission to or from the
- services; or
-
- 4. any bugs, viruses, trojan horses, or the like that are found in
- the Taler Wallet software or that may be transmitted to or
- through our services by any third party (regardless of the
- source of origination), or
-
-2. any direct damages.
-
-These limitations apply regardless of legal theory, whether based on
-tort, strict liability, breach of contract, breach of warranty, or any
-other legal theory, and whether or not we were advised of the
-possibility of such damages. Some jurisdictions do not allow the
-exclusion or limitation of liability for consequential or incidental
-damages, so the above limitation may not apply to you.
-
-Our services are provided "as is" and without warranty of any kind. To
-the maximum extent permitted by law, we disclaim all representations
-and warranties, express or implied, relating to the services and
-underlying software or any content on the services, whether provided
-or owned by us or by any third party, including without limitation,
-warranties of merchantability, fitness for a particular purpose,
-title, non-infringement, freedom from computer virus, and any implied
-warranties arising from course of dealing, course of performance, or
-usage in trade, all of which are expressly disclaimed. In addition, we
-do not represent or warrant that the content accessible via the
-services is accurate, complete, available, current, free of viruses or
-other harmful components, or that the results of using the services
-will meet your requirements. Some states do not allow the disclaimer
-of implied warranties, so the foregoing disclaimers may not apply to
-you. This paragraph gives you specific legal rights and you may also
-have other legal rights that vary from state to state.
-
-
-Indemnity and Time limitation on claims and Termination
-=======================================================
-
-To the extent permitted by applicable law, you agree to defend,
-indemnify, and hold harmless the Taler Parties from and against any
-and all claims, damages, obligations, losses, liabilities, costs or
-debt, and expenses (including, but not limited to, attorney’s fees)
-arising from: (a) your use of and access to the Services; (b) any
-feedback or submissions you provide to us concerning the Taler Wallet;
-(c) your violation of any term of this Agreement; or (d) your
-violation of any law, rule, or regulation, or the rights of any third
-party.
-
-You agree that any claim you may have arising out of or related to
-your relationship with us must be filed within one year after such
-claim arises, otherwise, your claim in permanently barred.
-
-In the event of termination concerning your use of our Services, your
-obligations under this Agreement will still continue.
-
-
-Discontinuance of services and Force majeure
-============================================
-
-We may, in our sole discretion and without cost to you, with or
-without prior notice, and at any time, modify or discontinue,
-temporarily or permanently, any portion of our Services. We will use
-the Taler protocol’s provisions to notify Wallets if our Services are
-to be discontinued. It is your responsibility to ensure that the Taler
-Wallet is online at least once every three months to observe these
-notifications. We shall not be held responsible or liable for any loss
-of funds in the event that we discontinue or depreciate the Services
-and your Taler Wallet fails to transfer out the coins within a three
-months notification period.
-
-We shall not be held liable for any delays, failure in performance, or
-interruptions of service which result directly or indirectly from any
-cause or condition beyond our reasonable control, including but not
-limited to: any delay or failure due to any act of God, act of civil
-or military authorities, act of terrorism, civil disturbance, war,
-strike or other labor dispute, fire, interruption in
-telecommunications or Internet services or network provider services,
-failure of equipment and/or software, other catastrophe, or any other
-occurrence which is beyond our reasonable control and shall not affect
-the validity and enforceability of any remaining provisions.
-
-
-Governing law, Waivers, Severability and Assignment
-===================================================
-
-No matter where you’re located, the laws of Switzerland will govern
-these Terms. If any provisions of these Terms are inconsistent with
-any applicable law, those provisions will be superseded or modified
-only to the extent such provisions are inconsistent. The parties agree
-to submit to the ordinary courts in Bern, Switzerland for exclusive
-jurisdiction of any dispute arising out of or related to your use of
-the Services or your breach of these Terms.
-
-Our failure to exercise or delay in exercising any right, power, or
-privilege under this Agreement shall not operate as a waiver; nor
-shall any single or partial exercise of any right, power, or privilege
-preclude any other or further exercise thereof.
-
-You agree that we may assign any of our rights and/or transfer, sub-
-contract, or delegate any of our obligations under these Terms.
-
-If it turns out that any part of this Agreement is invalid, void, or
-for any reason unenforceable, that term will be deemed severable and
-limited or eliminated to the minimum extent necessary.
-
-This Agreement sets forth the entire understanding and agreement as to
-the subject matter hereof and supersedes any and all prior
-discussions, agreements, and understandings of any kind (including,
-without limitation, any prior versions of this Agreement) and every
-nature between us. Except as provided for above, any modification to
-this Agreement must be in writing and must be signed by both parties.
-
-
-Questions or comments
-=====================
-
-We welcome comments, questions, concerns, or suggestions. Please send
-us a message on our contact page at legal@taler-systems.com.
diff --git a/contrib/tos/en/bfh-v0.xml b/contrib/tos/en/bfh-v0.xml
deleted file mode 100644
index eb17031bf..000000000
--- a/contrib/tos/en/bfh-v0.xml
+++ /dev/null
@@ -1,323 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE document PUBLIC "+//IDN docutils.sourceforge.net//DTD Docutils Generic//EN//XML" "http://docutils.sourceforge.net/docs/ref/docutils.dtd">
-<!-- Generated by Docutils 0.16 -->
-<document source="/research/taler/exchange/contrib/tos/bfh-v0.rst">
- <section ids="terms-of-service" names="terms\ of\ service">
- <title>Terms Of Service</title>
- <paragraph>Last Updated: 09.06.2022</paragraph>
- <paragraph>Welcome! The ICE research center of the Bern University of Applied Sciences
- in Switzerland (“we,” “our,” or “us”) provides an experimental payment service
- through our Internet presence (collectively the “Services”). Before using our
- Services, please read the Terms of Service (the “Terms” or the “Agreement”)
- carefully.</paragraph>
- <section ids="this-is-research" names="this\ is\ research">
- <title>This is research</title>
- <paragraph>This is a research experiment. Any funds wired to our Bitcoin address are
- considered a donation to our research group. We may use them to enable
- payments following the GNU Taler protocol, or simply keep them at our
- discretion. The service is experimental and may also be discontinued at
- any time, in which case all remaining funds will definitively be kept by
- the research group.</paragraph>
- </section>
- <section ids="overview" names="overview">
- <title>Overview</title>
- <paragraph>This section provides a brief summary of the highlights of this
- Agreement. Please note that when you accept this Agreement, you are accepting
- all of the terms and conditions and not just this section. We and possibly
- other third parties provide Internet services which interact with the Taler
- Wallet’s self-hosted personal payment application. When using the Taler Wallet
- to interact with our Services, you are agreeing to our Terms, so please read
- carefully.</paragraph>
- <section ids="highlights" names="highlights:">
- <title>Highlights:</title>
- <block_quote>
- <bullet_list bullet="•">
- <list_item>
- <paragraph>You are responsible for keeping the data in your Taler Wallet at all times
- under your control. Any losses arising from you not being in control of
- your private information are your problem.</paragraph>
- </list_item>
- <list_item>
- <paragraph>We may transfer funds we receive from our users to any legal
- recipient to the best of our ability within the limitations of the law and
- our implementation. However, the Services offered today are highly
- experimental and the set of recipients of funds is severely restricted.
- Again, we stress this is a research experiment and technically all funds
- held by the exchange are owned by the research group of the university.</paragraph>
- </list_item>
- <list_item>
- <paragraph>For our Services, we may charge transaction fees. The specific fee structure
- is provided based on the Taler protocol and should be shown to you when you
- withdraw electronic coins using a Taler Wallet. You agree and understand
- that the Taler protocol allows for the fee structure to change.</paragraph>
- </list_item>
- <list_item>
- <paragraph>You agree to not intentionally overwhelm our systems with requests and
- follow responsible disclosure if you find security issues in our services.</paragraph>
- </list_item>
- <list_item>
- <paragraph>We cannot be held accountable for our Services not being available due to
- any circumstances. If we modify or terminate our services,
- we may give you the opportunity to recover your funds. However,
- given the experimental state of the Services today, this may not be
- possible. You are strongly advised to limit your use of the Service
- to small-scale experiments expecting total loss of all funds.</paragraph>
- </list_item>
- </bullet_list>
- </block_quote>
- <paragraph>These terms outline approved uses of our Services. The Services and these
- Terms are still at an experimental stage. If you have any questions or
- comments related to this Agreement, please send us a message to
- <reference refuri="mailto:ice@bfh.ch">ice@bfh.ch</reference>. If you do not agree to this Agreement, you must not
- use our Services.</paragraph>
- </section>
- </section>
- <section ids="how-you-accept-this-policy" names="how\ you\ accept\ this\ policy">
- <title>How you accept this policy</title>
- <paragraph>By sending funds to us (to top-up your Taler Wallet), you acknowledge that you
- have read, understood, and agreed to these Terms. We reserve the right to
- change these Terms at any time. If you disagree with the change, we may in the
- future offer you with an easy option to recover your unspent funds. However,
- in the current experimental period you acknowledge that this feature is not
- yet available, resulting in your funds being lost unless you accept the new
- Terms. If you continue to use our Services other than to recover your unspent
- funds, your continued use of our Services following any such change will
- signify your acceptance to be bound by the then current Terms. Please check
- the effective date above to determine if there have been any changes since you
- have last reviewed these Terms.</paragraph>
- </section>
- <section ids="services" names="services">
- <title>Services</title>
- <paragraph>We will try to transfer funds that we receive from users to any legal
- recipient to the best of our ability and within the limitations of the
- law. However, the Services offered today are highly experimental and the set
- of recipients of funds is severely restricted. The Taler Wallet can be loaded
- by exchanging fiat or cryptocurrencies against electronic coins. We are
- providing this exchange service. Once your Taler Wallet is loaded with
- electronic coins they can be spent for purchases if the seller is accepting
- Taler as a means of payment. We are not guaranteeing that any seller is
- accepting Taler at all or a particular seller. The seller or recipient of
- deposits of electronic coins must specify the target account, as per the
- design of the Taler protocol. They are responsible for following the protocol
- and specifying the correct bank account, and are solely liable for any losses
- that may arise from specifying the wrong account. We may allow the government
- to link wire transfers to the underlying contract hash. It is the
- responsibility of recipients to preserve the full contracts and to pay
- whatever taxes and charges may be applicable. Technical issues may lead to
- situations where we are unable to make transfers at all or lead to incorrect
- transfers that cannot be reversed. We may refuse to execute transfers if the
- transfers are prohibited by a competent legal authority and we are ordered to
- do so.</paragraph>
- <paragraph>When using our Services, you agree to not take any action that intentionally
- imposes an unreasonable load on our infrastructure. If you find security
- problems in our Services, you agree to first report them to
- <reference refuri="mailto:security@taler-systems.com">security@taler-systems.com</reference> and grant us the right to publish your report. We
- warrant that we will ourselves publicly disclose any issues reported within 3
- months, and that we will not prosecute anyone reporting security issues if
- they did not exploit the issue beyond a proof-of-concept, and followed the
- above responsible disclosure practice.</paragraph>
- </section>
- <section ids="fees" names="fees">
- <title>Fees</title>
- <paragraph>You agree to pay the fees for exchanges and withdrawals completed via the
- Taler Wallet (“Fees”) as defined by us, which we may change from time to
- time. With the exception of wire transfer fees, Taler transaction fees are set
- for any electronic coin at the time of withdrawal and fixed throughout the
- validity period of the respective electronic coin. Your wallet should obtain
- and display applicable fees when withdrawing funds. Fees for coins obtained as
- change may differ from the fees applicable to the original coin. Wire transfer
- fees that are independent from electronic coins may change annually. You
- authorize us to charge or deduct applicable fees owed in connection with
- deposits, exchanges and withdrawals following the rules of the Taler protocol.
- We reserve the right to provide different types of rewards to users either in
- the form of discount for our Services or in any other form at our discretion
- and without prior notice to you.</paragraph>
- </section>
- <section ids="eligibility-and-financial-self-responsibility" names="eligibility\ and\ financial\ self-responsibility">
- <title>Eligibility and Financial self-responsibility</title>
- <paragraph>To be eligible to use our Services, you must be able to form legally binding
- contracts or have the permission of your legal guardian. By using our
- Services, you represent and warrant that you meet all eligibility requirements
- that we outline in these Terms.</paragraph>
- <paragraph>You will be responsible for maintaining the availability, integrity and
- confidentiality of the data stored in your wallet. When you setup a Taler
- Wallet, you are strongly advised to follow the precautionary measures offered
- by the software to minimize the chances to losse access to or control over
- your Wallet data. We will not be liable for any loss or damage arising from
- your failure to comply with this paragraph.</paragraph>
- </section>
- <section ids="copyrights-and-trademarks" names="copyrights\ and\ trademarks">
- <title>Copyrights and trademarks</title>
- <paragraph>The Taler Wallet is released under the terms of the GNU General Public License
- (GNU GPL). You have the right to access, use, and share the Taler Wallet, in
- modified or unmodified form. However, the GPL is a strong copyleft license,
- which means that any derivative works must be distributed under the same
- license terms as the original software. If you have any questions, you should
- review the GNU GPL’s full terms and conditions at
- <reference refuri="https://www.gnu.org/licenses/gpl-3.0.en.html">https://www.gnu.org/licenses/gpl-3.0.en.html</reference>. “Taler” itself is a trademark
- of Taler Systems SA. You are welcome to use the name in relation to processing
- payments using the Taler protocol, assuming your use is compatible with an
- official release from the GNU Project that is not older than two years.</paragraph>
- </section>
- <section ids="limitation-of-liability-disclaimer-of-warranties" names="limitation\ of\ liability\ &amp;\ disclaimer\ of\ warranties">
- <title>Limitation of liability &amp; disclaimer of warranties</title>
- <paragraph>You understand and agree that we have no control over, and no duty to take any
- action regarding: Failures, disruptions, errors, or delays in processing that
- you may experience while using our Services; The risk of failure of hardware,
- software, and Internet connections; The risk of malicious software being
- introduced or found in the software underlying the Taler Wallet; The risk that
- third parties may obtain unauthorized access to information stored within your
- Taler Wallet, including, but not limited to your Taler Wallet coins or backup
- encryption keys. You release us from all liability related to any losses,
- damages, or claims arising from:</paragraph>
- <enumerated_list enumtype="loweralpha" prefix="(" suffix=")">
- <list_item>
- <paragraph>user error such as forgotten passwords, incorrectly constructed
- transactions;</paragraph>
- </list_item>
- <list_item>
- <paragraph>server failure or data loss;</paragraph>
- </list_item>
- <list_item>
- <paragraph>unauthorized access to the Taler Wallet application;</paragraph>
- </list_item>
- <list_item>
- <paragraph>bugs or other errors in the Taler Wallet software; and</paragraph>
- </list_item>
- <list_item>
- <paragraph>any unauthorized third party activities, including, but not limited to,
- the use of viruses, phishing, brute forcing, or other means of attack
- against the Taler Wallet. We make no representations concerning any
- Third Party Content contained in or accessed through our Services.</paragraph>
- </list_item>
- </enumerated_list>
- <paragraph>Any other terms, conditions, warranties, or representations associated with
- such content, are solely between you and such organizations and/or
- individuals.</paragraph>
- <paragraph>To the fullest extent permitted by applicable law, in no event will we or any
- of our officers, directors, representatives, agents, servants, counsel,
- employees, consultants, lawyers, and other personnel authorized to act,
- acting, or purporting to act on our behalf (collectively the “Taler Parties”)
- be liable to you under contract, tort, strict liability, negligence, or any
- other legal or equitable theory, for:</paragraph>
- <enumerated_list enumtype="loweralpha" prefix="(" suffix=")">
- <list_item>
- <paragraph>any lost profits, data loss, cost of procurement of substitute goods or
- services, or direct, indirect, incidental, special, punitive, compensatory,
- or consequential damages of any kind whatsoever resulting from:</paragraph>
- </list_item>
- </enumerated_list>
- <block_quote>
- <enumerated_list enumtype="lowerroman" prefix="(" suffix=")">
- <list_item>
- <paragraph>your use of, or conduct in connection with, our services;</paragraph>
- </list_item>
- <list_item>
- <paragraph>any unauthorized use of your wallet and/or private key due to your
- failure to maintain the confidentiality of your wallet;</paragraph>
- </list_item>
- <list_item>
- <paragraph>any interruption or cessation of transmission to or from the services; or</paragraph>
- </list_item>
- <list_item>
- <paragraph>any bugs, viruses, trojan horses, or the like that are found in the Taler
- Wallet software or that may be transmitted to or through our services by
- any third party (regardless of the source of origination), or</paragraph>
- </list_item>
- </enumerated_list>
- </block_quote>
- <enumerated_list enumtype="loweralpha" prefix="(" start="2" suffix=")">
- <list_item>
- <paragraph>any direct damages.</paragraph>
- </list_item>
- </enumerated_list>
- <paragraph>These limitations apply regardless of legal theory, whether based on tort,
- strict liability, breach of contract, breach of warranty, or any other legal
- theory, and whether or not we were advised of the possibility of such
- damages. Some jurisdictions do not allow the exclusion or limitation of
- liability for consequential or incidental damages, so the above limitation may
- not apply to you.</paragraph>
- <paragraph>Our services are provided “as is” and without warranty of any kind. To the
- maximum extent permitted by law, we disclaim all representations and
- warranties, express or implied, relating to the services and underlying
- software or any content on the services, whether provided or owned by us or by
- any third party, including without limitation, warranties of merchantability,
- fitness for a particular purpose, title, non-infringement, freedom from
- computer virus, and any implied warranties arising from course of dealing,
- course of performance, or usage in trade, all of which are expressly
- disclaimed. In addition, we do not represent or warrant that the content
- accessible via the services is accurate, complete, available, current, free of
- viruses or other harmful components, or that the results of using the services
- will meet your requirements. Some states do not allow the disclaimer of
- implied warranties, so the foregoing disclaimers may not apply to you. This
- paragraph gives you specific legal rights and you may also have other legal
- rights that vary from state to state.</paragraph>
- </section>
- <section ids="indemnity-and-time-limitation-on-claims-and-termination" names="indemnity\ and\ time\ limitation\ on\ claims\ and\ termination">
- <title>Indemnity and Time limitation on claims and Termination</title>
- <paragraph>To the extent permitted by applicable law, you agree to defend, indemnify, and
- hold harmless the Taler Parties from and against any and all claims, damages,
- obligations, losses, liabilities, costs or debt, and expenses (including, but
- not limited to, attorney’s fees) arising from: (a) your use of and access to
- the Services; (b) any feedback or submissions you provide to us concerning the
- Taler Wallet; (c) your violation of any term of this Agreement; or (d) your
- violation of any law, rule, or regulation, or the rights of any third party.</paragraph>
- <paragraph>You agree that any claim you may have arising out of or related to your
- relationship with us must be filed within one year after such claim arises,
- otherwise, your claim in permanently barred.</paragraph>
- <paragraph>In the event of termination concerning your use of our Services, your
- obligations under this Agreement will still continue.</paragraph>
- </section>
- <section ids="discontinuance-of-services-and-force-majeure" names="discontinuance\ of\ services\ and\ force\ majeure">
- <title>Discontinuance of services and Force majeure</title>
- <paragraph>We may, in our sole discretion and without cost to you, with or without prior
- notice, and at any time, modify or discontinue, temporarily or permanently,
- any portion of our Services. We will use the Taler protocol’s provisions to
- notify Wallets if our Services are to be discontinued. It is your
- responsibility to ensure that the Taler Wallet is online at least once every
- three months to observe these notifications. We shall not be held responsible
- or liable for any loss of funds in the event that we discontinue or depreciate
- the Services and your Taler Wallet fails to transfer out the coins within a
- three months notification period.</paragraph>
- <paragraph>We shall not be held liable for any delays, failure in performance, or
- interruptions of service which result directly or indirectly from any cause or
- condition beyond our reasonable control, including but not limited to: any
- delay or failure due to any act of God, act of civil or military authorities,
- act of terrorism, civil disturbance, war, strike or other labor dispute, fire,
- interruption in telecommunications or Internet services or network provider
- services, failure of equipment and/or software, other catastrophe, or any
- other occurrence which is beyond our reasonable control and shall not affect
- the validity and enforceability of any remaining provisions.</paragraph>
- </section>
- <section ids="governing-law-waivers-severability-and-assignment" names="governing\ law,\ waivers,\ severability\ and\ assignment">
- <title>Governing law, Waivers, Severability and Assignment</title>
- <paragraph>No matter where you’re located, the laws of Switzerland will govern these
- Terms. If any provisions of these Terms are inconsistent with any applicable
- law, those provisions will be superseded or modified only to the extent such
- provisions are inconsistent. The parties agree to submit to the ordinary
- courts in Bern, Switzerland for exclusive jurisdiction of any dispute
- arising out of or related to your use of the Services or your breach of these
- Terms.</paragraph>
- <paragraph>Our failure to exercise or delay in exercising any right, power, or privilege
- under this Agreement shall not operate as a waiver; nor shall any single or
- partial exercise of any right, power, or privilege preclude any other or
- further exercise thereof.</paragraph>
- <paragraph>You agree that we may assign any of our rights and/or transfer, sub-contract,
- or delegate any of our obligations under these Terms.</paragraph>
- <paragraph>If it turns out that any part of this Agreement is invalid, void, or for any
- reason unenforceable, that term will be deemed severable and limited or
- eliminated to the minimum extent necessary.</paragraph>
- <paragraph>This Agreement sets forth the entire understanding and agreement as to the
- subject matter hereof and supersedes any and all prior discussions,
- agreements, and understandings of any kind (including, without limitation, any
- prior versions of this Agreement) and every nature between us. Except as
- provided for above, any modification to this Agreement must be in writing and
- must be signed by both parties.</paragraph>
- </section>
- <section ids="questions-or-comments" names="questions\ or\ comments">
- <title>Questions or comments</title>
- <paragraph>We welcome comments, questions, concerns, or suggestions. Please send us a
- message on our contact page at <reference refuri="mailto:legal@taler-systems.com">legal@taler-systems.com</reference>.</paragraph>
- </section>
- </section>
-</document>
diff --git a/contrib/tos/en/tos-v0.epub b/contrib/tos/en/tos-v0.epub
deleted file mode 100644
index af588b180..000000000
--- a/contrib/tos/en/tos-v0.epub
+++ /dev/null
Binary files differ
diff --git a/contrib/tos/en/tos-v0.html b/contrib/tos/en/tos-v0.html
deleted file mode 100644
index 9693e60e6..000000000
--- a/contrib/tos/en/tos-v0.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<html lang="en">
-<head>
-<meta charset="utf-8"/>
-<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
-<title>Terms Of Service — Taler Exchange Terms of Service</title>
-<link href="data:text/css,pre%20%7B%20line-height%3A%20125%25%3B%20margin%3A%200%3B%20%7D%0Atd.linenos%20pre%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23f0f0f0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Aspan.linenos%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23f0f0f0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Atd.linenos%20pre.special%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23ffffc0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Aspan.linenos.special%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23ffffc0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0A.highlight%20.hll%20%7B%20background-color%3A%20%23ffffcc%20%7D%0A.highlight%20%7B%20background%3A%20%23eeffcc%3B%20%7D%0A.highlight%20.c%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment%20%2A/%0A.highlight%20.err%20%7B%20border%3A%201px%20solid%20%23FF0000%20%7D%20/%2A%20Error%20%2A/%0A.highlight%20.k%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword%20%2A/%0A.highlight%20.o%20%7B%20color%3A%20%23666666%20%7D%20/%2A%20Operator%20%2A/%0A.highlight%20.ch%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Hashbang%20%2A/%0A.highlight%20.cm%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Multiline%20%2A/%0A.highlight%20.cp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Comment.Preproc%20%2A/%0A.highlight%20.cpf%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.PreprocFile%20%2A/%0A.highlight%20.c1%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Single%20%2A/%0A.highlight%20.cs%20%7B%20color%3A%20%23408090%3B%20background-color%3A%20%23fff0f0%20%7D%20/%2A%20Comment.Special%20%2A/%0A.highlight%20.gd%20%7B%20color%3A%20%23A00000%20%7D%20/%2A%20Generic.Deleted%20%2A/%0A.highlight%20.ge%20%7B%20font-style%3A%20italic%20%7D%20/%2A%20Generic.Emph%20%2A/%0A.highlight%20.gr%20%7B%20color%3A%20%23FF0000%20%7D%20/%2A%20Generic.Error%20%2A/%0A.highlight%20.gh%20%7B%20color%3A%20%23000080%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Heading%20%2A/%0A.highlight%20.gi%20%7B%20color%3A%20%2300A000%20%7D%20/%2A%20Generic.Inserted%20%2A/%0A.highlight%20.go%20%7B%20color%3A%20%23333333%20%7D%20/%2A%20Generic.Output%20%2A/%0A.highlight%20.gp%20%7B%20color%3A%20%23c65d09%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Prompt%20%2A/%0A.highlight%20.gs%20%7B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Strong%20%2A/%0A.highlight%20.gu%20%7B%20color%3A%20%23800080%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Subheading%20%2A/%0A.highlight%20.gt%20%7B%20color%3A%20%230044DD%20%7D%20/%2A%20Generic.Traceback%20%2A/%0A.highlight%20.kc%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Constant%20%2A/%0A.highlight%20.kd%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Declaration%20%2A/%0A.highlight%20.kn%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Namespace%20%2A/%0A.highlight%20.kp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Keyword.Pseudo%20%2A/%0A.highlight%20.kr%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Reserved%20%2A/%0A.highlight%20.kt%20%7B%20color%3A%20%23902000%20%7D%20/%2A%20Keyword.Type%20%2A/%0A.highlight%20.m%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number%20%2A/%0A.highlight%20.s%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String%20%2A/%0A.highlight%20.na%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Name.Attribute%20%2A/%0A.highlight%20.nb%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Builtin%20%2A/%0A.highlight%20.nc%20%7B%20color%3A%20%230e84b5%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Class%20%2A/%0A.highlight%20.no%20%7B%20color%3A%20%2360add5%20%7D%20/%2A%20Name.Constant%20%2A/%0A.highlight%20.nd%20%7B%20color%3A%20%23555555%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Decorator%20%2A/%0A.highlight%20.ni%20%7B%20color%3A%20%23d55537%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Entity%20%2A/%0A.highlight%20.ne%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Exception%20%2A/%0A.highlight%20.nf%20%7B%20color%3A%20%2306287e%20%7D%20/%2A%20Name.Function%20%2A/%0A.highlight%20.nl%20%7B%20color%3A%20%23002070%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Label%20%2A/%0A.highlight%20.nn%20%7B%20color%3A%20%230e84b5%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Namespace%20%2A/%0A.highlight%20.nt%20%7B%20color%3A%20%23062873%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Tag%20%2A/%0A.highlight%20.nv%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable%20%2A/%0A.highlight%20.ow%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Operator.Word%20%2A/%0A.highlight%20.w%20%7B%20color%3A%20%23bbbbbb%20%7D%20/%2A%20Text.Whitespace%20%2A/%0A.highlight%20.mb%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Bin%20%2A/%0A.highlight%20.mf%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Float%20%2A/%0A.highlight%20.mh%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Hex%20%2A/%0A.highlight%20.mi%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Integer%20%2A/%0A.highlight%20.mo%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Oct%20%2A/%0A.highlight%20.sa%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Affix%20%2A/%0A.highlight%20.sb%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Backtick%20%2A/%0A.highlight%20.sc%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Char%20%2A/%0A.highlight%20.dl%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Delimiter%20%2A/%0A.highlight%20.sd%20%7B%20color%3A%20%234070a0%3B%20font-style%3A%20italic%20%7D%20/%2A%20Literal.String.Doc%20%2A/%0A.highlight%20.s2%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Double%20%2A/%0A.highlight%20.se%20%7B%20color%3A%20%234070a0%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Literal.String.Escape%20%2A/%0A.highlight%20.sh%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Heredoc%20%2A/%0A.highlight%20.si%20%7B%20color%3A%20%2370a0d0%3B%20font-style%3A%20italic%20%7D%20/%2A%20Literal.String.Interpol%20%2A/%0A.highlight%20.sx%20%7B%20color%3A%20%23c65d09%20%7D%20/%2A%20Literal.String.Other%20%2A/%0A.highlight%20.sr%20%7B%20color%3A%20%23235388%20%7D%20/%2A%20Literal.String.Regex%20%2A/%0A.highlight%20.s1%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Single%20%2A/%0A.highlight%20.ss%20%7B%20color%3A%20%23517918%20%7D%20/%2A%20Literal.String.Symbol%20%2A/%0A.highlight%20.bp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Builtin.Pseudo%20%2A/%0A.highlight%20.fm%20%7B%20color%3A%20%2306287e%20%7D%20/%2A%20Name.Function.Magic%20%2A/%0A.highlight%20.vc%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Class%20%2A/%0A.highlight%20.vg%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Global%20%2A/%0A.highlight%20.vi%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Instance%20%2A/%0A.highlight%20.vm%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Magic%20%2A/%0A.highlight%20.il%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Integer.Long%20%2A/" rel="stylesheet" type="text/css"/><!--URL:_static/pygments.css-->
-<link href="data:text/css,/%2A%0A%20%2A%20epub.css_t%0A%20%2A%20~~~~~~~~~~%0A%20%2A%0A%20%2A%20Sphinx%20stylesheet%20--%20epub%20theme.%0A%20%2A%0A%20%2A%20%3Acopyright%3A%20Copyright%202007-2021%20by%20the%20Sphinx%20team%2C%20see%20AUTHORS.%0A%20%2A%20%3Alicense%3A%20BSD%2C%20see%20LICENSE%20for%20details.%0A%20%2A%0A%20%2A/%0A%0A/%2A%20--%20main%20layout%20-----------------------------------------------------------%20%2A/%0A%0A%0A%0Adiv.clearer%20%7B%0A%20%20%20%20clear%3A%20both%3B%0A%7D%0A%0Aa%3Alink%2C%20a%3Avisited%20%7B%0A%20%20%20%20color%3A%20%233333ff%3B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0Aimg%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20max-width%3A%20100%25%3B%0A%7D%0A%0A/%2A%20--%20relbar%20----------------------------------------------------------------%20%2A/%0A%0Adiv.related%20%7B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0Adiv.related%20h3%20%7B%0A%20%20%20%20display%3A%20none%3B%0A%7D%0A%0Adiv.related%20ul%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding%3A%200%200%200%2010px%3B%0A%20%20%20%20list-style%3A%20none%3B%0A%7D%0A%0Adiv.related%20li%20%7B%0A%20%20%20%20display%3A%20inline%3B%0A%7D%0A%0Adiv.related%20li.right%20%7B%0A%20%20%20%20float%3A%20right%3B%0A%20%20%20%20margin-right%3A%205px%3B%0A%7D%0A%0A/%2A%20--%20sidebar%20---------------------------------------------------------------%20%2A/%0A%0Adiv.sphinxsidebarwrapper%20%7B%0A%20%20%20%20padding%3A%2010px%205px%200%2010px%3B%0A%7D%0A%0Adiv.sphinxsidebar%20%7B%0A%20%20%20%20float%3A%20left%3B%0A%20%20%20%20width%3A%20230px%3B%0A%20%20%20%20margin-left%3A%20-100%25%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20%7B%0A%20%20%20%20list-style%3A%20none%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20ul%2C%0Adiv.sphinxsidebar%20ul.want-points%20%7B%0A%20%20%20%20margin-left%3A%2020px%3B%0A%20%20%20%20list-style%3A%20square%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20ul%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0Adiv.sphinxsidebar%20form%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%7D%0A%0Adiv.sphinxsidebar%20input%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%2398dbcc%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%20100%25%3B%0A%7D%0A%0Aimg%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20max-width%3A%20100%25%3B%0A%7D%0A%0A/%2A%20--%20search%20page%20-----------------------------------------------------------%20%2A/%0A%0Aul.search%20%7B%0A%20%20%20%20margin%3A%2010px%200%200%2020px%3B%0A%20%20%20%20padding%3A%200%3B%0A%7D%0A%0Aul.search%20li%20%7B%0A%20%20%20%20padding%3A%205px%200%205px%2020px%3B%0A%20%20%20%20background-image%3A%20url%28file.png%29%3B%0A%20%20%20%20background-repeat%3A%20no-repeat%3B%0A%20%20%20%20background-position%3A%200%207px%3B%0A%7D%0A%0Aul.search%20li%20a%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Aul.search%20li%20div.context%20%7B%0A%20%20%20%20color%3A%20%23888%3B%0A%20%20%20%20margin%3A%202px%200%200%2030px%3B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0Aul.keywordmatches%20li.goodmatch%20a%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A/%2A%20--%20index%20page%20------------------------------------------------------------%20%2A/%0A%0Atable.contentstable%20%7B%0A%20%20%20%20width%3A%2090%25%3B%0A%7D%0A%0Atable.contentstable%20p.biglink%20%7B%0A%20%20%20%20line-height%3A%20150%25%3B%0A%7D%0A%0Aa.biglink%20%7B%0A%20%20%20%20font-size%3A%20130%25%3B%0A%7D%0A%0Aspan.linkdescr%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%20%20%20%20padding-top%3A%205px%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0A/%2A%20--%20general%20index%20---------------------------------------------------------%20%2A/%0A%0Atable.indextable%20td%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%20%20%20%20vertical-align%3A%20top%3B%0A%7D%0A%0Atable.indextable%20ul%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%20%20%20%20list-style-type%3A%20none%3B%0A%7D%0A%0Atable.indextable%20%3E%20tbody%20%3E%20tr%20%3E%20td%20%3E%20ul%20%7B%0A%20%20%20%20padding-left%3A%200em%3B%0A%7D%0A%0Atable.indextable%20tr.pcap%20%7B%0A%20%20%20%20height%3A%2010px%3B%0A%7D%0A%0Atable.indextable%20tr.cap%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%20%20%20%20background-color%3A%20%23f2f2f2%3B%0A%7D%0A%0Aimg.toggler%20%7B%0A%20%20%20%20margin-right%3A%203px%3B%0A%20%20%20%20margin-top%3A%203px%3B%0A%20%20%20%20cursor%3A%20pointer%3B%0A%7D%0A%0A/%2A%20--%20domain%20module%20index%20---------------------------------------------------%20%2A/%0A%0Atable.modindextable%20td%20%7B%0A%20%20%20%20padding%3A%202px%3B%0A%20%20%20%20border-collapse%3A%20collapse%3B%0A%7D%0A%0A/%2A%20--%20general%20body%20styles%20---------------------------------------------------%20%2A/%0A%0Aa.headerlink%20%7B%0A%20%20%20%20visibility%3A%20hidden%3B%0A%7D%0A%0Adiv.body%20p.caption%20%7B%0A%20%20%20%20text-align%3A%20inherit%3B%0A%7D%0A%0Adiv.body%20td%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0A.first%20%7B%0A%20%20%20%20margin-top%3A%200%20%21important%3B%0A%7D%0A%0Ap.rubric%20%7B%0A%20%20%20%20margin-top%3A%2030px%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A.align-left%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0A.align-center%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%7D%0A%0A.align-right%20%7B%0A%20%20%20%20text-align%3A%20right%3B%0A%7D%0A%0A/%2A%20--%20sidebars%20--------------------------------------------------------------%20%2A/%0A%0Adiv.sidebar%20%7B%0A%20%20%20%20margin%3A%200%200%200.5em%201em%3B%0A%20%20%20%20border%3A%201px%20solid%20%23ddb%3B%0A%20%20%20%20padding%3A%207px%207px%200%207px%3B%0A%20%20%20%20background-color%3A%20%23ffe%3B%0A%20%20%20%20width%3A%2040%25%3B%0A%20%20%20%20float%3A%20right%3B%0A%7D%0A%0Ap.sidebar-title%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A/%2A%20--%20topics%20----------------------------------------------------------------%20%2A/%0A%0Adiv.topic%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%23ccc%3B%0A%20%20%20%20padding%3A%207px%207px%200%207px%3B%0A%20%20%20%20margin%3A%2010px%200%2010px%200%3B%0A%7D%0A%0Ap.topic-title%20%7B%0A%20%20%20%20font-size%3A%20110%25%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%7D%0A%0A/%2A%20--%20admonitions%20-----------------------------------------------------------%20%2A/%0A%0Adiv.admonition%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%20%20%20%20padding%3A%207px%3B%0A%7D%0A%0Adiv.admonition%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Adiv.admonition%20dl%20%7B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0Ap.admonition-title%20%7B%0A%20%20%20%20margin%3A%200px%2010px%205px%200px%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Adiv.body%20p.centered%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%20%20%20%20margin-top%3A%2025px%3B%0A%7D%0A%0A/%2A%20--%20tables%20----------------------------------------------------------------%20%2A/%0A%0Atable.docutils%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20border-collapse%3A%20collapse%3B%0A%7D%0A%0Atable%20caption%20span.caption-number%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Atable%20caption%20span.caption-text%20%7B%0A%7D%0A%0Atable.docutils%20td%2C%20table.docutils%20th%20%7B%0A%20%20%20%20padding%3A%201px%208px%201px%205px%3B%0A%20%20%20%20border-top%3A%200%3B%0A%20%20%20%20border-left%3A%200%3B%0A%20%20%20%20border-right%3A%200%3B%0A%20%20%20%20border-bottom%3A%201px%20solid%20%23aaa%3B%0A%7D%0A%0Atable.footnote%20td%2C%20table.footnote%20th%20%7B%0A%20%20%20%20border%3A%200%20%21important%3B%0A%7D%0A%0Ath%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%20%20%20%20padding-right%3A%205px%3B%0A%7D%0A%0Atable.citation%20%7B%0A%20%20%20%20border-left%3A%20solid%201px%20gray%3B%0A%20%20%20%20margin-left%3A%201px%3B%0A%7D%0A%0Atable.citation%20td%20%7B%0A%20%20%20%20border-bottom%3A%20none%3B%0A%7D%0A%0A/%2A%20--%20figures%20---------------------------------------------------------------%20%2A/%0A%0Adiv.figure%20p.caption%20span.caption-number%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adiv.figure%20p.caption%20span.caption-text%20%7B%0A%7D%0A%0A/%2A%20--%20field%20list%20styles%20-----------------------------------------------------%20%2A/%0A%0A/%2A%20--%20for%20html4%20--%20%2A/%0A%0Atable.field-list%20td%2C%20table.field-list%20th%20%7B%0A%20%20%20%20border%3A%200%20%21important%3B%0A%7D%0A%0A.field-list%20ul%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding-left%3A%201em%3B%0A%7D%0A%0A.field-list%20p%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0A/%2A%20--%20for%20html5%20--%20%2A/%0A%0A/%2A%20bold%20field%20name%2C%20content%20starts%20on%20the%20same%20line%20%2A/%0A%0Adl.field-list%20%3E%20dt%2C%0Adl.option-list%20%3E%20dt%2C%0Adl.docinfo%20%3E%20dt%2C%0Adl.footnote%20%3E%20dt%2C%0Adl.citation%20%3E%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20clear%3A%20left%3B%0A%20%20%20%20float%3A%20left%3B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding%3A%200%3B%0A%20%20%20%20padding-right%3A%200.5em%3B%0A%7D%0A%0A/%2A%20Offset%20for%20field%20content%20%28corresponds%20to%20the%20--field-name-limit%20option%29%20%2A/%0A%0Adl.field-list%20%3E%20dd%2C%0Adl.option-list%20%3E%20dd%2C%0Adl.docinfo%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%20%209em%3B%20/%2A%20ca.%2014%20chars%20in%20the%20test%20examples%20%2A/%0A%7D%0A%0A/%2A%20start%20field-body%20on%20a%20new%20line%20after%20long%20field%20names%20%2A/%0A%0Adl.field-list%20%3E%20dd%20%3E%20%2A%3Afirst-child%2C%0Adl.option-list%20%3E%20dd%20%3E%20%2A%3Afirst-child%0A%7B%0A%20%20%20%20display%3A%20inline-block%3B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0Adl.field-list%20%3E%20dt%3Aafter%2C%0Adl.docinfo%20%3E%20dt%3Aafter%20%7B%0A%20%20%20%20content%3A%20%22%3A%22%3B%0A%7D%0A%0A/%2A%20--%20option%20lists%20----------------------------------------------------------%20%2A/%0A%0Adl.option-list%20%7B%0A%20%20%20%20margin-left%3A%2040px%3B%0A%7D%0A%0Adl.option-list%20%3E%20dt%20%7B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0Aspan.option%20%7B%0A%20%20%20%20white-space%3A%20nowrap%3B%0A%7D%0A%0A/%2A%20--%20lists%20-----------------------------------------------------------------%20%2A/%0A%0A/%2A%20--%20compact%20and%20simple%20lists%3A%20no%20margin%20between%20items%20--%20%2A/%0A%0A.simple%20%20li%2C%20.compact%20li%2C%0A.simple%20%20ul%2C%20.compact%20ul%2C%0A.simple%20%20ol%2C%20.compact%20ol%2C%0A.simple%20%3E%20li%20p%2C%20.compact%20%3E%20li%20p%2C%0Adl.simple%20%3E%20dd%2C%20dl.compact%20%3E%20dd%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0A/%2A%20--%20enumerated%20lists%20------------------------------------------------------%20%2A/%0A%0Aol.arabic%20%7B%0A%20%20%20%20list-style%3A%20decimal%3B%0A%7D%0A%0Aol.loweralpha%20%7B%0A%20%20%20%20list-style%3A%20lower-alpha%3B%0A%7D%0A%0Aol.upperalpha%20%7B%0A%20%20%20%20list-style%3A%20upper-alpha%3B%0A%7D%0A%0Aol.lowerroman%20%7B%0A%20%20%20%20list-style%3A%20lower-roman%3B%0A%7D%0A%0Aol.upperroman%20%7B%0A%20%20%20%20list-style%3A%20upper-roman%3B%0A%7D%0A%0Adt%20span.classifier%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adt%20span.classifier%3Abefore%20%7B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20margin%3A%200.5em%3B%0A%20%20%20%20content%3A%20%22%3A%22%3B%0A%7D%0A%0A/%2A%20--%20other%20body%20styles%20-----------------------------------------------------%20%2A/%0A%0Adl%20%7B%0A%20%20%20%20margin-bottom%3A%2015px%3B%0A%7D%0A%0Add%20p%20%7B%0A%20%20%20%20margin-top%3A%200px%3B%0A%7D%0A%0Add%20ul%2C%20dd%20table%20%7B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%7D%0A%0Add%20%7B%0A%20%20%20%20margin-top%3A%203px%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%20%20%20%20margin-left%3A%2030px%3B%0A%7D%0A%0Adt%3Atarget%2C%20.highlighted%20%7B%0A%20%20%20%20background-color%3A%20%23ddd%3B%0A%7D%0A%0Adl.glossary%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20font-size%3A%20110%25%3B%0A%7D%0A%0A.optional%20%7B%0A%20%20%20%20font-size%3A%20130%25%3B%0A%7D%0A%0A.sig-paren%20%7B%0A%20%20%20%20font-size%3A%20larger%3B%0A%7D%0A%0A.versionmodified%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A.system-message%20%7B%0A%20%20%20%20background-color%3A%20%23fda%3B%0A%20%20%20%20padding%3A%205px%3B%0A%20%20%20%20border%3A%203px%20solid%20red%3B%0A%7D%0A%0A/%2A%20--%20footnotes%20and%20citations%20-----------------------------------------------%20%2A/%0A%0A/%2A%20--%20for%20html4%20--%20%2A/%0A.footnote%3Atarget%20%20%7B%0A%20%20%20%20background-color%3A%20%23dddddd%3B%0A%7D%0A%0A/%2A%20--%20for%20html5%20--%20%2A/%0A%0Adl.footnote.superscript%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%201em%3B%0A%7D%0A%0Adl.footnote.brackets%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%202em%3B%0A%7D%0A%0Adl%20%3E%20dt.label%20%7B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0Aa.footnote-reference.brackets%3Abefore%2C%0Adt.label%20%3E%20span.brackets%3Abefore%20%7B%0A%20%20%20%20content%3A%20%22%5B%22%3B%0A%7D%0A%0Aa.footnote-reference.brackets%3Aafter%2C%0Adt.label%20%3E%20span.brackets%3Aafter%20%7B%0A%20%20%20%20content%3A%20%22%5D%22%3B%0A%7D%0A%0Aa.footnote-reference.superscript%2C%0Adl.footnote.superscript%20%3E%20dt.label%20%7B%0A%20%20%20%20vertical-align%3A%20super%3B%0A%20%20%20%20font-size%3A%20smaller%3B%0A%7D%0A%0Adt.label%20%3E%20span.fn-backref%20%7B%0A%20%20%20%20margin-left%3A%200.2em%3B%0A%7D%0A%0Adt.label%20%3E%20span.fn-backref%20%3E%20a%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A/%2A%20--%20line%20blocks%20-----------------------------------------------------------%20%2A/%0A%0A.line-block%20%7B%0A%20%20%20%20display%3A%20block%3B%0A%20%20%20%20margin-top%3A%201em%3B%0A%20%20%20%20margin-bottom%3A%201em%3B%0A%7D%0A%0A.line-block%20.line-block%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%20%20%20%20margin-left%3A%201.5em%3B%0A%7D%0A%0A.guilabel%2C%20.menuselection%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A.accelerator%20%7B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0A.classifier%20%7B%0A%20%20%20%20font-style%3A%20oblique%3B%0A%7D%0A%0Aabbr%2C%20acronym%20%7B%0A%20%20%20%20border-bottom%3A%20dotted%201px%3B%0A%20%20%20%20cursor%3A%20help%3B%0A%7D%0A%0A/%2A%20--%20code%20displays%20---------------------------------------------------------%20%2A/%0A%0Apre%20%7B%0A%20%20%20%20font-family%3A%20monospace%3B%0A%20%20%20%20overflow%3A%20auto%3B%0A%20%20%20%20overflow-y%3A%20hidden%3B%0A%7D%0A%0Atd.linenos%20pre%20%7B%0A%20%20%20%20padding%3A%205px%200px%3B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20color%3A%20%23aaa%3B%0A%7D%0A%0Atable.highlighttable%20%7B%0A%20%20%20%20margin-left%3A%200.5em%3B%0A%7D%0A%0Atable.highlighttable%20td%20%7B%0A%20%20%20%20padding%3A%200%200.5em%200%200.5em%3B%0A%7D%0A%0Acode%20%7B%0A%20%20%20%20font-family%3A%20monospace%3B%0A%7D%0A%0Adiv.code-block-caption%20span.caption-number%20%7B%0A%20%20%20%20padding%3A%200.1em%200.3em%3B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adiv.code-block-caption%20span.caption-text%20%7B%0A%7D%0A%0Adiv.literal-block-wrapper%20%7B%0A%20%20%20%20padding%3A%201em%201em%200%3B%0A%7D%0A%0Adiv.literal-block-wrapper%20div.highlight%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0Acode.descname%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20font-size%3A%201.2em%3B%0A%7D%0A%0Acode.descclassname%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%7D%0A%0Acode.xref%2C%20a%20code%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Ah1%20code%2C%20h2%20code%2C%20h3%20code%2C%20h4%20code%2C%20h5%20code%2C%20h6%20code%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%7D%0A%0A/%2A%20--%20math%20display%20----------------------------------------------------------%20%2A/%0A%0Aimg.math%20%7B%0A%20%20%20%20vertical-align%3A%20middle%3B%0A%7D%0A%0Adiv.body%20div.math%20p%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%7D%0A%0Aspan.eqno%20%7B%0A%20%20%20%20float%3A%20right%3B%0A%7D%0A%0A/%2A%20--%20special%20divs%20%20---------------------------------------------------------%20%2A/%0A%0Adiv.quotebar%20%7B%0A%20%20%20%20background-color%3A%20%23e3eff1%3B%0A%20%20%20%20max-width%3A%20250px%3B%0A%20%20%20%20float%3A%20right%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20padding%3A%207px%207px%3B%0A%20%20%20%20border%3A%201px%20solid%20%23ccc%3B%0A%7D%0Adiv.footer%20%7B%0A%20%20%20%20background-color%3A%20%23e3eff1%3B%0A%20%20%20%20padding%3A%203px%208px%203px%200%3B%0A%20%20%20%20clear%3A%20both%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%2080%25%3B%0A%20%20%20%20text-align%3A%20right%3B%0A%7D%0A%0Adiv.footer%20a%20%7B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0A/%2A%20--%20link-target%20-----------------------------------------------------------%20%2A/%0A%0A.link-target%20%7B%0A%20%20%20%20font-size%3A%2080%25%3B%0A%7D%0A%0Atable%20.link-target%20%7B%0A%20%20%20%20/%2A%20Do%20not%20show%20links%20in%20tables%2C%20there%20is%20not%20enough%20space%20%2A/%0A%20%20%20%20display%3A%20none%3B%0A%7D%0A%0A/%2A%20--%20font-face%20-------------------------------------------------------------%20%2A/%0A%0A/%2A%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Regular.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20oblique%2C%20italic%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Italic.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Bold.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20oblique%2C%20italic%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-BoldItalic.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%2A/" rel="stylesheet" type="text/css"/><!--URL:_static/epub.css-->
-<script data-url_root="./" id="documentation_options" src="data:application/javascript,var%20DOCUMENTATION_OPTIONS%20%3D%20%7B%0A%20%20%20%20URL_ROOT%3A%20document.getElementById%28%22documentation_options%22%29.getAttribute%28%27data-url_root%27%29%2C%0A%20%20%20%20VERSION%3A%20%27tos-v0%27%2C%0A%20%20%20%20LANGUAGE%3A%20%27en%27%2C%0A%20%20%20%20COLLAPSE_INDEX%3A%20false%2C%0A%20%20%20%20BUILDER%3A%20%27html%27%2C%0A%20%20%20%20FILE_SUFFIX%3A%20%27.html%27%2C%0A%20%20%20%20LINK_SUFFIX%3A%20%27.html%27%2C%0A%20%20%20%20HAS_SOURCE%3A%20true%2C%0A%20%20%20%20SOURCELINK_SUFFIX%3A%20%27.txt%27%2C%0A%20%20%20%20NAVIGATION_WITH_KEYS%3A%20false%0A%7D%3B"></script><!--URL:_static/documentation_options.js-->
-<script src="data:application/javascript,/%2A%21%0A%20%2A%20jQuery%20JavaScript%20Library%20v3.5.1%0A%20%2A%20https%3A//jquery.com/%0A%20%2A%0A%20%2A%20Includes%20Sizzle.js%0A%20%2A%20https%3A//sizzlejs.com/%0A%20%2A%0A%20%2A%20Copyright%20JS%20Foundation%20and%20other%20contributors%0A%20%2A%20Released%20under%20the%20MIT%20license%0A%20%2A%20https%3A//jquery.org/license%0A%20%2A/%0A%28%20function%28%20global%2C%20factory%20%29%20%7B%0A%0A%09%22use%20strict%22%3B%0A%0A%09if%20%28%20typeof%20module%20%3D%3D%3D%20%22object%22%20%26%26%20typeof%20module.exports%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20For%20CommonJS%20and%20CommonJS-like%20environments%20where%20a%20proper%20%60window%60%0A%09%09//%20is%20present%2C%20execute%20the%20factory%20and%20get%20jQuery.%0A%09%09//%20For%20environments%20that%20do%20not%20have%20a%20%60window%60%20with%20a%20%60document%60%0A%09%09//%20%28such%20as%20Node.js%29%2C%20expose%20a%20factory%20as%20module.exports.%0A%09%09//%20This%20accentuates%20the%20need%20for%20the%20creation%20of%20a%20real%20%60window%60.%0A%09%09//%20e.g.%20var%20jQuery%20%3D%20require%28%22jquery%22%29%28window%29%3B%0A%09%09//%20See%20ticket%20%2314549%20for%20more%20info.%0A%09%09module.exports%20%3D%20global.document%20%3F%0A%09%09%09factory%28%20global%2C%20true%20%29%20%3A%0A%09%09%09function%28%20w%20%29%20%7B%0A%09%09%09%09if%20%28%20%21w.document%20%29%20%7B%0A%09%09%09%09%09throw%20new%20Error%28%20%22jQuery%20requires%20a%20window%20with%20a%20document%22%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20factory%28%20w%20%29%3B%0A%09%09%09%7D%3B%0A%09%7D%20else%20%7B%0A%09%09factory%28%20global%20%29%3B%0A%09%7D%0A%0A//%20Pass%20this%20if%20window%20is%20not%20defined%20yet%0A%7D%20%29%28%20typeof%20window%20%21%3D%3D%20%22undefined%22%20%3F%20window%20%3A%20this%2C%20function%28%20window%2C%20noGlobal%20%29%20%7B%0A%0A//%20Edge%20%3C%3D%2012%20-%2013%2B%2C%20Firefox%20%3C%3D18%20-%2045%2B%2C%20IE%2010%20-%2011%2C%20Safari%205.1%20-%209%2B%2C%20iOS%206%20-%209.1%0A//%20throw%20exceptions%20when%20non-strict%20code%20%28e.g.%2C%20ASP.NET%204.5%29%20accesses%20strict%20mode%0A//%20arguments.callee.caller%20%28trac-13335%29.%20But%20as%20of%20jQuery%203.0%20%282016%29%2C%20strict%20mode%20should%20be%20common%0A//%20enough%20that%20all%20such%20attempts%20are%20guarded%20in%20a%20try%20block.%0A%22use%20strict%22%3B%0A%0Avar%20arr%20%3D%20%5B%5D%3B%0A%0Avar%20getProto%20%3D%20Object.getPrototypeOf%3B%0A%0Avar%20slice%20%3D%20arr.slice%3B%0A%0Avar%20flat%20%3D%20arr.flat%20%3F%20function%28%20array%20%29%20%7B%0A%09return%20arr.flat.call%28%20array%20%29%3B%0A%7D%20%3A%20function%28%20array%20%29%20%7B%0A%09return%20arr.concat.apply%28%20%5B%5D%2C%20array%20%29%3B%0A%7D%3B%0A%0A%0Avar%20push%20%3D%20arr.push%3B%0A%0Avar%20indexOf%20%3D%20arr.indexOf%3B%0A%0Avar%20class2type%20%3D%20%7B%7D%3B%0A%0Avar%20toString%20%3D%20class2type.toString%3B%0A%0Avar%20hasOwn%20%3D%20class2type.hasOwnProperty%3B%0A%0Avar%20fnToString%20%3D%20hasOwn.toString%3B%0A%0Avar%20ObjectFunctionString%20%3D%20fnToString.call%28%20Object%20%29%3B%0A%0Avar%20support%20%3D%20%7B%7D%3B%0A%0Avar%20isFunction%20%3D%20function%20isFunction%28%20obj%20%29%20%7B%0A%0A%20%20%20%20%20%20//%20Support%3A%20Chrome%20%3C%3D57%2C%20Firefox%20%3C%3D52%0A%20%20%20%20%20%20//%20In%20some%20browsers%2C%20typeof%20returns%20%22function%22%20for%20HTML%20%3Cobject%3E%20elements%0A%20%20%20%20%20%20//%20%28i.e.%2C%20%60typeof%20document.createElement%28%20%22object%22%20%29%20%3D%3D%3D%20%22function%22%60%29.%0A%20%20%20%20%20%20//%20We%20don%27t%20want%20to%20classify%20%2Aany%2A%20DOM%20node%20as%20a%20function.%0A%20%20%20%20%20%20return%20typeof%20obj%20%3D%3D%3D%20%22function%22%20%26%26%20typeof%20obj.nodeType%20%21%3D%3D%20%22number%22%3B%0A%20%20%7D%3B%0A%0A%0Avar%20isWindow%20%3D%20function%20isWindow%28%20obj%20%29%20%7B%0A%09%09return%20obj%20%21%3D%20null%20%26%26%20obj%20%3D%3D%3D%20obj.window%3B%0A%09%7D%3B%0A%0A%0Avar%20document%20%3D%20window.document%3B%0A%0A%0A%0A%09var%20preservedScriptAttributes%20%3D%20%7B%0A%09%09type%3A%20true%2C%0A%09%09src%3A%20true%2C%0A%09%09nonce%3A%20true%2C%0A%09%09noModule%3A%20true%0A%09%7D%3B%0A%0A%09function%20DOMEval%28%20code%2C%20node%2C%20doc%20%29%20%7B%0A%09%09doc%20%3D%20doc%20%7C%7C%20document%3B%0A%0A%09%09var%20i%2C%20val%2C%0A%09%09%09script%20%3D%20doc.createElement%28%20%22script%22%20%29%3B%0A%0A%09%09script.text%20%3D%20code%3B%0A%09%09if%20%28%20node%20%29%20%7B%0A%09%09%09for%20%28%20i%20in%20preservedScriptAttributes%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Firefox%2064%2B%2C%20Edge%2018%2B%0A%09%09%09%09//%20Some%20browsers%20don%27t%20support%20the%20%22nonce%22%20property%20on%20scripts.%0A%09%09%09%09//%20On%20the%20other%20hand%2C%20just%20using%20%60getAttribute%60%20is%20not%20enough%20as%0A%09%09%09%09//%20the%20%60nonce%60%20attribute%20is%20reset%20to%20an%20empty%20string%20whenever%20it%0A%09%09%09%09//%20becomes%20browsing-context%20connected.%0A%09%09%09%09//%20See%20https%3A//github.com/whatwg/html/issues/2369%0A%09%09%09%09//%20See%20https%3A//html.spec.whatwg.org/%23nonce-attributes%0A%09%09%09%09//%20The%20%60node.getAttribute%60%20check%20was%20added%20for%20the%20sake%20of%0A%09%09%09%09//%20%60jQuery.globalEval%60%20so%20that%20it%20can%20fake%20a%20nonce-containing%20node%0A%09%09%09%09//%20via%20an%20object.%0A%09%09%09%09val%20%3D%20node%5B%20i%20%5D%20%7C%7C%20node.getAttribute%20%26%26%20node.getAttribute%28%20i%20%29%3B%0A%09%09%09%09if%20%28%20val%20%29%20%7B%0A%09%09%09%09%09script.setAttribute%28%20i%2C%20val%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09doc.head.appendChild%28%20script%20%29.parentNode.removeChild%28%20script%20%29%3B%0A%09%7D%0A%0A%0Afunction%20toType%28%20obj%20%29%20%7B%0A%09if%20%28%20obj%20%3D%3D%20null%20%29%20%7B%0A%09%09return%20obj%20%2B%20%22%22%3B%0A%09%7D%0A%0A%09//%20Support%3A%20Android%20%3C%3D2.3%20only%20%28functionish%20RegExp%29%0A%09return%20typeof%20obj%20%3D%3D%3D%20%22object%22%20%7C%7C%20typeof%20obj%20%3D%3D%3D%20%22function%22%20%3F%0A%09%09class2type%5B%20toString.call%28%20obj%20%29%20%5D%20%7C%7C%20%22object%22%20%3A%0A%09%09typeof%20obj%3B%0A%7D%0A/%2A%20global%20Symbol%20%2A/%0A//%20Defining%20this%20global%20in%20.eslintrc.json%20would%20create%20a%20danger%20of%20using%20the%20global%0A//%20unguarded%20in%20another%20place%2C%20it%20seems%20safer%20to%20define%20global%20only%20for%20this%20module%0A%0A%0A%0Avar%0A%09version%20%3D%20%223.5.1%22%2C%0A%0A%09//%20Define%20a%20local%20copy%20of%20jQuery%0A%09jQuery%20%3D%20function%28%20selector%2C%20context%20%29%20%7B%0A%0A%09%09//%20The%20jQuery%20object%20is%20actually%20just%20the%20init%20constructor%20%27enhanced%27%0A%09%09//%20Need%20init%20if%20jQuery%20is%20called%20%28just%20allow%20error%20to%20be%20thrown%20if%20not%20included%29%0A%09%09return%20new%20jQuery.fn.init%28%20selector%2C%20context%20%29%3B%0A%09%7D%3B%0A%0AjQuery.fn%20%3D%20jQuery.prototype%20%3D%20%7B%0A%0A%09//%20The%20current%20version%20of%20jQuery%20being%20used%0A%09jquery%3A%20version%2C%0A%0A%09constructor%3A%20jQuery%2C%0A%0A%09//%20The%20default%20length%20of%20a%20jQuery%20object%20is%200%0A%09length%3A%200%2C%0A%0A%09toArray%3A%20function%28%29%20%7B%0A%09%09return%20slice.call%28%20this%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Get%20the%20Nth%20element%20in%20the%20matched%20element%20set%20OR%0A%09//%20Get%20the%20whole%20matched%20element%20set%20as%20a%20clean%20array%0A%09get%3A%20function%28%20num%20%29%20%7B%0A%0A%09%09//%20Return%20all%20the%20elements%20in%20a%20clean%20array%0A%09%09if%20%28%20num%20%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20slice.call%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20just%20the%20one%20element%20from%20the%20set%0A%09%09return%20num%20%3C%200%20%3F%20this%5B%20num%20%2B%20this.length%20%5D%20%3A%20this%5B%20num%20%5D%3B%0A%09%7D%2C%0A%0A%09//%20Take%20an%20array%20of%20elements%20and%20push%20it%20onto%20the%20stack%0A%09//%20%28returning%20the%20new%20matched%20element%20set%29%0A%09pushStack%3A%20function%28%20elems%20%29%20%7B%0A%0A%09%09//%20Build%20a%20new%20jQuery%20matched%20element%20set%0A%09%09var%20ret%20%3D%20jQuery.merge%28%20this.constructor%28%29%2C%20elems%20%29%3B%0A%0A%09%09//%20Add%20the%20old%20object%20onto%20the%20stack%20%28as%20a%20reference%29%0A%09%09ret.prevObject%20%3D%20this%3B%0A%0A%09%09//%20Return%20the%20newly-formed%20element%20set%0A%09%09return%20ret%3B%0A%09%7D%2C%0A%0A%09//%20Execute%20a%20callback%20for%20every%20element%20in%20the%20matched%20set.%0A%09each%3A%20function%28%20callback%20%29%20%7B%0A%09%09return%20jQuery.each%28%20this%2C%20callback%20%29%3B%0A%09%7D%2C%0A%0A%09map%3A%20function%28%20callback%20%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.map%28%20this%2C%20function%28%20elem%2C%20i%20%29%20%7B%0A%09%09%09return%20callback.call%28%20elem%2C%20i%2C%20elem%20%29%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09slice%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20slice.apply%28%20this%2C%20arguments%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09first%3A%20function%28%29%20%7B%0A%09%09return%20this.eq%28%200%20%29%3B%0A%09%7D%2C%0A%0A%09last%3A%20function%28%29%20%7B%0A%09%09return%20this.eq%28%20-1%20%29%3B%0A%09%7D%2C%0A%0A%09even%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.grep%28%20this%2C%20function%28%20_elem%2C%20i%20%29%20%7B%0A%09%09%09return%20%28%20i%20%2B%201%20%29%20%25%202%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09odd%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.grep%28%20this%2C%20function%28%20_elem%2C%20i%20%29%20%7B%0A%09%09%09return%20i%20%25%202%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09eq%3A%20function%28%20i%20%29%20%7B%0A%09%09var%20len%20%3D%20this.length%2C%0A%09%09%09j%20%3D%20%2Bi%20%2B%20%28%20i%20%3C%200%20%3F%20len%20%3A%200%20%29%3B%0A%09%09return%20this.pushStack%28%20j%20%3E%3D%200%20%26%26%20j%20%3C%20len%20%3F%20%5B%20this%5B%20j%20%5D%20%5D%20%3A%20%5B%5D%20%29%3B%0A%09%7D%2C%0A%0A%09end%3A%20function%28%29%20%7B%0A%09%09return%20this.prevObject%20%7C%7C%20this.constructor%28%29%3B%0A%09%7D%2C%0A%0A%09//%20For%20internal%20use%20only.%0A%09//%20Behaves%20like%20an%20Array%27s%20method%2C%20not%20like%20a%20jQuery%20method.%0A%09push%3A%20push%2C%0A%09sort%3A%20arr.sort%2C%0A%09splice%3A%20arr.splice%0A%7D%3B%0A%0AjQuery.extend%20%3D%20jQuery.fn.extend%20%3D%20function%28%29%20%7B%0A%09var%20options%2C%20name%2C%20src%2C%20copy%2C%20copyIsArray%2C%20clone%2C%0A%09%09target%20%3D%20arguments%5B%200%20%5D%20%7C%7C%20%7B%7D%2C%0A%09%09i%20%3D%201%2C%0A%09%09length%20%3D%20arguments.length%2C%0A%09%09deep%20%3D%20false%3B%0A%0A%09//%20Handle%20a%20deep%20copy%20situation%0A%09if%20%28%20typeof%20target%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09deep%20%3D%20target%3B%0A%0A%09%09//%20Skip%20the%20boolean%20and%20the%20target%0A%09%09target%20%3D%20arguments%5B%20i%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09i%2B%2B%3B%0A%09%7D%0A%0A%09//%20Handle%20case%20when%20target%20is%20a%20string%20or%20something%20%28possible%20in%20deep%20copy%29%0A%09if%20%28%20typeof%20target%20%21%3D%3D%20%22object%22%20%26%26%20%21isFunction%28%20target%20%29%20%29%20%7B%0A%09%09target%20%3D%20%7B%7D%3B%0A%09%7D%0A%0A%09//%20Extend%20jQuery%20itself%20if%20only%20one%20argument%20is%20passed%0A%09if%20%28%20i%20%3D%3D%3D%20length%20%29%20%7B%0A%09%09target%20%3D%20this%3B%0A%09%09i--%3B%0A%09%7D%0A%0A%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%0A%09%09//%20Only%20deal%20with%20non-null/undefined%20values%0A%09%09if%20%28%20%28%20options%20%3D%20arguments%5B%20i%20%5D%20%29%20%21%3D%20null%20%29%20%7B%0A%0A%09%09%09//%20Extend%20the%20base%20object%0A%09%09%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09%09%09copy%20%3D%20options%5B%20name%20%5D%3B%0A%0A%09%09%09%09//%20Prevent%20Object.prototype%20pollution%0A%09%09%09%09//%20Prevent%20never-ending%20loop%0A%09%09%09%09if%20%28%20name%20%3D%3D%3D%20%22__proto__%22%20%7C%7C%20target%20%3D%3D%3D%20copy%20%29%20%7B%0A%09%09%09%09%09continue%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Recurse%20if%20we%27re%20merging%20plain%20objects%20or%20arrays%0A%09%09%09%09if%20%28%20deep%20%26%26%20copy%20%26%26%20%28%20jQuery.isPlainObject%28%20copy%20%29%20%7C%7C%0A%09%09%09%09%09%28%20copyIsArray%20%3D%20Array.isArray%28%20copy%20%29%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09src%20%3D%20target%5B%20name%20%5D%3B%0A%0A%09%09%09%09%09//%20Ensure%20proper%20type%20for%20the%20source%20value%0A%09%09%09%09%09if%20%28%20copyIsArray%20%26%26%20%21Array.isArray%28%20src%20%29%20%29%20%7B%0A%09%09%09%09%09%09clone%20%3D%20%5B%5D%3B%0A%09%09%09%09%09%7D%20else%20if%20%28%20%21copyIsArray%20%26%26%20%21jQuery.isPlainObject%28%20src%20%29%20%29%20%7B%0A%09%09%09%09%09%09clone%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09clone%20%3D%20src%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09copyIsArray%20%3D%20false%3B%0A%0A%09%09%09%09%09//%20Never%20move%20original%20objects%2C%20clone%20them%0A%09%09%09%09%09target%5B%20name%20%5D%20%3D%20jQuery.extend%28%20deep%2C%20clone%2C%20copy%20%29%3B%0A%0A%09%09%09%09//%20Don%27t%20bring%20in%20undefined%20values%0A%09%09%09%09%7D%20else%20if%20%28%20copy%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09target%5B%20name%20%5D%20%3D%20copy%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20modified%20object%0A%09return%20target%3B%0A%7D%3B%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Unique%20for%20each%20copy%20of%20jQuery%20on%20the%20page%0A%09expando%3A%20%22jQuery%22%20%2B%20%28%20version%20%2B%20Math.random%28%29%20%29.replace%28%20/%5CD/g%2C%20%22%22%20%29%2C%0A%0A%09//%20Assume%20jQuery%20is%20ready%20without%20the%20ready%20module%0A%09isReady%3A%20true%2C%0A%0A%09error%3A%20function%28%20msg%20%29%20%7B%0A%09%09throw%20new%20Error%28%20msg%20%29%3B%0A%09%7D%2C%0A%0A%09noop%3A%20function%28%29%20%7B%7D%2C%0A%0A%09isPlainObject%3A%20function%28%20obj%20%29%20%7B%0A%09%09var%20proto%2C%20Ctor%3B%0A%0A%09%09//%20Detect%20obvious%20negatives%0A%09%09//%20Use%20toString%20instead%20of%20jQuery.type%20to%20catch%20host%20objects%0A%09%09if%20%28%20%21obj%20%7C%7C%20toString.call%28%20obj%20%29%20%21%3D%3D%20%22%5Bobject%20Object%5D%22%20%29%20%7B%0A%09%09%09return%20false%3B%0A%09%09%7D%0A%0A%09%09proto%20%3D%20getProto%28%20obj%20%29%3B%0A%0A%09%09//%20Objects%20with%20no%20prototype%20%28e.g.%2C%20%60Object.create%28%20null%20%29%60%29%20are%20plain%0A%09%09if%20%28%20%21proto%20%29%20%7B%0A%09%09%09return%20true%3B%0A%09%09%7D%0A%0A%09%09//%20Objects%20with%20prototype%20are%20plain%20iff%20they%20were%20constructed%20by%20a%20global%20Object%20function%0A%09%09Ctor%20%3D%20hasOwn.call%28%20proto%2C%20%22constructor%22%20%29%20%26%26%20proto.constructor%3B%0A%09%09return%20typeof%20Ctor%20%3D%3D%3D%20%22function%22%20%26%26%20fnToString.call%28%20Ctor%20%29%20%3D%3D%3D%20ObjectFunctionString%3B%0A%09%7D%2C%0A%0A%09isEmptyObject%3A%20function%28%20obj%20%29%20%7B%0A%09%09var%20name%3B%0A%0A%09%09for%20%28%20name%20in%20obj%20%29%20%7B%0A%09%09%09return%20false%3B%0A%09%09%7D%0A%09%09return%20true%3B%0A%09%7D%2C%0A%0A%09//%20Evaluates%20a%20script%20in%20a%20provided%20context%3B%20falls%20back%20to%20the%20global%20one%0A%09//%20if%20not%20specified.%0A%09globalEval%3A%20function%28%20code%2C%20options%2C%20doc%20%29%20%7B%0A%09%09DOMEval%28%20code%2C%20%7B%20nonce%3A%20options%20%26%26%20options.nonce%20%7D%2C%20doc%20%29%3B%0A%09%7D%2C%0A%0A%09each%3A%20function%28%20obj%2C%20callback%20%29%20%7B%0A%09%09var%20length%2C%20i%20%3D%200%3B%0A%0A%09%09if%20%28%20isArrayLike%28%20obj%20%29%20%29%20%7B%0A%09%09%09length%20%3D%20obj.length%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20callback.call%28%20obj%5B%20i%20%5D%2C%20i%2C%20obj%5B%20i%20%5D%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28%20i%20in%20obj%20%29%20%7B%0A%09%09%09%09if%20%28%20callback.call%28%20obj%5B%20i%20%5D%2C%20i%2C%20obj%5B%20i%20%5D%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20obj%3B%0A%09%7D%2C%0A%0A%09//%20results%20is%20for%20internal%20usage%20only%0A%09makeArray%3A%20function%28%20arr%2C%20results%20%29%20%7B%0A%09%09var%20ret%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09%09if%20%28%20arr%20%21%3D%20null%20%29%20%7B%0A%09%09%09if%20%28%20isArrayLike%28%20Object%28%20arr%20%29%20%29%20%29%20%7B%0A%09%09%09%09jQuery.merge%28%20ret%2C%0A%09%09%09%09%09typeof%20arr%20%3D%3D%3D%20%22string%22%20%3F%0A%09%09%09%09%09%5B%20arr%20%5D%20%3A%20arr%0A%09%09%09%09%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09push.call%28%20ret%2C%20arr%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20ret%3B%0A%09%7D%2C%0A%0A%09inArray%3A%20function%28%20elem%2C%20arr%2C%20i%20%29%20%7B%0A%09%09return%20arr%20%3D%3D%20null%20%3F%20-1%20%3A%20indexOf.call%28%20arr%2C%20elem%2C%20i%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09merge%3A%20function%28%20first%2C%20second%20%29%20%7B%0A%09%09var%20len%20%3D%20%2Bsecond.length%2C%0A%09%09%09j%20%3D%200%2C%0A%09%09%09i%20%3D%20first.length%3B%0A%0A%09%09for%20%28%20%3B%20j%20%3C%20len%3B%20j%2B%2B%20%29%20%7B%0A%09%09%09first%5B%20i%2B%2B%20%5D%20%3D%20second%5B%20j%20%5D%3B%0A%09%09%7D%0A%0A%09%09first.length%20%3D%20i%3B%0A%0A%09%09return%20first%3B%0A%09%7D%2C%0A%0A%09grep%3A%20function%28%20elems%2C%20callback%2C%20invert%20%29%20%7B%0A%09%09var%20callbackInverse%2C%0A%09%09%09matches%20%3D%20%5B%5D%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09length%20%3D%20elems.length%2C%0A%09%09%09callbackExpect%20%3D%20%21invert%3B%0A%0A%09%09//%20Go%20through%20the%20array%2C%20only%20saving%20the%20items%0A%09%09//%20that%20pass%20the%20validator%20function%0A%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09callbackInverse%20%3D%20%21callback%28%20elems%5B%20i%20%5D%2C%20i%20%29%3B%0A%09%09%09if%20%28%20callbackInverse%20%21%3D%3D%20callbackExpect%20%29%20%7B%0A%09%09%09%09matches.push%28%20elems%5B%20i%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20matches%3B%0A%09%7D%2C%0A%0A%09//%20arg%20is%20for%20internal%20usage%20only%0A%09map%3A%20function%28%20elems%2C%20callback%2C%20arg%20%29%20%7B%0A%09%09var%20length%2C%20value%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09ret%20%3D%20%5B%5D%3B%0A%0A%09%09//%20Go%20through%20the%20array%2C%20translating%20each%20of%20the%20items%20to%20their%20new%20values%0A%09%09if%20%28%20isArrayLike%28%20elems%20%29%20%29%20%7B%0A%09%09%09length%20%3D%20elems.length%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09value%20%3D%20callback%28%20elems%5B%20i%20%5D%2C%20i%2C%20arg%20%29%3B%0A%0A%09%09%09%09if%20%28%20value%20%21%3D%20null%20%29%20%7B%0A%09%09%09%09%09ret.push%28%20value%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Go%20through%20every%20key%20on%20the%20object%2C%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28%20i%20in%20elems%20%29%20%7B%0A%09%09%09%09value%20%3D%20callback%28%20elems%5B%20i%20%5D%2C%20i%2C%20arg%20%29%3B%0A%0A%09%09%09%09if%20%28%20value%20%21%3D%20null%20%29%20%7B%0A%09%09%09%09%09ret.push%28%20value%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Flatten%20any%20nested%20arrays%0A%09%09return%20flat%28%20ret%20%29%3B%0A%09%7D%2C%0A%0A%09//%20A%20global%20GUID%20counter%20for%20objects%0A%09guid%3A%201%2C%0A%0A%09//%20jQuery.support%20is%20not%20used%20in%20Core%20but%20other%20projects%20attach%20their%0A%09//%20properties%20to%20it%20so%20it%20needs%20to%20exist.%0A%09support%3A%20support%0A%7D%20%29%3B%0A%0Aif%20%28%20typeof%20Symbol%20%3D%3D%3D%20%22function%22%20%29%20%7B%0A%09jQuery.fn%5B%20Symbol.iterator%20%5D%20%3D%20arr%5B%20Symbol.iterator%20%5D%3B%0A%7D%0A%0A//%20Populate%20the%20class2type%20map%0AjQuery.each%28%20%22Boolean%20Number%20String%20Function%20Array%20Date%20RegExp%20Object%20Error%20Symbol%22.split%28%20%22%20%22%20%29%2C%0Afunction%28%20_i%2C%20name%20%29%20%7B%0A%09class2type%5B%20%22%5Bobject%20%22%20%2B%20name%20%2B%20%22%5D%22%20%5D%20%3D%20name.toLowerCase%28%29%3B%0A%7D%20%29%3B%0A%0Afunction%20isArrayLike%28%20obj%20%29%20%7B%0A%0A%09//%20Support%3A%20real%20iOS%208.2%20only%20%28not%20reproducible%20in%20simulator%29%0A%09//%20%60in%60%20check%20used%20to%20prevent%20JIT%20error%20%28gh-2145%29%0A%09//%20hasOwn%20isn%27t%20used%20here%20due%20to%20false%20negatives%0A%09//%20regarding%20Nodelist%20length%20in%20IE%0A%09var%20length%20%3D%20%21%21obj%20%26%26%20%22length%22%20in%20obj%20%26%26%20obj.length%2C%0A%09%09type%20%3D%20toType%28%20obj%20%29%3B%0A%0A%09if%20%28%20isFunction%28%20obj%20%29%20%7C%7C%20isWindow%28%20obj%20%29%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%0A%0A%09return%20type%20%3D%3D%3D%20%22array%22%20%7C%7C%20length%20%3D%3D%3D%200%20%7C%7C%0A%09%09typeof%20length%20%3D%3D%3D%20%22number%22%20%26%26%20length%20%3E%200%20%26%26%20%28%20length%20-%201%20%29%20in%20obj%3B%0A%7D%0Avar%20Sizzle%20%3D%0A/%2A%21%0A%20%2A%20Sizzle%20CSS%20Selector%20Engine%20v2.3.5%0A%20%2A%20https%3A//sizzlejs.com/%0A%20%2A%0A%20%2A%20Copyright%20JS%20Foundation%20and%20other%20contributors%0A%20%2A%20Released%20under%20the%20MIT%20license%0A%20%2A%20https%3A//js.foundation/%0A%20%2A%0A%20%2A%20Date%3A%202020-03-14%0A%20%2A/%0A%28%20function%28%20window%20%29%20%7B%0Avar%20i%2C%0A%09support%2C%0A%09Expr%2C%0A%09getText%2C%0A%09isXML%2C%0A%09tokenize%2C%0A%09compile%2C%0A%09select%2C%0A%09outermostContext%2C%0A%09sortInput%2C%0A%09hasDuplicate%2C%0A%0A%09//%20Local%20document%20vars%0A%09setDocument%2C%0A%09document%2C%0A%09docElem%2C%0A%09documentIsHTML%2C%0A%09rbuggyQSA%2C%0A%09rbuggyMatches%2C%0A%09matches%2C%0A%09contains%2C%0A%0A%09//%20Instance-specific%20data%0A%09expando%20%3D%20%22sizzle%22%20%2B%201%20%2A%20new%20Date%28%29%2C%0A%09preferredDoc%20%3D%20window.document%2C%0A%09dirruns%20%3D%200%2C%0A%09done%20%3D%200%2C%0A%09classCache%20%3D%20createCache%28%29%2C%0A%09tokenCache%20%3D%20createCache%28%29%2C%0A%09compilerCache%20%3D%20createCache%28%29%2C%0A%09nonnativeSelectorCache%20%3D%20createCache%28%29%2C%0A%09sortOrder%20%3D%20function%28%20a%2C%20b%20%29%20%7B%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%7D%0A%09%09return%200%3B%0A%09%7D%2C%0A%0A%09//%20Instance%20methods%0A%09hasOwn%20%3D%20%28%20%7B%7D%20%29.hasOwnProperty%2C%0A%09arr%20%3D%20%5B%5D%2C%0A%09pop%20%3D%20arr.pop%2C%0A%09pushNative%20%3D%20arr.push%2C%0A%09push%20%3D%20arr.push%2C%0A%09slice%20%3D%20arr.slice%2C%0A%0A%09//%20Use%20a%20stripped-down%20indexOf%20as%20it%27s%20faster%20than%20native%0A%09//%20https%3A//jsperf.com/thor-indexof-vs-for/5%0A%09indexOf%20%3D%20function%28%20list%2C%20elem%20%29%20%7B%0A%09%09var%20i%20%3D%200%2C%0A%09%09%09len%20%3D%20list.length%3B%0A%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20list%5B%20i%20%5D%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09return%20i%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20-1%3B%0A%09%7D%2C%0A%0A%09booleans%20%3D%20%22checked%7Cselected%7Casync%7Cautofocus%7Cautoplay%7Ccontrols%7Cdefer%7Cdisabled%7Chidden%7C%22%20%2B%0A%09%09%22ismap%7Cloop%7Cmultiple%7Copen%7Creadonly%7Crequired%7Cscoped%22%2C%0A%0A%09//%20Regular%20expressions%0A%0A%09//%20http%3A//www.w3.org/TR/css3-selectors/%23whitespace%0A%09whitespace%20%3D%20%22%5B%5C%5Cx20%5C%5Ct%5C%5Cr%5C%5Cn%5C%5Cf%5D%22%2C%0A%0A%09//%20https%3A//www.w3.org/TR/css-syntax-3/%23ident-token-diagram%0A%09identifier%20%3D%20%22%28%3F%3A%5C%5C%5C%5C%5B%5C%5Cda-fA-F%5D%7B1%2C6%7D%22%20%2B%20whitespace%20%2B%0A%09%09%22%3F%7C%5C%5C%5C%5C%5B%5E%5C%5Cr%5C%5Cn%5C%5Cf%5D%7C%5B%5C%5Cw-%5D%7C%5B%5E%5C0-%5C%5Cx7f%5D%29%2B%22%2C%0A%0A%09//%20Attribute%20selectors%3A%20http%3A//www.w3.org/TR/selectors/%23attribute-selectors%0A%09attributes%20%3D%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2A%28%22%20%2B%20identifier%20%2B%20%22%29%28%3F%3A%22%20%2B%20whitespace%20%2B%0A%0A%09%09//%20Operator%20%28capture%202%29%0A%09%09%22%2A%28%5B%2A%5E%24%7C%21~%5D%3F%3D%29%22%20%2B%20whitespace%20%2B%0A%0A%09%09//%20%22Attribute%20values%20must%20be%20CSS%20identifiers%20%5Bcapture%205%5D%0A%09%09//%20or%20strings%20%5Bcapture%203%20or%20capture%204%5D%22%0A%09%09%22%2A%28%3F%3A%27%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%27%5D%29%2A%29%27%7C%5C%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%5C%22%5D%29%2A%29%5C%22%7C%28%22%20%2B%20identifier%20%2B%20%22%29%29%7C%29%22%20%2B%0A%09%09whitespace%20%2B%20%22%2A%5C%5C%5D%22%2C%0A%0A%09pseudos%20%3D%20%22%3A%28%22%20%2B%20identifier%20%2B%20%22%29%28%3F%3A%5C%5C%28%28%22%20%2B%0A%0A%09%09//%20To%20reduce%20the%20number%20of%20selectors%20needing%20tokenize%20in%20the%20preFilter%2C%20prefer%20arguments%3A%0A%09%09//%201.%20quoted%20%28capture%203%3B%20capture%204%20or%20capture%205%29%0A%09%09%22%28%27%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%27%5D%29%2A%29%27%7C%5C%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%5C%22%5D%29%2A%29%5C%22%29%7C%22%20%2B%0A%0A%09%09//%202.%20simple%20%28capture%206%29%0A%09%09%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%28%29%5B%5C%5C%5D%5D%7C%22%20%2B%20attributes%20%2B%20%22%29%2A%29%7C%22%20%2B%0A%0A%09%09//%203.%20anything%20else%20%28capture%202%29%0A%09%09%22.%2A%22%20%2B%0A%09%09%22%29%5C%5C%29%7C%29%22%2C%0A%0A%09//%20Leading%20and%20non-escaped%20trailing%20whitespace%2C%20capturing%20some%20non-whitespace%20characters%20preceding%20the%20latter%0A%09rwhitespace%20%3D%20new%20RegExp%28%20whitespace%20%2B%20%22%2B%22%2C%20%22g%22%20%29%2C%0A%09rtrim%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2B%7C%28%28%3F%3A%5E%7C%5B%5E%5C%5C%5C%5C%5D%29%28%3F%3A%5C%5C%5C%5C.%29%2A%29%22%20%2B%0A%09%09whitespace%20%2B%20%22%2B%24%22%2C%20%22g%22%20%29%2C%0A%0A%09rcomma%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2A%2C%22%20%2B%20whitespace%20%2B%20%22%2A%22%20%29%2C%0A%09rcombinators%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2A%28%5B%3E%2B~%5D%7C%22%20%2B%20whitespace%20%2B%20%22%29%22%20%2B%20whitespace%20%2B%0A%09%09%22%2A%22%20%29%2C%0A%09rdescend%20%3D%20new%20RegExp%28%20whitespace%20%2B%20%22%7C%3E%22%20%29%2C%0A%0A%09rpseudo%20%3D%20new%20RegExp%28%20pseudos%20%29%2C%0A%09ridentifier%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20identifier%20%2B%20%22%24%22%20%29%2C%0A%0A%09matchExpr%20%3D%20%7B%0A%09%09%22ID%22%3A%20new%20RegExp%28%20%22%5E%23%28%22%20%2B%20identifier%20%2B%20%22%29%22%20%29%2C%0A%09%09%22CLASS%22%3A%20new%20RegExp%28%20%22%5E%5C%5C.%28%22%20%2B%20identifier%20%2B%20%22%29%22%20%29%2C%0A%09%09%22TAG%22%3A%20new%20RegExp%28%20%22%5E%28%22%20%2B%20identifier%20%2B%20%22%7C%5B%2A%5D%29%22%20%29%2C%0A%09%09%22ATTR%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20attributes%20%29%2C%0A%09%09%22PSEUDO%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20pseudos%20%29%2C%0A%09%09%22CHILD%22%3A%20new%20RegExp%28%20%22%5E%3A%28only%7Cfirst%7Clast%7Cnth%7Cnth-last%29-%28child%7Cof-type%29%28%3F%3A%5C%5C%28%22%20%2B%0A%09%09%09whitespace%20%2B%20%22%2A%28even%7Codd%7C%28%28%5B%2B-%5D%7C%29%28%5C%5Cd%2A%29n%7C%29%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3A%28%5B%2B-%5D%7C%29%22%20%2B%0A%09%09%09whitespace%20%2B%20%22%2A%28%5C%5Cd%2B%29%7C%29%29%22%20%2B%20whitespace%20%2B%20%22%2A%5C%5C%29%7C%29%22%2C%20%22i%22%20%29%2C%0A%09%09%22bool%22%3A%20new%20RegExp%28%20%22%5E%28%3F%3A%22%20%2B%20booleans%20%2B%20%22%29%24%22%2C%20%22i%22%20%29%2C%0A%0A%09%09//%20For%20use%20in%20libraries%20implementing%20.is%28%29%0A%09%09//%20We%20use%20this%20for%20POS%20matching%20in%20%60select%60%0A%09%09%22needsContext%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%0A%09%09%09%22%2A%5B%3E%2B~%5D%7C%3A%28even%7Codd%7Ceq%7Cgt%7Clt%7Cnth%7Cfirst%7Clast%29%28%3F%3A%5C%5C%28%22%20%2B%20whitespace%20%2B%0A%09%09%09%22%2A%28%28%3F%3A-%5C%5Cd%29%3F%5C%5Cd%2A%29%22%20%2B%20whitespace%20%2B%20%22%2A%5C%5C%29%7C%29%28%3F%3D%5B%5E-%5D%7C%24%29%22%2C%20%22i%22%20%29%0A%09%7D%2C%0A%0A%09rhtml%20%3D%20/HTML%24/i%2C%0A%09rinputs%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Cbutton%29%24/i%2C%0A%09rheader%20%3D%20/%5Eh%5Cd%24/i%2C%0A%0A%09rnative%20%3D%20/%5E%5B%5E%7B%5D%2B%5C%7B%5Cs%2A%5C%5Bnative%20%5Cw/%2C%0A%0A%09//%20Easily-parseable/retrievable%20ID%20or%20TAG%20or%20CLASS%20selectors%0A%09rquickExpr%20%3D%20/%5E%28%3F%3A%23%28%5B%5Cw-%5D%2B%29%7C%28%5Cw%2B%29%7C%5C.%28%5B%5Cw-%5D%2B%29%29%24/%2C%0A%0A%09rsibling%20%3D%20/%5B%2B~%5D/%2C%0A%0A%09//%20CSS%20escapes%0A%09//%20http%3A//www.w3.org/TR/CSS21/syndata.html%23escaped-characters%0A%09runescape%20%3D%20new%20RegExp%28%20%22%5C%5C%5C%5C%5B%5C%5Cda-fA-F%5D%7B1%2C6%7D%22%20%2B%20whitespace%20%2B%20%22%3F%7C%5C%5C%5C%5C%28%5B%5E%5C%5Cr%5C%5Cn%5C%5Cf%5D%29%22%2C%20%22g%22%20%29%2C%0A%09funescape%20%3D%20function%28%20escape%2C%20nonHex%20%29%20%7B%0A%09%09var%20high%20%3D%20%220x%22%20%2B%20escape.slice%28%201%20%29%20-%200x10000%3B%0A%0A%09%09return%20nonHex%20%3F%0A%0A%09%09%09//%20Strip%20the%20backslash%20prefix%20from%20a%20non-hex%20escape%20sequence%0A%09%09%09nonHex%20%3A%0A%0A%09%09%09//%20Replace%20a%20hexadecimal%20escape%20sequence%20with%20the%20encoded%20Unicode%20code%20point%0A%09%09%09//%20Support%3A%20IE%20%3C%3D11%2B%0A%09%09%09//%20For%20values%20outside%20the%20Basic%20Multilingual%20Plane%20%28BMP%29%2C%20manually%20construct%20a%0A%09%09%09//%20surrogate%20pair%0A%09%09%09high%20%3C%200%20%3F%0A%09%09%09%09String.fromCharCode%28%20high%20%2B%200x10000%20%29%20%3A%0A%09%09%09%09String.fromCharCode%28%20high%20%3E%3E%2010%20%7C%200xD800%2C%20high%20%26%200x3FF%20%7C%200xDC00%20%29%3B%0A%09%7D%2C%0A%0A%09//%20CSS%20string/identifier%20serialization%0A%09//%20https%3A//drafts.csswg.org/cssom/%23common-serializing-idioms%0A%09rcssescape%20%3D%20/%28%5B%5C0-%5Cx1f%5Cx7f%5D%7C%5E-%3F%5Cd%29%7C%5E-%24%7C%5B%5E%5C0-%5Cx1f%5Cx7f-%5CuFFFF%5Cw-%5D/g%2C%0A%09fcssescape%20%3D%20function%28%20ch%2C%20asCodePoint%20%29%20%7B%0A%09%09if%20%28%20asCodePoint%20%29%20%7B%0A%0A%09%09%09//%20U%2B0000%20NULL%20becomes%20U%2BFFFD%20REPLACEMENT%20CHARACTER%0A%09%09%09if%20%28%20ch%20%3D%3D%3D%20%22%5C0%22%20%29%20%7B%0A%09%09%09%09return%20%22%5CuFFFD%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Control%20characters%20and%20%28dependent%20upon%20position%29%20numbers%20get%20escaped%20as%20code%20points%0A%09%09%09return%20ch.slice%28%200%2C%20-1%20%29%20%2B%20%22%5C%5C%22%20%2B%0A%09%09%09%09ch.charCodeAt%28%20ch.length%20-%201%20%29.toString%28%2016%20%29%20%2B%20%22%20%22%3B%0A%09%09%7D%0A%0A%09%09//%20Other%20potentially-special%20ASCII%20characters%20get%20backslash-escaped%0A%09%09return%20%22%5C%5C%22%20%2B%20ch%3B%0A%09%7D%2C%0A%0A%09//%20Used%20for%20iframes%0A%09//%20See%20setDocument%28%29%0A%09//%20Removing%20the%20function%20wrapper%20causes%20a%20%22Permission%20Denied%22%0A%09//%20error%20in%20IE%0A%09unloadHandler%20%3D%20function%28%29%20%7B%0A%09%09setDocument%28%29%3B%0A%09%7D%2C%0A%0A%09inDisabledFieldset%20%3D%20addCombinator%28%0A%09%09function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20true%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22fieldset%22%3B%0A%09%09%7D%2C%0A%09%09%7B%20dir%3A%20%22parentNode%22%2C%20next%3A%20%22legend%22%20%7D%0A%09%29%3B%0A%0A//%20Optimize%20for%20push.apply%28%20_%2C%20NodeList%20%29%0Atry%20%7B%0A%09push.apply%28%0A%09%09%28%20arr%20%3D%20slice.call%28%20preferredDoc.childNodes%20%29%20%29%2C%0A%09%09preferredDoc.childNodes%0A%09%29%3B%0A%0A%09//%20Support%3A%20Android%3C4.0%0A%09//%20Detect%20silently%20failing%20push.apply%0A%09//%20eslint-disable-next-line%20no-unused-expressions%0A%09arr%5B%20preferredDoc.childNodes.length%20%5D.nodeType%3B%0A%7D%20catch%20%28%20e%20%29%20%7B%0A%09push%20%3D%20%7B%20apply%3A%20arr.length%20%3F%0A%0A%09%09//%20Leverage%20slice%20if%20possible%0A%09%09function%28%20target%2C%20els%20%29%20%7B%0A%09%09%09pushNative.apply%28%20target%2C%20slice.call%28%20els%20%29%20%29%3B%0A%09%09%7D%20%3A%0A%0A%09%09//%20Support%3A%20IE%3C9%0A%09%09//%20Otherwise%20append%20directly%0A%09%09function%28%20target%2C%20els%20%29%20%7B%0A%09%09%09var%20j%20%3D%20target.length%2C%0A%09%09%09%09i%20%3D%200%3B%0A%0A%09%09%09//%20Can%27t%20trust%20NodeList.length%0A%09%09%09while%20%28%20%28%20target%5B%20j%2B%2B%20%5D%20%3D%20els%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%7D%0A%09%09%09target.length%20%3D%20j%20-%201%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0Afunction%20Sizzle%28%20selector%2C%20context%2C%20results%2C%20seed%20%29%20%7B%0A%09var%20m%2C%20i%2C%20elem%2C%20nid%2C%20match%2C%20groups%2C%20newSelector%2C%0A%09%09newContext%20%3D%20context%20%26%26%20context.ownerDocument%2C%0A%0A%09%09//%20nodeType%20defaults%20to%209%2C%20since%20context%20defaults%20to%20document%0A%09%09nodeType%20%3D%20context%20%3F%20context.nodeType%20%3A%209%3B%0A%0A%09results%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09//%20Return%20early%20from%20calls%20with%20invalid%20selector%20or%20context%0A%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%7C%7C%20%21selector%20%7C%7C%0A%09%09nodeType%20%21%3D%3D%201%20%26%26%20nodeType%20%21%3D%3D%209%20%26%26%20nodeType%20%21%3D%3D%2011%20%29%20%7B%0A%0A%09%09return%20results%3B%0A%09%7D%0A%0A%09//%20Try%20to%20shortcut%20find%20operations%20%28as%20opposed%20to%20filters%29%20in%20HTML%20documents%0A%09if%20%28%20%21seed%20%29%20%7B%0A%09%09setDocument%28%20context%20%29%3B%0A%09%09context%20%3D%20context%20%7C%7C%20document%3B%0A%0A%09%09if%20%28%20documentIsHTML%20%29%20%7B%0A%0A%09%09%09//%20If%20the%20selector%20is%20sufficiently%20simple%2C%20try%20using%20a%20%22get%2ABy%2A%22%20DOM%20method%0A%09%09%09//%20%28excepting%20DocumentFragment%20context%2C%20where%20the%20methods%20don%27t%20exist%29%0A%09%09%09if%20%28%20nodeType%20%21%3D%3D%2011%20%26%26%20%28%20match%20%3D%20rquickExpr.exec%28%20selector%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20ID%20selector%0A%09%09%09%09if%20%28%20%28%20m%20%3D%20match%5B%201%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Document%20context%0A%09%09%09%09%09if%20%28%20nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20context.getElementById%28%20m%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20IE%2C%20Opera%2C%20Webkit%0A%09%09%09%09%09%09%09//%20TODO%3A%20identify%20versions%0A%09%09%09%09%09%09%09//%20getElementById%20can%20match%20elements%20by%20name%20instead%20of%20ID%0A%09%09%09%09%09%09%09if%20%28%20elem.id%20%3D%3D%3D%20m%20%29%20%7B%0A%09%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Element%20context%0A%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%2C%20Opera%2C%20Webkit%0A%09%09%09%09%09%09//%20TODO%3A%20identify%20versions%0A%09%09%09%09%09%09//%20getElementById%20can%20match%20elements%20by%20name%20instead%20of%20ID%0A%09%09%09%09%09%09if%20%28%20newContext%20%26%26%20%28%20elem%20%3D%20newContext.getElementById%28%20m%20%29%20%29%20%26%26%0A%09%09%09%09%09%09%09contains%28%20context%2C%20elem%20%29%20%26%26%0A%09%09%09%09%09%09%09elem.id%20%3D%3D%3D%20m%20%29%20%7B%0A%0A%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09//%20Type%20selector%0A%09%09%09%09%7D%20else%20if%20%28%20match%5B%202%20%5D%20%29%20%7B%0A%09%09%09%09%09push.apply%28%20results%2C%20context.getElementsByTagName%28%20selector%20%29%20%29%3B%0A%09%09%09%09%09return%20results%3B%0A%0A%09%09%09%09//%20Class%20selector%0A%09%09%09%09%7D%20else%20if%20%28%20%28%20m%20%3D%20match%5B%203%20%5D%20%29%20%26%26%20support.getElementsByClassName%20%26%26%0A%09%09%09%09%09context.getElementsByClassName%20%29%20%7B%0A%0A%09%09%09%09%09push.apply%28%20results%2C%20context.getElementsByClassName%28%20m%20%29%20%29%3B%0A%09%09%09%09%09return%20results%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Take%20advantage%20of%20querySelectorAll%0A%09%09%09if%20%28%20support.qsa%20%26%26%0A%09%09%09%09%21nonnativeSelectorCache%5B%20selector%20%2B%20%22%20%22%20%5D%20%26%26%0A%09%09%09%09%28%20%21rbuggyQSA%20%7C%7C%20%21rbuggyQSA.test%28%20selector%20%29%20%29%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20IE%208%20only%0A%09%09%09%09//%20Exclude%20object%20elements%0A%09%09%09%09%28%20nodeType%20%21%3D%3D%201%20%7C%7C%20context.nodeName.toLowerCase%28%29%20%21%3D%3D%20%22object%22%20%29%20%29%20%7B%0A%0A%09%09%09%09newSelector%20%3D%20selector%3B%0A%09%09%09%09newContext%20%3D%20context%3B%0A%0A%09%09%09%09//%20qSA%20considers%20elements%20outside%20a%20scoping%20root%20when%20evaluating%20child%20or%0A%09%09%09%09//%20descendant%20combinators%2C%20which%20is%20not%20what%20we%20want.%0A%09%09%09%09//%20In%20such%20cases%2C%20we%20work%20around%20the%20behavior%20by%20prefixing%20every%20selector%20in%20the%0A%09%09%09%09//%20list%20with%20an%20ID%20selector%20referencing%20the%20scope%20context.%0A%09%09%09%09//%20The%20technique%20has%20to%20be%20used%20as%20well%20when%20a%20leading%20combinator%20is%20used%0A%09%09%09%09//%20as%20such%20selectors%20are%20not%20recognized%20by%20querySelectorAll.%0A%09%09%09%09//%20Thanks%20to%20Andrew%20Dupont%20for%20this%20technique.%0A%09%09%09%09if%20%28%20nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%09%28%20rdescend.test%28%20selector%20%29%20%7C%7C%20rcombinators.test%28%20selector%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Expand%20context%20for%20sibling%20selectors%0A%09%09%09%09%09newContext%20%3D%20rsibling.test%28%20selector%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%0A%09%09%09%09%09%09context%3B%0A%0A%09%09%09%09%09//%20We%20can%20use%20%3Ascope%20instead%20of%20the%20ID%20hack%20if%20the%20browser%0A%09%09%09%09%09//%20supports%20it%20%26%20if%20we%27re%20not%20changing%20the%20context.%0A%09%09%09%09%09if%20%28%20newContext%20%21%3D%3D%20context%20%7C%7C%20%21support.scope%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Capture%20the%20context%20ID%2C%20setting%20it%20first%20if%20necessary%0A%09%09%09%09%09%09if%20%28%20%28%20nid%20%3D%20context.getAttribute%28%20%22id%22%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09nid%20%3D%20nid.replace%28%20rcssescape%2C%20fcssescape%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09context.setAttribute%28%20%22id%22%2C%20%28%20nid%20%3D%20expando%20%29%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Prefix%20every%20selector%20in%20the%20list%0A%09%09%09%09%09groups%20%3D%20tokenize%28%20selector%20%29%3B%0A%09%09%09%09%09i%20%3D%20groups.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09groups%5B%20i%20%5D%20%3D%20%28%20nid%20%3F%20%22%23%22%20%2B%20nid%20%3A%20%22%3Ascope%22%20%29%20%2B%20%22%20%22%20%2B%0A%09%09%09%09%09%09%09toSelector%28%20groups%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09newSelector%20%3D%20groups.join%28%20%22%2C%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09push.apply%28%20results%2C%0A%09%09%09%09%09%09newContext.querySelectorAll%28%20newSelector%20%29%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%09return%20results%3B%0A%09%09%09%09%7D%20catch%20%28%20qsaError%20%29%20%7B%0A%09%09%09%09%09nonnativeSelectorCache%28%20selector%2C%20true%20%29%3B%0A%09%09%09%09%7D%20finally%20%7B%0A%09%09%09%09%09if%20%28%20nid%20%3D%3D%3D%20expando%20%29%20%7B%0A%09%09%09%09%09%09context.removeAttribute%28%20%22id%22%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20All%20others%0A%09return%20select%28%20selector.replace%28%20rtrim%2C%20%22%241%22%20%29%2C%20context%2C%20results%2C%20seed%20%29%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Create%20key-value%20caches%20of%20limited%20size%0A%20%2A%20%40returns%20%7Bfunction%28string%2C%20object%29%7D%20Returns%20the%20Object%20data%20after%20storing%20it%20on%20itself%20with%0A%20%2A%09property%20name%20the%20%28space-suffixed%29%20string%20and%20%28if%20the%20cache%20is%20larger%20than%20Expr.cacheLength%29%0A%20%2A%09deleting%20the%20oldest%20entry%0A%20%2A/%0Afunction%20createCache%28%29%20%7B%0A%09var%20keys%20%3D%20%5B%5D%3B%0A%0A%09function%20cache%28%20key%2C%20value%20%29%20%7B%0A%0A%09%09//%20Use%20%28key%20%2B%20%22%20%22%29%20to%20avoid%20collision%20with%20native%20prototype%20properties%20%28see%20Issue%20%23157%29%0A%09%09if%20%28%20keys.push%28%20key%20%2B%20%22%20%22%20%29%20%3E%20Expr.cacheLength%20%29%20%7B%0A%0A%09%09%09//%20Only%20keep%20the%20most%20recent%20entries%0A%09%09%09delete%20cache%5B%20keys.shift%28%29%20%5D%3B%0A%09%09%7D%0A%09%09return%20%28%20cache%5B%20key%20%2B%20%22%20%22%20%5D%20%3D%20value%20%29%3B%0A%09%7D%0A%09return%20cache%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Mark%20a%20function%20for%20special%20use%20by%20Sizzle%0A%20%2A%20%40param%20%7BFunction%7D%20fn%20The%20function%20to%20mark%0A%20%2A/%0Afunction%20markFunction%28%20fn%20%29%20%7B%0A%09fn%5B%20expando%20%5D%20%3D%20true%3B%0A%09return%20fn%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Support%20testing%20using%20an%20element%0A%20%2A%20%40param%20%7BFunction%7D%20fn%20Passed%20the%20created%20element%20and%20returns%20a%20boolean%20result%0A%20%2A/%0Afunction%20assert%28%20fn%20%29%20%7B%0A%09var%20el%20%3D%20document.createElement%28%20%22fieldset%22%20%29%3B%0A%0A%09try%20%7B%0A%09%09return%20%21%21fn%28%20el%20%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%20finally%20%7B%0A%0A%09%09//%20Remove%20from%20its%20parent%20by%20default%0A%09%09if%20%28%20el.parentNode%20%29%20%7B%0A%09%09%09el.parentNode.removeChild%28%20el%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20release%20memory%20in%20IE%0A%09%09el%20%3D%20null%3B%0A%09%7D%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Adds%20the%20same%20handler%20for%20all%20of%20the%20specified%20attrs%0A%20%2A%20%40param%20%7BString%7D%20attrs%20Pipe-separated%20list%20of%20attributes%0A%20%2A%20%40param%20%7BFunction%7D%20handler%20The%20method%20that%20will%20be%20applied%0A%20%2A/%0Afunction%20addHandle%28%20attrs%2C%20handler%20%29%20%7B%0A%09var%20arr%20%3D%20attrs.split%28%20%22%7C%22%20%29%2C%0A%09%09i%20%3D%20arr.length%3B%0A%0A%09while%20%28%20i--%20%29%20%7B%0A%09%09Expr.attrHandle%5B%20arr%5B%20i%20%5D%20%5D%20%3D%20handler%3B%0A%09%7D%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Checks%20document%20order%20of%20two%20siblings%0A%20%2A%20%40param%20%7BElement%7D%20a%0A%20%2A%20%40param%20%7BElement%7D%20b%0A%20%2A%20%40returns%20%7BNumber%7D%20Returns%20less%20than%200%20if%20a%20precedes%20b%2C%20greater%20than%200%20if%20a%20follows%20b%0A%20%2A/%0Afunction%20siblingCheck%28%20a%2C%20b%20%29%20%7B%0A%09var%20cur%20%3D%20b%20%26%26%20a%2C%0A%09%09diff%20%3D%20cur%20%26%26%20a.nodeType%20%3D%3D%3D%201%20%26%26%20b.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09a.sourceIndex%20-%20b.sourceIndex%3B%0A%0A%09//%20Use%20IE%20sourceIndex%20if%20available%20on%20both%20nodes%0A%09if%20%28%20diff%20%29%20%7B%0A%09%09return%20diff%3B%0A%09%7D%0A%0A%09//%20Check%20if%20b%20follows%20a%0A%09if%20%28%20cur%20%29%20%7B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.nextSibling%20%29%20%29%20%7B%0A%09%09%09if%20%28%20cur%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20a%20%3F%201%20%3A%20-1%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20input%20types%0A%20%2A%20%40param%20%7BString%7D%20type%0A%20%2A/%0Afunction%20createInputPseudo%28%20type%20%29%20%7B%0A%09return%20function%28%20elem%20%29%20%7B%0A%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09return%20name%20%3D%3D%3D%20%22input%22%20%26%26%20elem.type%20%3D%3D%3D%20type%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20buttons%0A%20%2A%20%40param%20%7BString%7D%20type%0A%20%2A/%0Afunction%20createButtonPseudo%28%20type%20%29%20%7B%0A%09return%20function%28%20elem%20%29%20%7B%0A%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09return%20%28%20name%20%3D%3D%3D%20%22input%22%20%7C%7C%20name%20%3D%3D%3D%20%22button%22%20%29%20%26%26%20elem.type%20%3D%3D%3D%20type%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20%3Aenabled/%3Adisabled%0A%20%2A%20%40param%20%7BBoolean%7D%20disabled%20true%20for%20%3Adisabled%3B%20false%20for%20%3Aenabled%0A%20%2A/%0Afunction%20createDisabledPseudo%28%20disabled%20%29%20%7B%0A%0A%09//%20Known%20%3Adisabled%20false%20positives%3A%20fieldset%5Bdisabled%5D%20%3E%20legend%3Anth-of-type%28n%2B2%29%20%3Acan-disable%0A%09return%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20Only%20certain%20elements%20can%20match%20%3Aenabled%20or%20%3Adisabled%0A%09%09//%20https%3A//html.spec.whatwg.org/multipage/scripting.html%23selector-enabled%0A%09%09//%20https%3A//html.spec.whatwg.org/multipage/scripting.html%23selector-disabled%0A%09%09if%20%28%20%22form%22%20in%20elem%20%29%20%7B%0A%0A%09%09%09//%20Check%20for%20inherited%20disabledness%20on%20relevant%20non-disabled%20elements%3A%0A%09%09%09//%20%2A%20listed%20form-associated%20elements%20in%20a%20disabled%20fieldset%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23category-listed%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23concept-fe-disabled%0A%09%09%09//%20%2A%20option%20elements%20in%20a%20disabled%20optgroup%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23concept-option-disabled%0A%09%09%09//%20All%20such%20elements%20have%20a%20%22form%22%20property.%0A%09%09%09if%20%28%20elem.parentNode%20%26%26%20elem.disabled%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09//%20Option%20elements%20defer%20to%20a%20parent%20optgroup%20if%20present%0A%09%09%09%09if%20%28%20%22label%22%20in%20elem%20%29%20%7B%0A%09%09%09%09%09if%20%28%20%22label%22%20in%20elem.parentNode%20%29%20%7B%0A%09%09%09%09%09%09return%20elem.parentNode.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Support%3A%20IE%206%20-%2011%0A%09%09%09%09//%20Use%20the%20isDisabled%20shortcut%20property%20to%20check%20for%20disabled%20fieldset%20ancestors%0A%09%09%09%09return%20elem.isDisabled%20%3D%3D%3D%20disabled%20%7C%7C%0A%0A%09%09%09%09%09//%20Where%20there%20is%20no%20isDisabled%2C%20check%20manually%0A%09%09%09%09%09/%2A%20jshint%20-W018%20%2A/%0A%09%09%09%09%09elem.isDisabled%20%21%3D%3D%20%21disabled%20%26%26%0A%09%09%09%09%09inDisabledFieldset%28%20elem%20%29%20%3D%3D%3D%20disabled%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%0A%09%09//%20Try%20to%20winnow%20out%20elements%20that%20can%27t%20be%20disabled%20before%20trusting%20the%20disabled%20property.%0A%09%09//%20Some%20victims%20get%20caught%20in%20our%20net%20%28label%2C%20legend%2C%20menu%2C%20track%29%2C%20but%20it%20shouldn%27t%0A%09%09//%20even%20exist%20on%20them%2C%20let%20alone%20have%20a%20boolean%20value.%0A%09%09%7D%20else%20if%20%28%20%22label%22%20in%20elem%20%29%20%7B%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%7D%0A%0A%09%09//%20Remaining%20elements%20are%20neither%20%3Aenabled%20nor%20%3Adisabled%0A%09%09return%20false%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20positionals%0A%20%2A%20%40param%20%7BFunction%7D%20fn%0A%20%2A/%0Afunction%20createPositionalPseudo%28%20fn%20%29%20%7B%0A%09return%20markFunction%28%20function%28%20argument%20%29%20%7B%0A%09%09argument%20%3D%20%2Bargument%3B%0A%09%09return%20markFunction%28%20function%28%20seed%2C%20matches%20%29%20%7B%0A%09%09%09var%20j%2C%0A%09%09%09%09matchIndexes%20%3D%20fn%28%20%5B%5D%2C%20seed.length%2C%20argument%20%29%2C%0A%09%09%09%09i%20%3D%20matchIndexes.length%3B%0A%0A%09%09%09//%20Match%20elements%20found%20at%20the%20specified%20indexes%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20seed%5B%20%28%20j%20%3D%20matchIndexes%5B%20i%20%5D%20%29%20%5D%20%29%20%7B%0A%09%09%09%09%09seed%5B%20j%20%5D%20%3D%20%21%28%20matches%5B%20j%20%5D%20%3D%20seed%5B%20j%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Checks%20a%20node%20for%20validity%20as%20a%20Sizzle%20context%0A%20%2A%20%40param%20%7BElement%7CObject%3D%7D%20context%0A%20%2A%20%40returns%20%7BElement%7CObject%7CBoolean%7D%20The%20input%20node%20if%20acceptable%2C%20otherwise%20a%20falsy%20value%0A%20%2A/%0Afunction%20testContext%28%20context%20%29%20%7B%0A%09return%20context%20%26%26%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%26%26%20context%3B%0A%7D%0A%0A//%20Expose%20support%20vars%20for%20convenience%0Asupport%20%3D%20Sizzle.support%20%3D%20%7B%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Detects%20XML%20nodes%0A%20%2A%20%40param%20%7BElement%7CObject%7D%20elem%20An%20element%20or%20a%20document%0A%20%2A%20%40returns%20%7BBoolean%7D%20True%20iff%20elem%20is%20a%20non-HTML%20XML%20node%0A%20%2A/%0AisXML%20%3D%20Sizzle.isXML%20%3D%20function%28%20elem%20%29%20%7B%0A%09var%20namespace%20%3D%20elem.namespaceURI%2C%0A%09%09docElem%20%3D%20%28%20elem.ownerDocument%20%7C%7C%20elem%20%29.documentElement%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D8%0A%09//%20Assume%20HTML%20when%20documentElement%20doesn%27t%20yet%20exist%2C%20such%20as%20inside%20loading%20iframes%0A%09//%20https%3A//bugs.jquery.com/ticket/4833%0A%09return%20%21rhtml.test%28%20namespace%20%7C%7C%20docElem%20%26%26%20docElem.nodeName%20%7C%7C%20%22HTML%22%20%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Sets%20document-related%20variables%20once%20based%20on%20the%20current%20document%0A%20%2A%20%40param%20%7BElement%7CObject%7D%20%5Bdoc%5D%20An%20element%20or%20document%20object%20to%20use%20to%20set%20the%20document%0A%20%2A%20%40returns%20%7BObject%7D%20Returns%20the%20current%20document%0A%20%2A/%0AsetDocument%20%3D%20Sizzle.setDocument%20%3D%20function%28%20node%20%29%20%7B%0A%09var%20hasCompare%2C%20subWindow%2C%0A%09%09doc%20%3D%20node%20%3F%20node.ownerDocument%20%7C%7C%20node%20%3A%20preferredDoc%3B%0A%0A%09//%20Return%20early%20if%20doc%20is%20invalid%20or%20already%20selected%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20doc%20%3D%3D%20document%20%7C%7C%20doc.nodeType%20%21%3D%3D%209%20%7C%7C%20%21doc.documentElement%20%29%20%7B%0A%09%09return%20document%3B%0A%09%7D%0A%0A%09//%20Update%20global%20variables%0A%09document%20%3D%20doc%3B%0A%09docElem%20%3D%20document.documentElement%3B%0A%09documentIsHTML%20%3D%20%21isXML%28%20document%20%29%3B%0A%0A%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%0A%09//%20Accessing%20iframe%20documents%20after%20unload%20throws%20%22permission%20denied%22%20errors%20%28jQuery%20%2313936%29%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20preferredDoc%20%21%3D%20document%20%26%26%0A%09%09%28%20subWindow%20%3D%20document.defaultView%20%29%20%26%26%20subWindow.top%20%21%3D%3D%20subWindow%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%2011%2C%20Edge%0A%09%09if%20%28%20subWindow.addEventListener%20%29%20%7B%0A%09%09%09subWindow.addEventListener%28%20%22unload%22%2C%20unloadHandler%2C%20false%20%29%3B%0A%0A%09%09//%20Support%3A%20IE%209%20-%2010%20only%0A%09%09%7D%20else%20if%20%28%20subWindow.attachEvent%20%29%20%7B%0A%09%09%09subWindow.attachEvent%28%20%22onunload%22%2C%20unloadHandler%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Support%3A%20IE%208%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%2C%20Chrome%20%3C%3D16%20-%2025%20only%2C%20Firefox%20%3C%3D3.6%20-%2031%20only%2C%0A%09//%20Safari%204%20-%205%20only%2C%20Opera%20%3C%3D11.6%20-%2012.x%20only%0A%09//%20IE/Edge%20%26%20older%20browsers%20don%27t%20support%20the%20%3Ascope%20pseudo-class.%0A%09//%20Support%3A%20Safari%206.0%20only%0A%09//%20Safari%206.0%20supports%20%3Ascope%20but%20it%27s%20an%20alias%20of%20%3Aroot%20there.%0A%09support.scope%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09docElem.appendChild%28%20el%20%29.appendChild%28%20document.createElement%28%20%22div%22%20%29%20%29%3B%0A%09%09return%20typeof%20el.querySelectorAll%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%21el.querySelectorAll%28%20%22%3Ascope%20fieldset%20div%22%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09/%2A%20Attributes%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Support%3A%20IE%3C8%0A%09//%20Verify%20that%20getAttribute%20really%20returns%20attributes%20and%20not%20properties%0A%09//%20%28excepting%20IE8%20booleans%29%0A%09support.attributes%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09el.className%20%3D%20%22i%22%3B%0A%09%09return%20%21el.getAttribute%28%20%22className%22%20%29%3B%0A%09%7D%20%29%3B%0A%0A%09/%2A%20getElement%28s%29By%2A%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Check%20if%20getElementsByTagName%28%22%2A%22%29%20returns%20only%20elements%0A%09support.getElementsByTagName%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09el.appendChild%28%20document.createComment%28%20%22%22%20%29%20%29%3B%0A%09%09return%20%21el.getElementsByTagName%28%20%22%2A%22%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09//%20Support%3A%20IE%3C9%0A%09support.getElementsByClassName%20%3D%20rnative.test%28%20document.getElementsByClassName%20%29%3B%0A%0A%09//%20Support%3A%20IE%3C10%0A%09//%20Check%20if%20getElementById%20returns%20elements%20by%20name%0A%09//%20The%20broken%20getElementById%20methods%20don%27t%20pick%20up%20programmatically-set%20names%2C%0A%09//%20so%20use%20a%20roundabout%20getElementsByName%20test%0A%09support.getById%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09docElem.appendChild%28%20el%20%29.id%20%3D%20expando%3B%0A%09%09return%20%21document.getElementsByName%20%7C%7C%20%21document.getElementsByName%28%20expando%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09//%20ID%20filter%20and%20find%0A%09if%20%28%20support.getById%20%29%20%7B%0A%09%09Expr.filter%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%20%29%20%7B%0A%09%09%09var%20attrId%20%3D%20id.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20elem.getAttribute%28%20%22id%22%20%29%20%3D%3D%3D%20attrId%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%0A%09%09Expr.find%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementById%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09%09var%20elem%20%3D%20context.getElementById%28%20id%20%29%3B%0A%09%09%09%09return%20elem%20%3F%20%5B%20elem%20%5D%20%3A%20%5B%5D%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%20else%20%7B%0A%09%09Expr.filter%5B%20%22ID%22%20%5D%20%3D%20%20function%28%20id%20%29%20%7B%0A%09%09%09var%20attrId%20%3D%20id.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20node%20%3D%20typeof%20elem.getAttributeNode%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%09%09elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09return%20node%20%26%26%20node.value%20%3D%3D%3D%20attrId%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Support%3A%20IE%206%20-%207%20only%0A%09%09//%20getElementById%20is%20not%20reliable%20as%20a%20find%20shortcut%0A%09%09Expr.find%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementById%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09%09var%20node%2C%20i%2C%20elems%2C%0A%09%09%09%09%09elem%20%3D%20context.getElementById%28%20id%20%29%3B%0A%0A%09%09%09%09if%20%28%20elem%20%29%20%7B%0A%0A%09%09%09%09%09//%20Verify%20the%20id%20attribute%0A%09%09%09%09%09node%20%3D%20elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09%09if%20%28%20node%20%26%26%20node.value%20%3D%3D%3D%20id%20%29%20%7B%0A%09%09%09%09%09%09return%20%5B%20elem%20%5D%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Fall%20back%20on%20getElementsByName%0A%09%09%09%09%09elems%20%3D%20context.getElementsByName%28%20id%20%29%3B%0A%09%09%09%09%09i%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20elem%20%3D%20elems%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09node%20%3D%20elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09%09%09if%20%28%20node%20%26%26%20node.value%20%3D%3D%3D%20id%20%29%20%7B%0A%09%09%09%09%09%09%09return%20%5B%20elem%20%5D%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20%5B%5D%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%0A%09//%20Tag%0A%09Expr.find%5B%20%22TAG%22%20%5D%20%3D%20support.getElementsByTagName%20%3F%0A%09%09function%28%20tag%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09%09%09return%20context.getElementsByTagName%28%20tag%20%29%3B%0A%0A%09%09%09//%20DocumentFragment%20nodes%20don%27t%20have%20gEBTN%0A%09%09%09%7D%20else%20if%20%28%20support.qsa%20%29%20%7B%0A%09%09%09%09return%20context.querySelectorAll%28%20tag%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%3A%0A%0A%09%09function%28%20tag%2C%20context%20%29%20%7B%0A%09%09%09var%20elem%2C%0A%09%09%09%09tmp%20%3D%20%5B%5D%2C%0A%09%09%09%09i%20%3D%200%2C%0A%0A%09%09%09%09//%20By%20happy%20coincidence%2C%20a%20%28broken%29%20gEBTN%20appears%20on%20DocumentFragment%20nodes%20too%0A%09%09%09%09results%20%3D%20context.getElementsByTagName%28%20tag%20%29%3B%0A%0A%09%09%09//%20Filter%20out%20possible%20comments%0A%09%09%09if%20%28%20tag%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20results%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09%09%09tmp.push%28%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20tmp%3B%0A%09%09%09%7D%0A%09%09%09return%20results%3B%0A%09%09%7D%3B%0A%0A%09//%20Class%0A%09Expr.find%5B%20%22CLASS%22%20%5D%20%3D%20support.getElementsByClassName%20%26%26%20function%28%20className%2C%20context%20%29%20%7B%0A%09%09if%20%28%20typeof%20context.getElementsByClassName%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09return%20context.getElementsByClassName%28%20className%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09/%2A%20QSA/matchesSelector%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20QSA%20and%20matchesSelector%20support%0A%0A%09//%20matchesSelector%28%3Aactive%29%20reports%20false%20when%20true%20%28IE9/Opera%2011.5%29%0A%09rbuggyMatches%20%3D%20%5B%5D%3B%0A%0A%09//%20qSa%28%3Afocus%29%20reports%20false%20when%20true%20%28Chrome%2021%29%0A%09//%20We%20allow%20this%20because%20of%20a%20bug%20in%20IE8/9%20that%20throws%20an%20error%0A%09//%20whenever%20%60document.activeElement%60%20is%20accessed%20on%20an%20iframe%0A%09//%20So%2C%20we%20allow%20%3Afocus%20to%20pass%20through%20QSA%20all%20the%20time%20to%20avoid%20the%20IE%20error%0A%09//%20See%20https%3A//bugs.jquery.com/ticket/13378%0A%09rbuggyQSA%20%3D%20%5B%5D%3B%0A%0A%09if%20%28%20%28%20support.qsa%20%3D%20rnative.test%28%20document.querySelectorAll%20%29%20%29%20%29%20%7B%0A%0A%09%09//%20Build%20QSA%20regex%0A%09%09//%20Regex%20strategy%20adopted%20from%20Diego%20Perini%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%0A%09%09%09var%20input%3B%0A%0A%09%09%09//%20Select%20is%20set%20to%20empty%20string%20on%20purpose%0A%09%09%09//%20This%20is%20to%20test%20IE%27s%20treatment%20of%20not%20explicitly%0A%09%09%09//%20setting%20a%20boolean%20content%20attribute%2C%0A%09%09%09//%20since%20its%20presence%20should%20be%20enough%0A%09%09%09//%20https%3A//bugs.jquery.com/ticket/12359%0A%09%09%09docElem.appendChild%28%20el%20%29.innerHTML%20%3D%20%22%3Ca%20id%3D%27%22%20%2B%20expando%20%2B%20%22%27%3E%3C/a%3E%22%20%2B%0A%09%09%09%09%22%3Cselect%20id%3D%27%22%20%2B%20expando%20%2B%20%22-%5Cr%5C%5C%27%20msallowcapture%3D%27%27%3E%22%20%2B%0A%09%09%09%09%22%3Coption%20selected%3D%27%27%3E%3C/option%3E%3C/select%3E%22%3B%0A%0A%09%09%09//%20Support%3A%20IE8%2C%20Opera%2011-12.16%0A%09%09%09//%20Nothing%20should%20be%20selected%20when%20empty%20strings%20follow%20%5E%3D%20or%20%24%3D%20or%20%2A%3D%0A%09%09%09//%20The%20test%20attribute%20must%20be%20unknown%20in%20Opera%20but%20%22safe%22%20for%20WinRT%0A%09%09%09//%20https%3A//msdn.microsoft.com/en-us/library/ie/hh465388.aspx%23attribute_section%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%5Bmsallowcapture%5E%3D%27%27%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5B%2A%5E%24%5D%3D%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3A%27%27%7C%5C%22%5C%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE8%0A%09%09%09//%20Boolean%20attributes%20and%20%22value%22%20are%20not%20treated%20correctly%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bselected%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3Avalue%7C%22%20%2B%20booleans%20%2B%20%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Chrome%3C29%2C%20Android%3C4.4%2C%20Safari%3C7.0%2B%2C%20iOS%3C7.0%2B%2C%20PhantomJS%3C1.9.8%2B%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bid~%3D%22%20%2B%20expando%20%2B%20%22-%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22~%3D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09%09//%20IE%2011/Edge%20don%27t%20find%20elements%20on%20a%20%60%5Bname%3D%27%27%5D%60%20query%20in%20some%20cases.%0A%09%09%09//%20Adding%20a%20temporary%20attribute%20to%20the%20document%20before%20the%20selection%20works%0A%09%09%09//%20around%20the%20issue.%0A%09%09%09//%20Interestingly%2C%20IE%2010%20%26%20older%20don%27t%20seem%20to%20have%20the%20issue.%0A%09%09%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09%09%09input.setAttribute%28%20%22name%22%2C%20%22%22%20%29%3B%0A%09%09%09el.appendChild%28%20input%20%29%3B%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bname%3D%27%27%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2Aname%22%20%2B%20whitespace%20%2B%20%22%2A%3D%22%20%2B%0A%09%09%09%09%09whitespace%20%2B%20%22%2A%28%3F%3A%27%27%7C%5C%22%5C%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Webkit/Opera%20-%20%3Achecked%20should%20return%20selected%20option%20elements%0A%09%09%09//%20http%3A//www.w3.org/TR/2011/REC-css3-selectors-20110929/%23checked%0A%09%09%09//%20IE8%20throws%20error%20here%20and%20will%20not%20see%20later%20tests%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%3Achecked%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Achecked%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Safari%208%2B%2C%20iOS%208%2B%0A%09%09%09//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D136851%0A%09%09%09//%20In-page%20%60selector%23id%20sibling-combinator%20selector%60%20fails%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22a%23%22%20%2B%20expando%20%2B%20%22%2B%2A%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22.%23.%2B%5B%2B~%5D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D3.6%20-%205%20only%0A%09%09%09//%20Old%20Firefox%20doesn%27t%20throw%20on%20a%20badly-escaped%20identifier.%0A%09%09%09el.querySelectorAll%28%20%22%5C%5C%5Cf%22%20%29%3B%0A%09%09%09rbuggyQSA.push%28%20%22%5B%5C%5Cr%5C%5Cn%5C%5Cf%5D%22%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%09%09%09el.innerHTML%20%3D%20%22%3Ca%20href%3D%27%27%20disabled%3D%27disabled%27%3E%3C/a%3E%22%20%2B%0A%09%09%09%09%22%3Cselect%20disabled%3D%27disabled%27%3E%3Coption/%3E%3C/select%3E%22%3B%0A%0A%09%09%09//%20Support%3A%20Windows%208%20Native%20Apps%0A%09%09%09//%20The%20type%20and%20name%20attributes%20are%20restricted%20during%20.innerHTML%20assignment%0A%09%09%09var%20input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09%09%09input.setAttribute%28%20%22type%22%2C%20%22hidden%22%20%29%3B%0A%09%09%09el.appendChild%28%20input%20%29.setAttribute%28%20%22name%22%2C%20%22D%22%20%29%3B%0A%0A%09%09%09//%20Support%3A%20IE8%0A%09%09%09//%20Enforce%20case-sensitivity%20of%20name%20attribute%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%5Bname%3Dd%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22name%22%20%2B%20whitespace%20%2B%20%22%2A%5B%2A%5E%24%7C%21~%5D%3F%3D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20FF%203.5%20-%20%3Aenabled/%3Adisabled%20and%20hidden%20elements%20%28hidden%20elements%20are%20still%20enabled%29%0A%09%09%09//%20IE8%20throws%20error%20here%20and%20will%20not%20see%20later%20tests%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%3Aenabled%22%20%29.length%20%21%3D%3D%202%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Aenabled%22%2C%20%22%3Adisabled%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE9-11%2B%0A%09%09%09//%20IE%27s%20%3Adisabled%20selector%20does%20not%20pick%20up%20the%20children%20of%20disabled%20fieldsets%0A%09%09%09docElem.appendChild%28%20el%20%29.disabled%20%3D%20true%3B%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%3Adisabled%22%20%29.length%20%21%3D%3D%202%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Aenabled%22%2C%20%22%3Adisabled%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Opera%2010%20-%2011%20only%0A%09%09%09//%20Opera%2010-11%20does%20not%20throw%20on%20post-comma%20invalid%20pseudos%0A%09%09%09el.querySelectorAll%28%20%22%2A%2C%3Ax%22%20%29%3B%0A%09%09%09rbuggyQSA.push%28%20%22%2C.%2A%3A%22%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09if%20%28%20%28%20support.matchesSelector%20%3D%20rnative.test%28%20%28%20matches%20%3D%20docElem.matches%20%7C%7C%0A%09%09docElem.webkitMatchesSelector%20%7C%7C%0A%09%09docElem.mozMatchesSelector%20%7C%7C%0A%09%09docElem.oMatchesSelector%20%7C%7C%0A%09%09docElem.msMatchesSelector%20%29%20%29%20%29%20%29%20%7B%0A%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%0A%09%09%09//%20Check%20to%20see%20if%20it%27s%20possible%20to%20do%20matchesSelector%0A%09%09%09//%20on%20a%20disconnected%20node%20%28IE%209%29%0A%09%09%09support.disconnectedMatch%20%3D%20matches.call%28%20el%2C%20%22%2A%22%20%29%3B%0A%0A%09%09%09//%20This%20should%20fail%20with%20an%20exception%0A%09%09%09//%20Gecko%20does%20not%20error%2C%20returns%20false%20instead%0A%09%09%09matches.call%28%20el%2C%20%22%5Bs%21%3D%27%27%5D%3Ax%22%20%29%3B%0A%09%09%09rbuggyMatches.push%28%20%22%21%3D%22%2C%20pseudos%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09rbuggyQSA%20%3D%20rbuggyQSA.length%20%26%26%20new%20RegExp%28%20rbuggyQSA.join%28%20%22%7C%22%20%29%20%29%3B%0A%09rbuggyMatches%20%3D%20rbuggyMatches.length%20%26%26%20new%20RegExp%28%20rbuggyMatches.join%28%20%22%7C%22%20%29%20%29%3B%0A%0A%09/%2A%20Contains%0A%09----------------------------------------------------------------------%20%2A/%0A%09hasCompare%20%3D%20rnative.test%28%20docElem.compareDocumentPosition%20%29%3B%0A%0A%09//%20Element%20contains%20another%0A%09//%20Purposefully%20self-exclusive%0A%09//%20As%20in%2C%20an%20element%20does%20not%20contain%20itself%0A%09contains%20%3D%20hasCompare%20%7C%7C%20rnative.test%28%20docElem.contains%20%29%20%3F%0A%09%09function%28%20a%2C%20b%20%29%20%7B%0A%09%09%09var%20adown%20%3D%20a.nodeType%20%3D%3D%3D%209%20%3F%20a.documentElement%20%3A%20a%2C%0A%09%09%09%09bup%20%3D%20b%20%26%26%20b.parentNode%3B%0A%09%09%09return%20a%20%3D%3D%3D%20bup%20%7C%7C%20%21%21%28%20bup%20%26%26%20bup.nodeType%20%3D%3D%3D%201%20%26%26%20%28%0A%09%09%09%09adown.contains%20%3F%0A%09%09%09%09%09adown.contains%28%20bup%20%29%20%3A%0A%09%09%09%09%09a.compareDocumentPosition%20%26%26%20a.compareDocumentPosition%28%20bup%20%29%20%26%2016%0A%09%09%09%29%20%29%3B%0A%09%09%7D%20%3A%0A%09%09function%28%20a%2C%20b%20%29%20%7B%0A%09%09%09if%20%28%20b%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20b%20%3D%20b.parentNode%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20b%20%3D%3D%3D%20a%20%29%20%7B%0A%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%3B%0A%0A%09/%2A%20Sorting%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Document%20order%20sorting%0A%09sortOrder%20%3D%20hasCompare%20%3F%0A%09function%28%20a%2C%20b%20%29%20%7B%0A%0A%09%09//%20Flag%20for%20duplicate%20removal%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09//%20Sort%20on%20method%20existence%20if%20only%20one%20input%20has%20compareDocumentPosition%0A%09%09var%20compare%20%3D%20%21a.compareDocumentPosition%20-%20%21b.compareDocumentPosition%3B%0A%09%09if%20%28%20compare%20%29%20%7B%0A%09%09%09return%20compare%3B%0A%09%09%7D%0A%0A%09%09//%20Calculate%20position%20if%20both%20inputs%20belong%20to%20the%20same%20document%0A%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09compare%20%3D%20%28%20a.ownerDocument%20%7C%7C%20a%20%29%20%3D%3D%20%28%20b.ownerDocument%20%7C%7C%20b%20%29%20%3F%0A%09%09%09a.compareDocumentPosition%28%20b%20%29%20%3A%0A%0A%09%09%09//%20Otherwise%20we%20know%20they%20are%20disconnected%0A%09%09%091%3B%0A%0A%09%09//%20Disconnected%20nodes%0A%09%09if%20%28%20compare%20%26%201%20%7C%7C%0A%09%09%09%28%20%21support.sortDetached%20%26%26%20b.compareDocumentPosition%28%20a%20%29%20%3D%3D%3D%20compare%20%29%20%29%20%7B%0A%0A%09%09%09//%20Choose%20the%20first%20element%20that%20is%20related%20to%20our%20preferred%20document%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09if%20%28%20a%20%3D%3D%20document%20%7C%7C%20a.ownerDocument%20%3D%3D%20preferredDoc%20%26%26%0A%09%09%09%09contains%28%20preferredDoc%2C%20a%20%29%20%29%20%7B%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09if%20%28%20b%20%3D%3D%20document%20%7C%7C%20b.ownerDocument%20%3D%3D%20preferredDoc%20%26%26%0A%09%09%09%09contains%28%20preferredDoc%2C%20b%20%29%20%29%20%7B%0A%09%09%09%09return%201%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Maintain%20original%20order%0A%09%09%09return%20sortInput%20%3F%0A%09%09%09%09%28%20indexOf%28%20sortInput%2C%20a%20%29%20-%20indexOf%28%20sortInput%2C%20b%20%29%20%29%20%3A%0A%09%09%09%090%3B%0A%09%09%7D%0A%0A%09%09return%20compare%20%26%204%20%3F%20-1%20%3A%201%3B%0A%09%7D%20%3A%0A%09function%28%20a%2C%20b%20%29%20%7B%0A%0A%09%09//%20Exit%20early%20if%20the%20nodes%20are%20identical%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09var%20cur%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09aup%20%3D%20a.parentNode%2C%0A%09%09%09bup%20%3D%20b.parentNode%2C%0A%09%09%09ap%20%3D%20%5B%20a%20%5D%2C%0A%09%09%09bp%20%3D%20%5B%20b%20%5D%3B%0A%0A%09%09//%20Parentless%20nodes%20are%20either%20documents%20or%20disconnected%0A%09%09if%20%28%20%21aup%20%7C%7C%20%21bup%20%29%20%7B%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09/%2A%20eslint-disable%20eqeqeq%20%2A/%0A%09%09%09return%20a%20%3D%3D%20document%20%3F%20-1%20%3A%0A%09%09%09%09b%20%3D%3D%20document%20%3F%201%20%3A%0A%09%09%09%09/%2A%20eslint-enable%20eqeqeq%20%2A/%0A%09%09%09%09aup%20%3F%20-1%20%3A%0A%09%09%09%09bup%20%3F%201%20%3A%0A%09%09%09%09sortInput%20%3F%0A%09%09%09%09%28%20indexOf%28%20sortInput%2C%20a%20%29%20-%20indexOf%28%20sortInput%2C%20b%20%29%20%29%20%3A%0A%09%09%09%090%3B%0A%0A%09%09//%20If%20the%20nodes%20are%20siblings%2C%20we%20can%20do%20a%20quick%20check%0A%09%09%7D%20else%20if%20%28%20aup%20%3D%3D%3D%20bup%20%29%20%7B%0A%09%09%09return%20siblingCheck%28%20a%2C%20b%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Otherwise%20we%20need%20full%20lists%20of%20their%20ancestors%20for%20comparison%0A%09%09cur%20%3D%20a%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.parentNode%20%29%20%29%20%7B%0A%09%09%09ap.unshift%28%20cur%20%29%3B%0A%09%09%7D%0A%09%09cur%20%3D%20b%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.parentNode%20%29%20%29%20%7B%0A%09%09%09bp.unshift%28%20cur%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Walk%20down%20the%20tree%20looking%20for%20a%20discrepancy%0A%09%09while%20%28%20ap%5B%20i%20%5D%20%3D%3D%3D%20bp%5B%20i%20%5D%20%29%20%7B%0A%09%09%09i%2B%2B%3B%0A%09%09%7D%0A%0A%09%09return%20i%20%3F%0A%0A%09%09%09//%20Do%20a%20sibling%20check%20if%20the%20nodes%20have%20a%20common%20ancestor%0A%09%09%09siblingCheck%28%20ap%5B%20i%20%5D%2C%20bp%5B%20i%20%5D%20%29%20%3A%0A%0A%09%09%09//%20Otherwise%20nodes%20in%20our%20document%20sort%20first%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09/%2A%20eslint-disable%20eqeqeq%20%2A/%0A%09%09%09ap%5B%20i%20%5D%20%3D%3D%20preferredDoc%20%3F%20-1%20%3A%0A%09%09%09bp%5B%20i%20%5D%20%3D%3D%20preferredDoc%20%3F%201%20%3A%0A%09%09%09/%2A%20eslint-enable%20eqeqeq%20%2A/%0A%09%09%090%3B%0A%09%7D%3B%0A%0A%09return%20document%3B%0A%7D%3B%0A%0ASizzle.matches%20%3D%20function%28%20expr%2C%20elements%20%29%20%7B%0A%09return%20Sizzle%28%20expr%2C%20null%2C%20null%2C%20elements%20%29%3B%0A%7D%3B%0A%0ASizzle.matchesSelector%20%3D%20function%28%20elem%2C%20expr%20%29%20%7B%0A%09setDocument%28%20elem%20%29%3B%0A%0A%09if%20%28%20support.matchesSelector%20%26%26%20documentIsHTML%20%26%26%0A%09%09%21nonnativeSelectorCache%5B%20expr%20%2B%20%22%20%22%20%5D%20%26%26%0A%09%09%28%20%21rbuggyMatches%20%7C%7C%20%21rbuggyMatches.test%28%20expr%20%29%20%29%20%26%26%0A%09%09%28%20%21rbuggyQSA%20%20%20%20%20%7C%7C%20%21rbuggyQSA.test%28%20expr%20%29%20%29%20%29%20%7B%0A%0A%09%09try%20%7B%0A%09%09%09var%20ret%20%3D%20matches.call%28%20elem%2C%20expr%20%29%3B%0A%0A%09%09%09//%20IE%209%27s%20matchesSelector%20returns%20false%20on%20disconnected%20nodes%0A%09%09%09if%20%28%20ret%20%7C%7C%20support.disconnectedMatch%20%7C%7C%0A%0A%09%09%09%09//%20As%20well%2C%20disconnected%20nodes%20are%20said%20to%20be%20in%20a%20document%0A%09%09%09%09//%20fragment%20in%20IE%209%0A%09%09%09%09elem.document%20%26%26%20elem.document.nodeType%20%21%3D%3D%2011%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09%09nonnativeSelectorCache%28%20expr%2C%20true%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20Sizzle%28%20expr%2C%20document%2C%20null%2C%20%5B%20elem%20%5D%20%29.length%20%3E%200%3B%0A%7D%3B%0A%0ASizzle.contains%20%3D%20function%28%20context%2C%20elem%20%29%20%7B%0A%0A%09//%20Set%20document%20vars%20if%20needed%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20%28%20context.ownerDocument%20%7C%7C%20context%20%29%20%21%3D%20document%20%29%20%7B%0A%09%09setDocument%28%20context%20%29%3B%0A%09%7D%0A%09return%20contains%28%20context%2C%20elem%20%29%3B%0A%7D%3B%0A%0ASizzle.attr%20%3D%20function%28%20elem%2C%20name%20%29%20%7B%0A%0A%09//%20Set%20document%20vars%20if%20needed%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20%28%20elem.ownerDocument%20%7C%7C%20elem%20%29%20%21%3D%20document%20%29%20%7B%0A%09%09setDocument%28%20elem%20%29%3B%0A%09%7D%0A%0A%09var%20fn%20%3D%20Expr.attrHandle%5B%20name.toLowerCase%28%29%20%5D%2C%0A%0A%09%09//%20Don%27t%20get%20fooled%20by%20Object.prototype%20properties%20%28jQuery%20%2313807%29%0A%09%09val%20%3D%20fn%20%26%26%20hasOwn.call%28%20Expr.attrHandle%2C%20name.toLowerCase%28%29%20%29%20%3F%0A%09%09%09fn%28%20elem%2C%20name%2C%20%21documentIsHTML%20%29%20%3A%0A%09%09%09undefined%3B%0A%0A%09return%20val%20%21%3D%3D%20undefined%20%3F%0A%09%09val%20%3A%0A%09%09support.attributes%20%7C%7C%20%21documentIsHTML%20%3F%0A%09%09%09elem.getAttribute%28%20name%20%29%20%3A%0A%09%09%09%28%20val%20%3D%20elem.getAttributeNode%28%20name%20%29%20%29%20%26%26%20val.specified%20%3F%0A%09%09%09%09val.value%20%3A%0A%09%09%09%09null%3B%0A%7D%3B%0A%0ASizzle.escape%20%3D%20function%28%20sel%20%29%20%7B%0A%09return%20%28%20sel%20%2B%20%22%22%20%29.replace%28%20rcssescape%2C%20fcssescape%20%29%3B%0A%7D%3B%0A%0ASizzle.error%20%3D%20function%28%20msg%20%29%20%7B%0A%09throw%20new%20Error%28%20%22Syntax%20error%2C%20unrecognized%20expression%3A%20%22%20%2B%20msg%20%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Document%20sorting%20and%20removing%20duplicates%0A%20%2A%20%40param%20%7BArrayLike%7D%20results%0A%20%2A/%0ASizzle.uniqueSort%20%3D%20function%28%20results%20%29%20%7B%0A%09var%20elem%2C%0A%09%09duplicates%20%3D%20%5B%5D%2C%0A%09%09j%20%3D%200%2C%0A%09%09i%20%3D%200%3B%0A%0A%09//%20Unless%20we%20%2Aknow%2A%20we%20can%20detect%20duplicates%2C%20assume%20their%20presence%0A%09hasDuplicate%20%3D%20%21support.detectDuplicates%3B%0A%09sortInput%20%3D%20%21support.sortStable%20%26%26%20results.slice%28%200%20%29%3B%0A%09results.sort%28%20sortOrder%20%29%3B%0A%0A%09if%20%28%20hasDuplicate%20%29%20%7B%0A%09%09while%20%28%20%28%20elem%20%3D%20results%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20elem%20%3D%3D%3D%20results%5B%20i%20%5D%20%29%20%7B%0A%09%09%09%09j%20%3D%20duplicates.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09results.splice%28%20duplicates%5B%20j%20%5D%2C%201%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Clear%20input%20after%20sorting%20to%20release%20objects%0A%09//%20See%20https%3A//github.com/jquery/sizzle/pull/225%0A%09sortInput%20%3D%20null%3B%0A%0A%09return%20results%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Utility%20function%20for%20retrieving%20the%20text%20value%20of%20an%20array%20of%20DOM%20nodes%0A%20%2A%20%40param%20%7BArray%7CElement%7D%20elem%0A%20%2A/%0AgetText%20%3D%20Sizzle.getText%20%3D%20function%28%20elem%20%29%20%7B%0A%09var%20node%2C%0A%09%09ret%20%3D%20%22%22%2C%0A%09%09i%20%3D%200%2C%0A%09%09nodeType%20%3D%20elem.nodeType%3B%0A%0A%09if%20%28%20%21nodeType%20%29%20%7B%0A%0A%09%09//%20If%20no%20nodeType%2C%20this%20is%20expected%20to%20be%20an%20array%0A%09%09while%20%28%20%28%20node%20%3D%20elem%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09//%20Do%20not%20traverse%20comment%20nodes%0A%09%09%09ret%20%2B%3D%20getText%28%20node%20%29%3B%0A%09%09%7D%0A%09%7D%20else%20if%20%28%20nodeType%20%3D%3D%3D%201%20%7C%7C%20nodeType%20%3D%3D%3D%209%20%7C%7C%20nodeType%20%3D%3D%3D%2011%20%29%20%7B%0A%0A%09%09//%20Use%20textContent%20for%20elements%0A%09%09//%20innerText%20usage%20removed%20for%20consistency%20of%20new%20lines%20%28jQuery%20%2311153%29%0A%09%09if%20%28%20typeof%20elem.textContent%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20elem.textContent%3B%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Traverse%20its%20children%0A%09%09%09for%20%28%20elem%20%3D%20elem.firstChild%3B%20elem%3B%20elem%20%3D%20elem.nextSibling%20%29%20%7B%0A%09%09%09%09ret%20%2B%3D%20getText%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20else%20if%20%28%20nodeType%20%3D%3D%3D%203%20%7C%7C%20nodeType%20%3D%3D%3D%204%20%29%20%7B%0A%09%09return%20elem.nodeValue%3B%0A%09%7D%0A%0A%09//%20Do%20not%20include%20comment%20or%20processing%20instruction%20nodes%0A%0A%09return%20ret%3B%0A%7D%3B%0A%0AExpr%20%3D%20Sizzle.selectors%20%3D%20%7B%0A%0A%09//%20Can%20be%20adjusted%20by%20the%20user%0A%09cacheLength%3A%2050%2C%0A%0A%09createPseudo%3A%20markFunction%2C%0A%0A%09match%3A%20matchExpr%2C%0A%0A%09attrHandle%3A%20%7B%7D%2C%0A%0A%09find%3A%20%7B%7D%2C%0A%0A%09relative%3A%20%7B%0A%09%09%22%3E%22%3A%20%7B%20dir%3A%20%22parentNode%22%2C%20first%3A%20true%20%7D%2C%0A%09%09%22%20%22%3A%20%7B%20dir%3A%20%22parentNode%22%20%7D%2C%0A%09%09%22%2B%22%3A%20%7B%20dir%3A%20%22previousSibling%22%2C%20first%3A%20true%20%7D%2C%0A%09%09%22~%22%3A%20%7B%20dir%3A%20%22previousSibling%22%20%7D%0A%09%7D%2C%0A%0A%09preFilter%3A%20%7B%0A%09%09%22ATTR%22%3A%20function%28%20match%20%29%20%7B%0A%09%09%09match%5B%201%20%5D%20%3D%20match%5B%201%20%5D.replace%28%20runescape%2C%20funescape%20%29%3B%0A%0A%09%09%09//%20Move%20the%20given%20value%20to%20match%5B3%5D%20whether%20quoted%20or%20unquoted%0A%09%09%09match%5B%203%20%5D%20%3D%20%28%20match%5B%203%20%5D%20%7C%7C%20match%5B%204%20%5D%20%7C%7C%0A%09%09%09%09match%5B%205%20%5D%20%7C%7C%20%22%22%20%29.replace%28%20runescape%2C%20funescape%20%29%3B%0A%0A%09%09%09if%20%28%20match%5B%202%20%5D%20%3D%3D%3D%20%22~%3D%22%20%29%20%7B%0A%09%09%09%09match%5B%203%20%5D%20%3D%20%22%20%22%20%2B%20match%5B%203%20%5D%20%2B%20%22%20%22%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20match.slice%28%200%2C%204%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22CHILD%22%3A%20function%28%20match%20%29%20%7B%0A%0A%09%09%09/%2A%20matches%20from%20matchExpr%5B%22CHILD%22%5D%0A%09%09%09%091%20type%20%28only%7Cnth%7C...%29%0A%09%09%09%092%20what%20%28child%7Cof-type%29%0A%09%09%09%093%20argument%20%28even%7Codd%7C%5Cd%2A%7C%5Cd%2An%28%5B%2B-%5D%5Cd%2B%29%3F%7C...%29%0A%09%09%09%094%20xn-component%20of%20xn%2By%20argument%20%28%5B%2B-%5D%3F%5Cd%2An%7C%29%0A%09%09%09%095%20sign%20of%20xn-component%0A%09%09%09%096%20x%20of%20xn-component%0A%09%09%09%097%20sign%20of%20y-component%0A%09%09%09%098%20y%20of%20y-component%0A%09%09%09%2A/%0A%09%09%09match%5B%201%20%5D%20%3D%20match%5B%201%20%5D.toLowerCase%28%29%3B%0A%0A%09%09%09if%20%28%20match%5B%201%20%5D.slice%28%200%2C%203%20%29%20%3D%3D%3D%20%22nth%22%20%29%20%7B%0A%0A%09%09%09%09//%20nth-%2A%20requires%20argument%0A%09%09%09%09if%20%28%20%21match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09%09Sizzle.error%28%20match%5B%200%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20numeric%20x%20and%20y%20parameters%20for%20Expr.filter.CHILD%0A%09%09%09%09//%20remember%20that%20false/true%20cast%20respectively%20to%200/1%0A%09%09%09%09match%5B%204%20%5D%20%3D%20%2B%28%20match%5B%204%20%5D%20%3F%0A%09%09%09%09%09match%5B%205%20%5D%20%2B%20%28%20match%5B%206%20%5D%20%7C%7C%201%20%29%20%3A%0A%09%09%09%09%092%20%2A%20%28%20match%5B%203%20%5D%20%3D%3D%3D%20%22even%22%20%7C%7C%20match%5B%203%20%5D%20%3D%3D%3D%20%22odd%22%20%29%20%29%3B%0A%09%09%09%09match%5B%205%20%5D%20%3D%20%2B%28%20%28%20match%5B%207%20%5D%20%2B%20match%5B%208%20%5D%20%29%20%7C%7C%20match%5B%203%20%5D%20%3D%3D%3D%20%22odd%22%20%29%3B%0A%0A%09%09%09%09//%20other%20types%20prohibit%20arguments%0A%09%09%09%7D%20else%20if%20%28%20match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09Sizzle.error%28%20match%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20match%3B%0A%09%09%7D%2C%0A%0A%09%09%22PSEUDO%22%3A%20function%28%20match%20%29%20%7B%0A%09%09%09var%20excess%2C%0A%09%09%09%09unquoted%20%3D%20%21match%5B%206%20%5D%20%26%26%20match%5B%202%20%5D%3B%0A%0A%09%09%09if%20%28%20matchExpr%5B%20%22CHILD%22%20%5D.test%28%20match%5B%200%20%5D%20%29%20%29%20%7B%0A%09%09%09%09return%20null%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Accept%20quoted%20arguments%20as-is%0A%09%09%09if%20%28%20match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09match%5B%202%20%5D%20%3D%20match%5B%204%20%5D%20%7C%7C%20match%5B%205%20%5D%20%7C%7C%20%22%22%3B%0A%0A%09%09%09//%20Strip%20excess%20characters%20from%20unquoted%20arguments%0A%09%09%09%7D%20else%20if%20%28%20unquoted%20%26%26%20rpseudo.test%28%20unquoted%20%29%20%26%26%0A%0A%09%09%09%09//%20Get%20excess%20from%20tokenize%20%28recursively%29%0A%09%09%09%09%28%20excess%20%3D%20tokenize%28%20unquoted%2C%20true%20%29%20%29%20%26%26%0A%0A%09%09%09%09//%20advance%20to%20the%20next%20closing%20parenthesis%0A%09%09%09%09%28%20excess%20%3D%20unquoted.indexOf%28%20%22%29%22%2C%20unquoted.length%20-%20excess%20%29%20-%20unquoted.length%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20excess%20is%20a%20negative%20index%0A%09%09%09%09match%5B%200%20%5D%20%3D%20match%5B%200%20%5D.slice%28%200%2C%20excess%20%29%3B%0A%09%09%09%09match%5B%202%20%5D%20%3D%20unquoted.slice%28%200%2C%20excess%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Return%20only%20captures%20needed%20by%20the%20pseudo%20filter%20method%20%28type%20and%20argument%29%0A%09%09%09return%20match.slice%28%200%2C%203%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09filter%3A%20%7B%0A%0A%09%09%22TAG%22%3A%20function%28%20nodeNameSelector%20%29%20%7B%0A%09%09%09var%20nodeName%20%3D%20nodeNameSelector.replace%28%20runescape%2C%20funescape%20%29.toLowerCase%28%29%3B%0A%09%09%09return%20nodeNameSelector%20%3D%3D%3D%20%22%2A%22%20%3F%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%20%3A%0A%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09return%20elem.nodeName%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20nodeName%3B%0A%09%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22CLASS%22%3A%20function%28%20className%20%29%20%7B%0A%09%09%09var%20pattern%20%3D%20classCache%5B%20className%20%2B%20%22%20%22%20%5D%3B%0A%0A%09%09%09return%20pattern%20%7C%7C%0A%09%09%09%09%28%20pattern%20%3D%20new%20RegExp%28%20%22%28%5E%7C%22%20%2B%20whitespace%20%2B%0A%09%09%09%09%09%22%29%22%20%2B%20className%20%2B%20%22%28%22%20%2B%20whitespace%20%2B%20%22%7C%24%29%22%20%29%20%29%20%26%26%20classCache%28%0A%09%09%09%09%09%09className%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09return%20pattern.test%28%0A%09%09%09%09%09%09%09%09typeof%20elem.className%20%3D%3D%3D%20%22string%22%20%26%26%20elem.className%20%7C%7C%0A%09%09%09%09%09%09%09%09typeof%20elem.getAttribute%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%09%09%09%09%09%09elem.getAttribute%28%20%22class%22%20%29%20%7C%7C%0A%09%09%09%09%09%09%09%09%22%22%0A%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22ATTR%22%3A%20function%28%20name%2C%20operator%2C%20check%20%29%20%7B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20result%20%3D%20Sizzle.attr%28%20elem%2C%20name%20%29%3B%0A%0A%09%09%09%09if%20%28%20result%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09return%20operator%20%3D%3D%3D%20%22%21%3D%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28%20%21operator%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09result%20%2B%3D%20%22%22%3B%0A%0A%09%09%09%09/%2A%20eslint-disable%20max-len%20%2A/%0A%0A%09%09%09%09return%20operator%20%3D%3D%3D%20%22%3D%22%20%3F%20result%20%3D%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%21%3D%22%20%3F%20result%20%21%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%5E%3D%22%20%3F%20check%20%26%26%20result.indexOf%28%20check%20%29%20%3D%3D%3D%200%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%2A%3D%22%20%3F%20check%20%26%26%20result.indexOf%28%20check%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%24%3D%22%20%3F%20check%20%26%26%20result.slice%28%20-check.length%20%29%20%3D%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22~%3D%22%20%3F%20%28%20%22%20%22%20%2B%20result.replace%28%20rwhitespace%2C%20%22%20%22%20%29%20%2B%20%22%20%22%20%29.indexOf%28%20check%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%7C%3D%22%20%3F%20result%20%3D%3D%3D%20check%20%7C%7C%20result.slice%28%200%2C%20check.length%20%2B%201%20%29%20%3D%3D%3D%20check%20%2B%20%22-%22%20%3A%0A%09%09%09%09%09false%3B%0A%09%09%09%09/%2A%20eslint-enable%20max-len%20%2A/%0A%0A%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22CHILD%22%3A%20function%28%20type%2C%20what%2C%20_argument%2C%20first%2C%20last%20%29%20%7B%0A%09%09%09var%20simple%20%3D%20type.slice%28%200%2C%203%20%29%20%21%3D%3D%20%22nth%22%2C%0A%09%09%09%09forward%20%3D%20type.slice%28%20-4%20%29%20%21%3D%3D%20%22last%22%2C%0A%09%09%09%09ofType%20%3D%20what%20%3D%3D%3D%20%22of-type%22%3B%0A%0A%09%09%09return%20first%20%3D%3D%3D%201%20%26%26%20last%20%3D%3D%3D%200%20%3F%0A%0A%09%09%09%09//%20Shortcut%20for%20%3Anth-%2A%28n%29%0A%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09return%20%21%21elem.parentNode%3B%0A%09%09%09%09%7D%20%3A%0A%0A%09%09%09%09function%28%20elem%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09var%20cache%2C%20uniqueCache%2C%20outerCache%2C%20node%2C%20nodeIndex%2C%20start%2C%0A%09%09%09%09%09%09dir%20%3D%20simple%20%21%3D%3D%20forward%20%3F%20%22nextSibling%22%20%3A%20%22previousSibling%22%2C%0A%09%09%09%09%09%09parent%20%3D%20elem.parentNode%2C%0A%09%09%09%09%09%09name%20%3D%20ofType%20%26%26%20elem.nodeName.toLowerCase%28%29%2C%0A%09%09%09%09%09%09useCache%20%3D%20%21xml%20%26%26%20%21ofType%2C%0A%09%09%09%09%09%09diff%20%3D%20false%3B%0A%0A%09%09%09%09%09if%20%28%20parent%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20%3A%28first%7Clast%7Conly%29-%28child%7Cof-type%29%0A%09%09%09%09%09%09if%20%28%20simple%20%29%20%7B%0A%09%09%09%09%09%09%09while%20%28%20dir%20%29%20%7B%0A%09%09%09%09%09%09%09%09node%20%3D%20elem%3B%0A%09%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20node%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09if%20%28%20ofType%20%3F%0A%09%09%09%09%09%09%09%09%09%09node.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name%20%3A%0A%09%09%09%09%09%09%09%09%09%09node.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09return%20false%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09//%20Reverse%20direction%20for%20%3Aonly-%2A%20%28if%20we%20haven%27t%20yet%20done%20so%29%0A%09%09%09%09%09%09%09%09start%20%3D%20dir%20%3D%20type%20%3D%3D%3D%20%22only%22%20%26%26%20%21start%20%26%26%20%22nextSibling%22%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09start%20%3D%20%5B%20forward%20%3F%20parent.firstChild%20%3A%20parent.lastChild%20%5D%3B%0A%0A%09%09%09%09%09%09//%20non-xml%20%3Anth-child%28...%29%20stores%20cache%20data%20on%20%60parent%60%0A%09%09%09%09%09%09if%20%28%20forward%20%26%26%20useCache%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Seek%20%60elem%60%20from%20a%20previously-cached%20index%0A%0A%09%09%09%09%09%09%09//%20...in%20a%20gzip-friendly%20way%0A%09%09%09%09%09%09%09node%20%3D%20parent%3B%0A%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%20%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09cache%20%3D%20uniqueCache%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09%09%09nodeIndex%20%3D%20cache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20cache%5B%201%20%5D%3B%0A%09%09%09%09%09%09%09diff%20%3D%20nodeIndex%20%26%26%20cache%5B%202%20%5D%3B%0A%09%09%09%09%09%09%09node%20%3D%20nodeIndex%20%26%26%20parent.childNodes%5B%20nodeIndex%20%5D%3B%0A%0A%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20%2B%2BnodeIndex%20%26%26%20node%20%26%26%20node%5B%20dir%20%5D%20%7C%7C%0A%0A%09%09%09%09%09%09%09%09//%20Fallback%20to%20seeking%20%60elem%60%20from%20the%20start%0A%09%09%09%09%09%09%09%09%28%20diff%20%3D%20nodeIndex%20%3D%200%20%29%20%7C%7C%20start.pop%28%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20When%20found%2C%20cache%20indexes%20on%20%60parent%60%20and%20break%0A%09%09%09%09%09%09%09%09if%20%28%20node.nodeType%20%3D%3D%3D%201%20%26%26%20%2B%2Bdiff%20%26%26%20node%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09uniqueCache%5B%20type%20%5D%20%3D%20%5B%20dirruns%2C%20nodeIndex%2C%20diff%20%5D%3B%0A%09%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Use%20previously-cached%20element%20index%20if%20available%0A%09%09%09%09%09%09%09if%20%28%20useCache%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20...in%20a%20gzip-friendly%20way%0A%09%09%09%09%09%09%09%09node%20%3D%20elem%3B%0A%09%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%20%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09cache%20%3D%20uniqueCache%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09%09%09%09nodeIndex%20%3D%20cache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20cache%5B%201%20%5D%3B%0A%09%09%09%09%09%09%09%09diff%20%3D%20nodeIndex%3B%0A%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09//%20xml%20%3Anth-child%28...%29%0A%09%09%09%09%09%09%09//%20or%20%3Anth-last-child%28...%29%20or%20%3Anth%28-last%29%3F-of-type%28...%29%0A%09%09%09%09%09%09%09if%20%28%20diff%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Use%20the%20same%20loop%20as%20above%20to%20seek%20%60elem%60%20from%20the%20start%0A%09%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20%2B%2BnodeIndex%20%26%26%20node%20%26%26%20node%5B%20dir%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%28%20diff%20%3D%20nodeIndex%20%3D%200%20%29%20%7C%7C%20start.pop%28%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09if%20%28%20%28%20ofType%20%3F%0A%09%09%09%09%09%09%09%09%09%09node.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name%20%3A%0A%09%09%09%09%09%09%09%09%09%09node.nodeType%20%3D%3D%3D%201%20%29%20%26%26%0A%09%09%09%09%09%09%09%09%09%09%2B%2Bdiff%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Cache%20the%20index%20of%20each%20encountered%20element%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20useCache%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09%09%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09uniqueCache%5B%20type%20%5D%20%3D%20%5B%20dirruns%2C%20diff%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20node%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09//%20Incorporate%20the%20offset%2C%20then%20check%20against%20cycle%20size%0A%09%09%09%09%09%09diff%20-%3D%20last%3B%0A%09%09%09%09%09%09return%20diff%20%3D%3D%3D%20first%20%7C%7C%20%28%20diff%20%25%20first%20%3D%3D%3D%200%20%26%26%20diff%20/%20first%20%3E%3D%200%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22PSEUDO%22%3A%20function%28%20pseudo%2C%20argument%20%29%20%7B%0A%0A%09%09%09//%20pseudo-class%20names%20are%20case-insensitive%0A%09%09%09//%20http%3A//www.w3.org/TR/selectors/%23pseudo-classes%0A%09%09%09//%20Prioritize%20by%20case%20sensitivity%20in%20case%20custom%20pseudos%20are%20added%20with%20uppercase%20letters%0A%09%09%09//%20Remember%20that%20setFilters%20inherits%20from%20pseudos%0A%09%09%09var%20args%2C%0A%09%09%09%09fn%20%3D%20Expr.pseudos%5B%20pseudo%20%5D%20%7C%7C%20Expr.setFilters%5B%20pseudo.toLowerCase%28%29%20%5D%20%7C%7C%0A%09%09%09%09%09Sizzle.error%28%20%22unsupported%20pseudo%3A%20%22%20%2B%20pseudo%20%29%3B%0A%0A%09%09%09//%20The%20user%20may%20use%20createPseudo%20to%20indicate%20that%0A%09%09%09//%20arguments%20are%20needed%20to%20create%20the%20filter%20function%0A%09%09%09//%20just%20as%20Sizzle%20does%0A%09%09%09if%20%28%20fn%5B%20expando%20%5D%20%29%20%7B%0A%09%09%09%09return%20fn%28%20argument%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20But%20maintain%20support%20for%20old%20signatures%0A%09%09%09if%20%28%20fn.length%20%3E%201%20%29%20%7B%0A%09%09%09%09args%20%3D%20%5B%20pseudo%2C%20pseudo%2C%20%22%22%2C%20argument%20%5D%3B%0A%09%09%09%09return%20Expr.setFilters.hasOwnProperty%28%20pseudo.toLowerCase%28%29%20%29%20%3F%0A%09%09%09%09%09markFunction%28%20function%28%20seed%2C%20matches%20%29%20%7B%0A%09%09%09%09%09%09var%20idx%2C%0A%09%09%09%09%09%09%09matched%20%3D%20fn%28%20seed%2C%20argument%20%29%2C%0A%09%09%09%09%09%09%09i%20%3D%20matched.length%3B%0A%09%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09%09idx%20%3D%20indexOf%28%20seed%2C%20matched%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%09%09seed%5B%20idx%20%5D%20%3D%20%21%28%20matches%5B%20idx%20%5D%20%3D%20matched%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09%09return%20fn%28%20elem%2C%200%2C%20args%20%29%3B%0A%09%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20fn%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09pseudos%3A%20%7B%0A%0A%09%09//%20Potentially%20complex%20pseudos%0A%09%09%22not%22%3A%20markFunction%28%20function%28%20selector%20%29%20%7B%0A%0A%09%09%09//%20Trim%20the%20selector%20passed%20to%20compile%0A%09%09%09//%20to%20avoid%20treating%20leading%20and%20trailing%0A%09%09%09//%20spaces%20as%20combinators%0A%09%09%09var%20input%20%3D%20%5B%5D%2C%0A%09%09%09%09results%20%3D%20%5B%5D%2C%0A%09%09%09%09matcher%20%3D%20compile%28%20selector.replace%28%20rtrim%2C%20%22%241%22%20%29%20%29%3B%0A%0A%09%09%09return%20matcher%5B%20expando%20%5D%20%3F%0A%09%09%09%09markFunction%28%20function%28%20seed%2C%20matches%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09var%20elem%2C%0A%09%09%09%09%09%09unmatched%20%3D%20matcher%28%20seed%2C%20null%2C%20xml%2C%20%5B%5D%20%29%2C%0A%09%09%09%09%09%09i%20%3D%20seed.length%3B%0A%0A%09%09%09%09%09//%20Match%20elements%20unmatched%20by%20%60matcher%60%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20unmatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09seed%5B%20i%20%5D%20%3D%20%21%28%20matches%5B%20i%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09function%28%20elem%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09input%5B%200%20%5D%20%3D%20elem%3B%0A%09%09%09%09%09matcher%28%20input%2C%20null%2C%20xml%2C%20results%20%29%3B%0A%0A%09%09%09%09%09//%20Don%27t%20keep%20the%20element%20%28issue%20%23299%29%0A%09%09%09%09%09input%5B%200%20%5D%20%3D%20null%3B%0A%09%09%09%09%09return%20%21results.pop%28%29%3B%0A%09%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22has%22%3A%20markFunction%28%20function%28%20selector%20%29%20%7B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20Sizzle%28%20selector%2C%20elem%20%29.length%20%3E%200%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22contains%22%3A%20markFunction%28%20function%28%20text%20%29%20%7B%0A%09%09%09text%20%3D%20text.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20%28%20elem.textContent%20%7C%7C%20getText%28%20elem%20%29%20%29.indexOf%28%20text%20%29%20%3E%20-1%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09//%20%22Whether%20an%20element%20is%20represented%20by%20a%20%3Alang%28%29%20selector%0A%09%09//%20is%20based%20solely%20on%20the%20element%27s%20language%20value%0A%09%09//%20being%20equal%20to%20the%20identifier%20C%2C%0A%09%09//%20or%20beginning%20with%20the%20identifier%20C%20immediately%20followed%20by%20%22-%22.%0A%09%09//%20The%20matching%20of%20C%20against%20the%20element%27s%20language%20value%20is%20performed%20case-insensitively.%0A%09%09//%20The%20identifier%20C%20does%20not%20have%20to%20be%20a%20valid%20language%20name.%22%0A%09%09//%20http%3A//www.w3.org/TR/selectors/%23lang-pseudo%0A%09%09%22lang%22%3A%20markFunction%28%20function%28%20lang%20%29%20%7B%0A%0A%09%09%09//%20lang%20value%20must%20be%20a%20valid%20identifier%0A%09%09%09if%20%28%20%21ridentifier.test%28%20lang%20%7C%7C%20%22%22%20%29%20%29%20%7B%0A%09%09%09%09Sizzle.error%28%20%22unsupported%20lang%3A%20%22%20%2B%20lang%20%29%3B%0A%09%09%09%7D%0A%09%09%09lang%20%3D%20lang.replace%28%20runescape%2C%20funescape%20%29.toLowerCase%28%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20elemLang%3B%0A%09%09%09%09do%20%7B%0A%09%09%09%09%09if%20%28%20%28%20elemLang%20%3D%20documentIsHTML%20%3F%0A%09%09%09%09%09%09elem.lang%20%3A%0A%09%09%09%09%09%09elem.getAttribute%28%20%22xml%3Alang%22%20%29%20%7C%7C%20elem.getAttribute%28%20%22lang%22%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09elemLang%20%3D%20elemLang.toLowerCase%28%29%3B%0A%09%09%09%09%09%09return%20elemLang%20%3D%3D%3D%20lang%20%7C%7C%20elemLang.indexOf%28%20lang%20%2B%20%22-%22%20%29%20%3D%3D%3D%200%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20while%20%28%20%28%20elem%20%3D%20elem.parentNode%20%29%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%3B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09//%20Miscellaneous%0A%09%09%22target%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20hash%20%3D%20window.location%20%26%26%20window.location.hash%3B%0A%09%09%09return%20hash%20%26%26%20hash.slice%28%201%20%29%20%3D%3D%3D%20elem.id%3B%0A%09%09%7D%2C%0A%0A%09%09%22root%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20docElem%3B%0A%09%09%7D%2C%0A%0A%09%09%22focus%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20document.activeElement%20%26%26%0A%09%09%09%09%28%20%21document.hasFocus%20%7C%7C%20document.hasFocus%28%29%20%29%20%26%26%0A%09%09%09%09%21%21%28%20elem.type%20%7C%7C%20elem.href%20%7C%7C%20~elem.tabIndex%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Boolean%20properties%0A%09%09%22enabled%22%3A%20createDisabledPseudo%28%20false%20%29%2C%0A%09%09%22disabled%22%3A%20createDisabledPseudo%28%20true%20%29%2C%0A%0A%09%09%22checked%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20In%20CSS3%2C%20%3Achecked%20should%20return%20both%20checked%20and%20selected%20elements%0A%09%09%09//%20http%3A//www.w3.org/TR/2011/REC-css3-selectors-20110929/%23checked%0A%09%09%09var%20nodeName%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09%09return%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%26%26%20%21%21elem.checked%20%29%20%7C%7C%0A%09%09%09%09%28%20nodeName%20%3D%3D%3D%20%22option%22%20%26%26%20%21%21elem.selected%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22selected%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20Accessing%20this%20property%20makes%20selected-by-default%0A%09%09%09//%20options%20in%20Safari%20work%20properly%0A%09%09%09if%20%28%20elem.parentNode%20%29%20%7B%0A%09%09%09%09//%20eslint-disable-next-line%20no-unused-expressions%0A%09%09%09%09elem.parentNode.selectedIndex%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20elem.selected%20%3D%3D%3D%20true%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Contents%0A%09%09%22empty%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20http%3A//www.w3.org/TR/selectors/%23empty-pseudo%0A%09%09%09//%20%3Aempty%20is%20negated%20by%20element%20%281%29%20or%20content%20nodes%20%28text%3A%203%3B%20cdata%3A%204%3B%20entity%20ref%3A%205%29%2C%0A%09%09%09//%20%20%20but%20not%20by%20others%20%28comment%3A%208%3B%20processing%20instruction%3A%207%3B%20etc.%29%0A%09%09%09//%20nodeType%20%3C%206%20works%20because%20attributes%20%282%29%20do%20not%20appear%20as%20children%0A%09%09%09for%20%28%20elem%20%3D%20elem.firstChild%3B%20elem%3B%20elem%20%3D%20elem.nextSibling%20%29%20%7B%0A%09%09%09%09if%20%28%20elem.nodeType%20%3C%206%20%29%20%7B%0A%09%09%09%09%09return%20false%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20true%3B%0A%09%09%7D%2C%0A%0A%09%09%22parent%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%21Expr.pseudos%5B%20%22empty%22%20%5D%28%20elem%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Element/input%20types%0A%09%09%22header%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20rheader.test%28%20elem.nodeName%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22input%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20rinputs.test%28%20elem.nodeName%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22button%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09%09return%20name%20%3D%3D%3D%20%22input%22%20%26%26%20elem.type%20%3D%3D%3D%20%22button%22%20%7C%7C%20name%20%3D%3D%3D%20%22button%22%3B%0A%09%09%7D%2C%0A%0A%09%09%22text%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20attr%3B%0A%09%09%09return%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22input%22%20%26%26%0A%09%09%09%09elem.type%20%3D%3D%3D%20%22text%22%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20IE%3C8%0A%09%09%09%09//%20New%20HTML5%20attribute%20values%20%28e.g.%2C%20%22search%22%29%20appear%20with%20elem.type%20%3D%3D%3D%20%22text%22%0A%09%09%09%09%28%20%28%20attr%20%3D%20elem.getAttribute%28%20%22type%22%20%29%20%29%20%3D%3D%20null%20%7C%7C%0A%09%09%09%09%09attr.toLowerCase%28%29%20%3D%3D%3D%20%22text%22%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Position-in-collection%0A%09%09%22first%22%3A%20createPositionalPseudo%28%20function%28%29%20%7B%0A%09%09%09return%20%5B%200%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22last%22%3A%20createPositionalPseudo%28%20function%28%20_matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09return%20%5B%20length%20-%201%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22eq%22%3A%20createPositionalPseudo%28%20function%28%20_matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09return%20%5B%20argument%20%3C%200%20%3F%20argument%20%2B%20length%20%3A%20argument%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22even%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%20%2B%3D%202%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22odd%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09var%20i%20%3D%201%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%20%2B%3D%202%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22lt%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09var%20i%20%3D%20argument%20%3C%200%20%3F%0A%09%09%09%09argument%20%2B%20length%20%3A%0A%09%09%09%09argument%20%3E%20length%20%3F%0A%09%09%09%09%09length%20%3A%0A%09%09%09%09%09argument%3B%0A%09%09%09for%20%28%20%3B%20--i%20%3E%3D%200%3B%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22gt%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09var%20i%20%3D%20argument%20%3C%200%20%3F%20argument%20%2B%20length%20%3A%20argument%3B%0A%09%09%09for%20%28%20%3B%20%2B%2Bi%20%3C%20length%3B%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%0A%09%7D%0A%7D%3B%0A%0AExpr.pseudos%5B%20%22nth%22%20%5D%20%3D%20Expr.pseudos%5B%20%22eq%22%20%5D%3B%0A%0A//%20Add%20button/input%20type%20pseudos%0Afor%20%28%20i%20in%20%7B%20radio%3A%20true%2C%20checkbox%3A%20true%2C%20file%3A%20true%2C%20password%3A%20true%2C%20image%3A%20true%20%7D%20%29%20%7B%0A%09Expr.pseudos%5B%20i%20%5D%20%3D%20createInputPseudo%28%20i%20%29%3B%0A%7D%0Afor%20%28%20i%20in%20%7B%20submit%3A%20true%2C%20reset%3A%20true%20%7D%20%29%20%7B%0A%09Expr.pseudos%5B%20i%20%5D%20%3D%20createButtonPseudo%28%20i%20%29%3B%0A%7D%0A%0A//%20Easy%20API%20for%20creating%20new%20setFilters%0Afunction%20setFilters%28%29%20%7B%7D%0AsetFilters.prototype%20%3D%20Expr.filters%20%3D%20Expr.pseudos%3B%0AExpr.setFilters%20%3D%20new%20setFilters%28%29%3B%0A%0Atokenize%20%3D%20Sizzle.tokenize%20%3D%20function%28%20selector%2C%20parseOnly%20%29%20%7B%0A%09var%20matched%2C%20match%2C%20tokens%2C%20type%2C%0A%09%09soFar%2C%20groups%2C%20preFilters%2C%0A%09%09cached%20%3D%20tokenCache%5B%20selector%20%2B%20%22%20%22%20%5D%3B%0A%0A%09if%20%28%20cached%20%29%20%7B%0A%09%09return%20parseOnly%20%3F%200%20%3A%20cached.slice%28%200%20%29%3B%0A%09%7D%0A%0A%09soFar%20%3D%20selector%3B%0A%09groups%20%3D%20%5B%5D%3B%0A%09preFilters%20%3D%20Expr.preFilter%3B%0A%0A%09while%20%28%20soFar%20%29%20%7B%0A%0A%09%09//%20Comma%20and%20first%20run%0A%09%09if%20%28%20%21matched%20%7C%7C%20%28%20match%20%3D%20rcomma.exec%28%20soFar%20%29%20%29%20%29%20%7B%0A%09%09%09if%20%28%20match%20%29%20%7B%0A%0A%09%09%09%09//%20Don%27t%20consume%20trailing%20commas%20as%20valid%0A%09%09%09%09soFar%20%3D%20soFar.slice%28%20match%5B%200%20%5D.length%20%29%20%7C%7C%20soFar%3B%0A%09%09%09%7D%0A%09%09%09groups.push%28%20%28%20tokens%20%3D%20%5B%5D%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09matched%20%3D%20false%3B%0A%0A%09%09//%20Combinators%0A%09%09if%20%28%20%28%20match%20%3D%20rcombinators.exec%28%20soFar%20%29%20%29%20%29%20%7B%0A%09%09%09matched%20%3D%20match.shift%28%29%3B%0A%09%09%09tokens.push%28%20%7B%0A%09%09%09%09value%3A%20matched%2C%0A%0A%09%09%09%09//%20Cast%20descendant%20combinators%20to%20space%0A%09%09%09%09type%3A%20match%5B%200%20%5D.replace%28%20rtrim%2C%20%22%20%22%20%29%0A%09%09%09%7D%20%29%3B%0A%09%09%09soFar%20%3D%20soFar.slice%28%20matched.length%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Filters%0A%09%09for%20%28%20type%20in%20Expr.filter%20%29%20%7B%0A%09%09%09if%20%28%20%28%20match%20%3D%20matchExpr%5B%20type%20%5D.exec%28%20soFar%20%29%20%29%20%26%26%20%28%20%21preFilters%5B%20type%20%5D%20%7C%7C%0A%09%09%09%09%28%20match%20%3D%20preFilters%5B%20type%20%5D%28%20match%20%29%20%29%20%29%20%29%20%7B%0A%09%09%09%09matched%20%3D%20match.shift%28%29%3B%0A%09%09%09%09tokens.push%28%20%7B%0A%09%09%09%09%09value%3A%20matched%2C%0A%09%09%09%09%09type%3A%20type%2C%0A%09%09%09%09%09matches%3A%20match%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%09soFar%20%3D%20soFar.slice%28%20matched.length%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20%21matched%20%29%20%7B%0A%09%09%09break%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20length%20of%20the%20invalid%20excess%0A%09//%20if%20we%27re%20just%20parsing%0A%09//%20Otherwise%2C%20throw%20an%20error%20or%20return%20tokens%0A%09return%20parseOnly%20%3F%0A%09%09soFar.length%20%3A%0A%09%09soFar%20%3F%0A%09%09%09Sizzle.error%28%20selector%20%29%20%3A%0A%0A%09%09%09//%20Cache%20the%20tokens%0A%09%09%09tokenCache%28%20selector%2C%20groups%20%29.slice%28%200%20%29%3B%0A%7D%3B%0A%0Afunction%20toSelector%28%20tokens%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20tokens.length%2C%0A%09%09selector%20%3D%20%22%22%3B%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09selector%20%2B%3D%20tokens%5B%20i%20%5D.value%3B%0A%09%7D%0A%09return%20selector%3B%0A%7D%0A%0Afunction%20addCombinator%28%20matcher%2C%20combinator%2C%20base%20%29%20%7B%0A%09var%20dir%20%3D%20combinator.dir%2C%0A%09%09skip%20%3D%20combinator.next%2C%0A%09%09key%20%3D%20skip%20%7C%7C%20dir%2C%0A%09%09checkNonElements%20%3D%20base%20%26%26%20key%20%3D%3D%3D%20%22parentNode%22%2C%0A%09%09doneName%20%3D%20done%2B%2B%3B%0A%0A%09return%20combinator.first%20%3F%0A%0A%09%09//%20Check%20against%20closest%20ancestor/preceding%20element%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09return%20matcher%28%20elem%2C%20context%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%20%3A%0A%0A%09%09//%20Check%20against%20all%20ancestor/preceding%20elements%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20oldCache%2C%20uniqueCache%2C%20outerCache%2C%0A%09%09%09%09newCache%20%3D%20%5B%20dirruns%2C%20doneName%20%5D%3B%0A%0A%09%09%09//%20We%20can%27t%20set%20arbitrary%20data%20on%20XML%20nodes%2C%20so%20they%20don%27t%20benefit%20from%20combinator%20caching%0A%09%09%09if%20%28%20xml%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20matcher%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09%09outerCache%20%3D%20elem%5B%20expando%20%5D%20%7C%7C%20%28%20elem%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20elem.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%28%20outerCache%5B%20elem.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09if%20%28%20skip%20%26%26%20skip%20%3D%3D%3D%20elem.nodeName.toLowerCase%28%29%20%29%20%7B%0A%09%09%09%09%09%09%09elem%20%3D%20elem%5B%20dir%20%5D%20%7C%7C%20elem%3B%0A%09%09%09%09%09%09%7D%20else%20if%20%28%20%28%20oldCache%20%3D%20uniqueCache%5B%20key%20%5D%20%29%20%26%26%0A%09%09%09%09%09%09%09oldCache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20oldCache%5B%201%20%5D%20%3D%3D%3D%20doneName%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Assign%20to%20newCache%20so%20results%20back-propagate%20to%20previous%20elements%0A%09%09%09%09%09%09%09return%20%28%20newCache%5B%202%20%5D%20%3D%20oldCache%5B%202%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Reuse%20newcache%20so%20results%20back-propagate%20to%20previous%20elements%0A%09%09%09%09%09%09%09uniqueCache%5B%20key%20%5D%20%3D%20newCache%3B%0A%0A%09%09%09%09%09%09%09//%20A%20match%20means%20we%27re%20done%3B%20a%20fail%20means%20we%20have%20to%20keep%20checking%0A%09%09%09%09%09%09%09if%20%28%20%28%20newCache%5B%202%20%5D%20%3D%20matcher%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%3B%0A%7D%0A%0Afunction%20elementMatcher%28%20matchers%20%29%20%7B%0A%09return%20matchers.length%20%3E%201%20%3F%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20i%20%3D%20matchers.length%3B%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20%21matchers%5B%20i%20%5D%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09return%20false%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20true%3B%0A%09%09%7D%20%3A%0A%09%09matchers%5B%200%20%5D%3B%0A%7D%0A%0Afunction%20multipleContexts%28%20selector%2C%20contexts%2C%20results%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20contexts.length%3B%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09Sizzle%28%20selector%2C%20contexts%5B%20i%20%5D%2C%20results%20%29%3B%0A%09%7D%0A%09return%20results%3B%0A%7D%0A%0Afunction%20condense%28%20unmatched%2C%20map%2C%20filter%2C%20context%2C%20xml%20%29%20%7B%0A%09var%20elem%2C%0A%09%09newUnmatched%20%3D%20%5B%5D%2C%0A%09%09i%20%3D%200%2C%0A%09%09len%20%3D%20unmatched.length%2C%0A%09%09mapped%20%3D%20map%20%21%3D%20null%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20elem%20%3D%20unmatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20%21filter%20%7C%7C%20filter%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09newUnmatched.push%28%20elem%20%29%3B%0A%09%09%09%09if%20%28%20mapped%20%29%20%7B%0A%09%09%09%09%09map.push%28%20i%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20newUnmatched%3B%0A%7D%0A%0Afunction%20setMatcher%28%20preFilter%2C%20selector%2C%20matcher%2C%20postFilter%2C%20postFinder%2C%20postSelector%20%29%20%7B%0A%09if%20%28%20postFilter%20%26%26%20%21postFilter%5B%20expando%20%5D%20%29%20%7B%0A%09%09postFilter%20%3D%20setMatcher%28%20postFilter%20%29%3B%0A%09%7D%0A%09if%20%28%20postFinder%20%26%26%20%21postFinder%5B%20expando%20%5D%20%29%20%7B%0A%09%09postFinder%20%3D%20setMatcher%28%20postFinder%2C%20postSelector%20%29%3B%0A%09%7D%0A%09return%20markFunction%28%20function%28%20seed%2C%20results%2C%20context%2C%20xml%20%29%20%7B%0A%09%09var%20temp%2C%20i%2C%20elem%2C%0A%09%09%09preMap%20%3D%20%5B%5D%2C%0A%09%09%09postMap%20%3D%20%5B%5D%2C%0A%09%09%09preexisting%20%3D%20results.length%2C%0A%0A%09%09%09//%20Get%20initial%20elements%20from%20seed%20or%20context%0A%09%09%09elems%20%3D%20seed%20%7C%7C%20multipleContexts%28%0A%09%09%09%09selector%20%7C%7C%20%22%2A%22%2C%0A%09%09%09%09context.nodeType%20%3F%20%5B%20context%20%5D%20%3A%20context%2C%0A%09%09%09%09%5B%5D%0A%09%09%09%29%2C%0A%0A%09%09%09//%20Prefilter%20to%20get%20matcher%20input%2C%20preserving%20a%20map%20for%20seed-results%20synchronization%0A%09%09%09matcherIn%20%3D%20preFilter%20%26%26%20%28%20seed%20%7C%7C%20%21selector%20%29%20%3F%0A%09%09%09%09condense%28%20elems%2C%20preMap%2C%20preFilter%2C%20context%2C%20xml%20%29%20%3A%0A%09%09%09%09elems%2C%0A%0A%09%09%09matcherOut%20%3D%20matcher%20%3F%0A%0A%09%09%09%09//%20If%20we%20have%20a%20postFinder%2C%20or%20filtered%20seed%2C%20or%20non-seed%20postFilter%20or%20preexisting%20results%2C%0A%09%09%09%09postFinder%20%7C%7C%20%28%20seed%20%3F%20preFilter%20%3A%20preexisting%20%7C%7C%20postFilter%20%29%20%3F%0A%0A%09%09%09%09%09//%20...intermediate%20processing%20is%20necessary%0A%09%09%09%09%09%5B%5D%20%3A%0A%0A%09%09%09%09%09//%20...otherwise%20use%20results%20directly%0A%09%09%09%09%09results%20%3A%0A%09%09%09%09matcherIn%3B%0A%0A%09%09//%20Find%20primary%20matches%0A%09%09if%20%28%20matcher%20%29%20%7B%0A%09%09%09matcher%28%20matcherIn%2C%20matcherOut%2C%20context%2C%20xml%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20postFilter%0A%09%09if%20%28%20postFilter%20%29%20%7B%0A%09%09%09temp%20%3D%20condense%28%20matcherOut%2C%20postMap%20%29%3B%0A%09%09%09postFilter%28%20temp%2C%20%5B%5D%2C%20context%2C%20xml%20%29%3B%0A%0A%09%09%09//%20Un-match%20failing%20elements%20by%20moving%20them%20back%20to%20matcherIn%0A%09%09%09i%20%3D%20temp.length%3B%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20%28%20elem%20%3D%20temp%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09matcherOut%5B%20postMap%5B%20i%20%5D%20%5D%20%3D%20%21%28%20matcherIn%5B%20postMap%5B%20i%20%5D%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20seed%20%29%20%7B%0A%09%09%09if%20%28%20postFinder%20%7C%7C%20preFilter%20%29%20%7B%0A%09%09%09%09if%20%28%20postFinder%20%29%20%7B%0A%0A%09%09%09%09%09//%20Get%20the%20final%20matcherOut%20by%20condensing%20this%20intermediate%20into%20postFinder%20contexts%0A%09%09%09%09%09temp%20%3D%20%5B%5D%3B%0A%09%09%09%09%09i%20%3D%20matcherOut.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20matcherOut%5B%20i%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Restore%20matcherIn%20since%20elem%20is%20not%20yet%20a%20final%20match%0A%09%09%09%09%09%09%09temp.push%28%20%28%20matcherIn%5B%20i%20%5D%20%3D%20elem%20%29%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09postFinder%28%20null%2C%20%28%20matcherOut%20%3D%20%5B%5D%20%29%2C%20temp%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Move%20matched%20elements%20from%20seed%20to%20results%20to%20keep%20them%20synchronized%0A%09%09%09%09i%20%3D%20matcherOut.length%3B%0A%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20matcherOut%5B%20i%20%5D%20%29%20%26%26%0A%09%09%09%09%09%09%28%20temp%20%3D%20postFinder%20%3F%20indexOf%28%20seed%2C%20elem%20%29%20%3A%20preMap%5B%20i%20%5D%20%29%20%3E%20-1%20%29%20%7B%0A%0A%09%09%09%09%09%09seed%5B%20temp%20%5D%20%3D%20%21%28%20results%5B%20temp%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Add%20elements%20to%20results%2C%20through%20postFinder%20if%20defined%0A%09%09%7D%20else%20%7B%0A%09%09%09matcherOut%20%3D%20condense%28%0A%09%09%09%09matcherOut%20%3D%3D%3D%20results%20%3F%0A%09%09%09%09%09matcherOut.splice%28%20preexisting%2C%20matcherOut.length%20%29%20%3A%0A%09%09%09%09%09matcherOut%0A%09%09%09%29%3B%0A%09%09%09if%20%28%20postFinder%20%29%20%7B%0A%09%09%09%09postFinder%28%20null%2C%20results%2C%20matcherOut%2C%20xml%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09push.apply%28%20results%2C%20matcherOut%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0Afunction%20matcherFromTokens%28%20tokens%20%29%20%7B%0A%09var%20checkContext%2C%20matcher%2C%20j%2C%0A%09%09len%20%3D%20tokens.length%2C%0A%09%09leadingRelative%20%3D%20Expr.relative%5B%20tokens%5B%200%20%5D.type%20%5D%2C%0A%09%09implicitRelative%20%3D%20leadingRelative%20%7C%7C%20Expr.relative%5B%20%22%20%22%20%5D%2C%0A%09%09i%20%3D%20leadingRelative%20%3F%201%20%3A%200%2C%0A%0A%09%09//%20The%20foundational%20matcher%20ensures%20that%20elements%20are%20reachable%20from%20top-level%20context%28s%29%0A%09%09matchContext%20%3D%20addCombinator%28%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20checkContext%3B%0A%09%09%7D%2C%20implicitRelative%2C%20true%20%29%2C%0A%09%09matchAnyContext%20%3D%20addCombinator%28%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20indexOf%28%20checkContext%2C%20elem%20%29%20%3E%20-1%3B%0A%09%09%7D%2C%20implicitRelative%2C%20true%20%29%2C%0A%09%09matchers%20%3D%20%5B%20function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20ret%20%3D%20%28%20%21leadingRelative%20%26%26%20%28%20xml%20%7C%7C%20context%20%21%3D%3D%20outermostContext%20%29%20%29%20%7C%7C%20%28%0A%09%09%09%09%28%20checkContext%20%3D%20context%20%29.nodeType%20%3F%0A%09%09%09%09%09matchContext%28%20elem%2C%20context%2C%20xml%20%29%20%3A%0A%09%09%09%09%09matchAnyContext%28%20elem%2C%20context%2C%20xml%20%29%20%29%3B%0A%0A%09%09%09//%20Avoid%20hanging%20onto%20element%20%28issue%20%23299%29%0A%09%09%09checkContext%20%3D%20null%3B%0A%09%09%09return%20ret%3B%0A%09%09%7D%20%5D%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20matcher%20%3D%20Expr.relative%5B%20tokens%5B%20i%20%5D.type%20%5D%20%29%20%29%20%7B%0A%09%09%09matchers%20%3D%20%5B%20addCombinator%28%20elementMatcher%28%20matchers%20%29%2C%20matcher%20%29%20%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09matcher%20%3D%20Expr.filter%5B%20tokens%5B%20i%20%5D.type%20%5D.apply%28%20null%2C%20tokens%5B%20i%20%5D.matches%20%29%3B%0A%0A%09%09%09//%20Return%20special%20upon%20seeing%20a%20positional%20matcher%0A%09%09%09if%20%28%20matcher%5B%20expando%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Find%20the%20next%20relative%20operator%20%28if%20any%29%20for%20proper%20handling%0A%09%09%09%09j%20%3D%20%2B%2Bi%3B%0A%09%09%09%09for%20%28%20%3B%20j%20%3C%20len%3B%20j%2B%2B%20%29%20%7B%0A%09%09%09%09%09if%20%28%20Expr.relative%5B%20tokens%5B%20j%20%5D.type%20%5D%20%29%20%7B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20setMatcher%28%0A%09%09%09%09%09i%20%3E%201%20%26%26%20elementMatcher%28%20matchers%20%29%2C%0A%09%09%09%09%09i%20%3E%201%20%26%26%20toSelector%28%0A%0A%09%09%09%09%09//%20If%20the%20preceding%20token%20was%20a%20descendant%20combinator%2C%20insert%20an%20implicit%20any-element%20%60%2A%60%0A%09%09%09%09%09tokens%0A%09%09%09%09%09%09.slice%28%200%2C%20i%20-%201%20%29%0A%09%09%09%09%09%09.concat%28%20%7B%20value%3A%20tokens%5B%20i%20-%202%20%5D.type%20%3D%3D%3D%20%22%20%22%20%3F%20%22%2A%22%20%3A%20%22%22%20%7D%20%29%0A%09%09%09%09%09%29.replace%28%20rtrim%2C%20%22%241%22%20%29%2C%0A%09%09%09%09%09matcher%2C%0A%09%09%09%09%09i%20%3C%20j%20%26%26%20matcherFromTokens%28%20tokens.slice%28%20i%2C%20j%20%29%20%29%2C%0A%09%09%09%09%09j%20%3C%20len%20%26%26%20matcherFromTokens%28%20%28%20tokens%20%3D%20tokens.slice%28%20j%20%29%20%29%20%29%2C%0A%09%09%09%09%09j%20%3C%20len%20%26%26%20toSelector%28%20tokens%20%29%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%09matchers.push%28%20matcher%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elementMatcher%28%20matchers%20%29%3B%0A%7D%0A%0Afunction%20matcherFromGroupMatchers%28%20elementMatchers%2C%20setMatchers%20%29%20%7B%0A%09var%20bySet%20%3D%20setMatchers.length%20%3E%200%2C%0A%09%09byElement%20%3D%20elementMatchers.length%20%3E%200%2C%0A%09%09superMatcher%20%3D%20function%28%20seed%2C%20context%2C%20xml%2C%20results%2C%20outermost%20%29%20%7B%0A%09%09%09var%20elem%2C%20j%2C%20matcher%2C%0A%09%09%09%09matchedCount%20%3D%200%2C%0A%09%09%09%09i%20%3D%20%220%22%2C%0A%09%09%09%09unmatched%20%3D%20seed%20%26%26%20%5B%5D%2C%0A%09%09%09%09setMatched%20%3D%20%5B%5D%2C%0A%09%09%09%09contextBackup%20%3D%20outermostContext%2C%0A%0A%09%09%09%09//%20We%20must%20always%20have%20either%20seed%20elements%20or%20outermost%20context%0A%09%09%09%09elems%20%3D%20seed%20%7C%7C%20byElement%20%26%26%20Expr.find%5B%20%22TAG%22%20%5D%28%20%22%2A%22%2C%20outermost%20%29%2C%0A%0A%09%09%09%09//%20Use%20integer%20dirruns%20iff%20this%20is%20the%20outermost%20matcher%0A%09%09%09%09dirrunsUnique%20%3D%20%28%20dirruns%20%2B%3D%20contextBackup%20%3D%3D%20null%20%3F%201%20%3A%20Math.random%28%29%20%7C%7C%200.1%20%29%2C%0A%09%09%09%09len%20%3D%20elems.length%3B%0A%0A%09%09%09if%20%28%20outermost%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09%09outermostContext%20%3D%20context%20%3D%3D%20document%20%7C%7C%20context%20%7C%7C%20outermost%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20elements%20passing%20elementMatchers%20directly%20to%20results%0A%09%09%09//%20Support%3A%20IE%3C9%2C%20Safari%0A%09%09%09//%20Tolerate%20NodeList%20properties%20%28IE%3A%20%22length%22%3B%20Safari%3A%20%3Cnumber%3E%29%20matching%20elements%20by%20id%0A%09%09%09for%20%28%20%3B%20i%20%21%3D%3D%20len%20%26%26%20%28%20elem%20%3D%20elems%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20byElement%20%26%26%20elem%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%0A%09%09%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09%09%09if%20%28%20%21context%20%26%26%20elem.ownerDocument%20%21%3D%20document%20%29%20%7B%0A%09%09%09%09%09%09setDocument%28%20elem%20%29%3B%0A%09%09%09%09%09%09xml%20%3D%20%21documentIsHTML%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09while%20%28%20%28%20matcher%20%3D%20elementMatchers%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20matcher%28%20elem%2C%20context%20%7C%7C%20document%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20outermost%20%29%20%7B%0A%09%09%09%09%09%09dirruns%20%3D%20dirrunsUnique%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Track%20unmatched%20elements%20for%20set%20filters%0A%09%09%09%09if%20%28%20bySet%20%29%20%7B%0A%0A%09%09%09%09%09//%20They%20will%20have%20gone%20through%20all%20possible%20matchers%0A%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20%21matcher%20%26%26%20elem%20%29%20%29%20%7B%0A%09%09%09%09%09%09matchedCount--%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Lengthen%20the%20array%20for%20every%20element%2C%20matched%20or%20not%0A%09%09%09%09%09if%20%28%20seed%20%29%20%7B%0A%09%09%09%09%09%09unmatched.push%28%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20%60i%60%20is%20now%20the%20count%20of%20elements%20visited%20above%2C%20and%20adding%20it%20to%20%60matchedCount%60%0A%09%09%09//%20makes%20the%20latter%20nonnegative.%0A%09%09%09matchedCount%20%2B%3D%20i%3B%0A%0A%09%09%09//%20Apply%20set%20filters%20to%20unmatched%20elements%0A%09%09%09//%20NOTE%3A%20This%20can%20be%20skipped%20if%20there%20are%20no%20unmatched%20elements%20%28i.e.%2C%20%60matchedCount%60%0A%09%09%09//%20equals%20%60i%60%29%2C%20unless%20we%20didn%27t%20visit%20_any_%20elements%20in%20the%20above%20loop%20because%20we%20have%0A%09%09%09//%20no%20element%20matchers%20and%20no%20seed.%0A%09%09%09//%20Incrementing%20an%20initially-string%20%220%22%20%60i%60%20allows%20%60i%60%20to%20remain%20a%20string%20only%20in%20that%0A%09%09%09//%20case%2C%20which%20will%20result%20in%20a%20%2200%22%20%60matchedCount%60%20that%20differs%20from%20%60i%60%20but%20is%20also%0A%09%09%09//%20numerically%20zero.%0A%09%09%09if%20%28%20bySet%20%26%26%20i%20%21%3D%3D%20matchedCount%20%29%20%7B%0A%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09while%20%28%20%28%20matcher%20%3D%20setMatchers%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09matcher%28%20unmatched%2C%20setMatched%2C%20context%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09if%20%28%20seed%20%29%20%7B%0A%0A%09%09%09%09%09//%20Reintegrate%20element%20matches%20to%20eliminate%20the%20need%20for%20sorting%0A%09%09%09%09%09if%20%28%20matchedCount%20%3E%200%20%29%20%7B%0A%09%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20%21%28%20unmatched%5B%20i%20%5D%20%7C%7C%20setMatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09setMatched%5B%20i%20%5D%20%3D%20pop.call%28%20results%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Discard%20index%20placeholder%20values%20to%20get%20only%20actual%20matches%0A%09%09%09%09%09setMatched%20%3D%20condense%28%20setMatched%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Add%20matches%20to%20results%0A%09%09%09%09push.apply%28%20results%2C%20setMatched%20%29%3B%0A%0A%09%09%09%09//%20Seedless%20set%20matches%20succeeding%20multiple%20successful%20matchers%20stipulate%20sorting%0A%09%09%09%09if%20%28%20outermost%20%26%26%20%21seed%20%26%26%20setMatched.length%20%3E%200%20%26%26%0A%09%09%09%09%09%28%20matchedCount%20%2B%20setMatchers.length%20%29%20%3E%201%20%29%20%7B%0A%0A%09%09%09%09%09Sizzle.uniqueSort%28%20results%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Override%20manipulation%20of%20globals%20by%20nested%20matchers%0A%09%09%09if%20%28%20outermost%20%29%20%7B%0A%09%09%09%09dirruns%20%3D%20dirrunsUnique%3B%0A%09%09%09%09outermostContext%20%3D%20contextBackup%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20unmatched%3B%0A%09%09%7D%3B%0A%0A%09return%20bySet%20%3F%0A%09%09markFunction%28%20superMatcher%20%29%20%3A%0A%09%09superMatcher%3B%0A%7D%0A%0Acompile%20%3D%20Sizzle.compile%20%3D%20function%28%20selector%2C%20match%20/%2A%20Internal%20Use%20Only%20%2A/%20%29%20%7B%0A%09var%20i%2C%0A%09%09setMatchers%20%3D%20%5B%5D%2C%0A%09%09elementMatchers%20%3D%20%5B%5D%2C%0A%09%09cached%20%3D%20compilerCache%5B%20selector%20%2B%20%22%20%22%20%5D%3B%0A%0A%09if%20%28%20%21cached%20%29%20%7B%0A%0A%09%09//%20Generate%20a%20function%20of%20recursive%20functions%20that%20can%20be%20used%20to%20check%20each%20element%0A%09%09if%20%28%20%21match%20%29%20%7B%0A%09%09%09match%20%3D%20tokenize%28%20selector%20%29%3B%0A%09%09%7D%0A%09%09i%20%3D%20match.length%3B%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09cached%20%3D%20matcherFromTokens%28%20match%5B%20i%20%5D%20%29%3B%0A%09%09%09if%20%28%20cached%5B%20expando%20%5D%20%29%20%7B%0A%09%09%09%09setMatchers.push%28%20cached%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09elementMatchers.push%28%20cached%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Cache%20the%20compiled%20function%0A%09%09cached%20%3D%20compilerCache%28%0A%09%09%09selector%2C%0A%09%09%09matcherFromGroupMatchers%28%20elementMatchers%2C%20setMatchers%20%29%0A%09%09%29%3B%0A%0A%09%09//%20Save%20selector%20and%20tokenization%0A%09%09cached.selector%20%3D%20selector%3B%0A%09%7D%0A%09return%20cached%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20A%20low-level%20selection%20function%20that%20works%20with%20Sizzle%27s%20compiled%0A%20%2A%20%20selector%20functions%0A%20%2A%20%40param%20%7BString%7CFunction%7D%20selector%20A%20selector%20or%20a%20pre-compiled%0A%20%2A%20%20selector%20function%20built%20with%20Sizzle.compile%0A%20%2A%20%40param%20%7BElement%7D%20context%0A%20%2A%20%40param%20%7BArray%7D%20%5Bresults%5D%0A%20%2A%20%40param%20%7BArray%7D%20%5Bseed%5D%20A%20set%20of%20elements%20to%20match%20against%0A%20%2A/%0Aselect%20%3D%20Sizzle.select%20%3D%20function%28%20selector%2C%20context%2C%20results%2C%20seed%20%29%20%7B%0A%09var%20i%2C%20tokens%2C%20token%2C%20type%2C%20find%2C%0A%09%09compiled%20%3D%20typeof%20selector%20%3D%3D%3D%20%22function%22%20%26%26%20selector%2C%0A%09%09match%20%3D%20%21seed%20%26%26%20tokenize%28%20%28%20selector%20%3D%20compiled.selector%20%7C%7C%20selector%20%29%20%29%3B%0A%0A%09results%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09//%20Try%20to%20minimize%20operations%20if%20there%20is%20only%20one%20selector%20in%20the%20list%20and%20no%20seed%0A%09//%20%28the%20latter%20of%20which%20guarantees%20us%20context%29%0A%09if%20%28%20match.length%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09//%20Reduce%20context%20if%20the%20leading%20compound%20selector%20is%20an%20ID%0A%09%09tokens%20%3D%20match%5B%200%20%5D%20%3D%20match%5B%200%20%5D.slice%28%200%20%29%3B%0A%09%09if%20%28%20tokens.length%20%3E%202%20%26%26%20%28%20token%20%3D%20tokens%5B%200%20%5D%20%29.type%20%3D%3D%3D%20%22ID%22%20%26%26%0A%09%09%09context.nodeType%20%3D%3D%3D%209%20%26%26%20documentIsHTML%20%26%26%20Expr.relative%5B%20tokens%5B%201%20%5D.type%20%5D%20%29%20%7B%0A%0A%09%09%09context%20%3D%20%28%20Expr.find%5B%20%22ID%22%20%5D%28%20token.matches%5B%200%20%5D%0A%09%09%09%09.replace%28%20runescape%2C%20funescape%20%29%2C%20context%20%29%20%7C%7C%20%5B%5D%20%29%5B%200%20%5D%3B%0A%09%09%09if%20%28%20%21context%20%29%20%7B%0A%09%09%09%09return%20results%3B%0A%0A%09%09%09//%20Precompiled%20matchers%20will%20still%20verify%20ancestry%2C%20so%20step%20up%20a%20level%0A%09%09%09%7D%20else%20if%20%28%20compiled%20%29%20%7B%0A%09%09%09%09context%20%3D%20context.parentNode%3B%0A%09%09%09%7D%0A%0A%09%09%09selector%20%3D%20selector.slice%28%20tokens.shift%28%29.value.length%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Fetch%20a%20seed%20set%20for%20right-to-left%20matching%0A%09%09i%20%3D%20matchExpr%5B%20%22needsContext%22%20%5D.test%28%20selector%20%29%20%3F%200%20%3A%20tokens.length%3B%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09token%20%3D%20tokens%5B%20i%20%5D%3B%0A%0A%09%09%09//%20Abort%20if%20we%20hit%20a%20combinator%0A%09%09%09if%20%28%20Expr.relative%5B%20%28%20type%20%3D%20token.type%20%29%20%5D%20%29%20%7B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20%28%20find%20%3D%20Expr.find%5B%20type%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Search%2C%20expanding%20context%20for%20leading%20sibling%20combinators%0A%09%09%09%09if%20%28%20%28%20seed%20%3D%20find%28%0A%09%09%09%09%09token.matches%5B%200%20%5D.replace%28%20runescape%2C%20funescape%20%29%2C%0A%09%09%09%09%09rsibling.test%28%20tokens%5B%200%20%5D.type%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%0A%09%09%09%09%09%09context%0A%09%09%09%09%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20If%20seed%20is%20empty%20or%20no%20tokens%20remain%2C%20we%20can%20return%20early%0A%09%09%09%09%09tokens.splice%28%20i%2C%201%20%29%3B%0A%09%09%09%09%09selector%20%3D%20seed.length%20%26%26%20toSelector%28%20tokens%20%29%3B%0A%09%09%09%09%09if%20%28%20%21selector%20%29%20%7B%0A%09%09%09%09%09%09push.apply%28%20results%2C%20seed%20%29%3B%0A%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Compile%20and%20execute%20a%20filtering%20function%20if%20one%20is%20not%20provided%0A%09//%20Provide%20%60match%60%20to%20avoid%20retokenization%20if%20we%20modified%20the%20selector%20above%0A%09%28%20compiled%20%7C%7C%20compile%28%20selector%2C%20match%20%29%20%29%28%0A%09%09seed%2C%0A%09%09context%2C%0A%09%09%21documentIsHTML%2C%0A%09%09results%2C%0A%09%09%21context%20%7C%7C%20rsibling.test%28%20selector%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%20context%0A%09%29%3B%0A%09return%20results%3B%0A%7D%3B%0A%0A//%20One-time%20assignments%0A%0A//%20Sort%20stability%0Asupport.sortStable%20%3D%20expando.split%28%20%22%22%20%29.sort%28%20sortOrder%20%29.join%28%20%22%22%20%29%20%3D%3D%3D%20expando%3B%0A%0A//%20Support%3A%20Chrome%2014-35%2B%0A//%20Always%20assume%20duplicates%20if%20they%20aren%27t%20passed%20to%20the%20comparison%20function%0Asupport.detectDuplicates%20%3D%20%21%21hasDuplicate%3B%0A%0A//%20Initialize%20against%20the%20default%20document%0AsetDocument%28%29%3B%0A%0A//%20Support%3A%20Webkit%3C537.32%20-%20Safari%206.0.3/Chrome%2025%20%28fixed%20in%20Chrome%2027%29%0A//%20Detached%20nodes%20confoundingly%20follow%20%2Aeach%20other%2A%0Asupport.sortDetached%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%0A%09//%20Should%20return%201%2C%20but%20returns%204%20%28following%29%0A%09return%20el.compareDocumentPosition%28%20document.createElement%28%20%22fieldset%22%20%29%20%29%20%26%201%3B%0A%7D%20%29%3B%0A%0A//%20Support%3A%20IE%3C8%0A//%20Prevent%20attribute/property%20%22interpolation%22%0A//%20https%3A//msdn.microsoft.com/en-us/library/ms536429%2528VS.85%2529.aspx%0Aif%20%28%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09el.innerHTML%20%3D%20%22%3Ca%20href%3D%27%23%27%3E%3C/a%3E%22%3B%0A%09return%20el.firstChild.getAttribute%28%20%22href%22%20%29%20%3D%3D%3D%20%22%23%22%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20%22type%7Chref%7Cheight%7Cwidth%22%2C%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%09%09%09return%20elem.getAttribute%28%20name%2C%20name.toLowerCase%28%29%20%3D%3D%3D%20%22type%22%20%3F%201%20%3A%202%20%29%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%3C9%0A//%20Use%20defaultValue%20in%20place%20of%20getAttribute%28%22value%22%29%0Aif%20%28%20%21support.attributes%20%7C%7C%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09el.innerHTML%20%3D%20%22%3Cinput/%3E%22%3B%0A%09el.firstChild.setAttribute%28%20%22value%22%2C%20%22%22%20%29%3B%0A%09return%20el.firstChild.getAttribute%28%20%22value%22%20%29%20%3D%3D%3D%20%22%22%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20%22value%22%2C%20function%28%20elem%2C%20_name%2C%20isXML%20%29%20%7B%0A%09%09if%20%28%20%21isXML%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22input%22%20%29%20%7B%0A%09%09%09return%20elem.defaultValue%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%3C9%0A//%20Use%20getAttributeNode%20to%20fetch%20booleans%20when%20getAttribute%20lies%0Aif%20%28%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09return%20el.getAttribute%28%20%22disabled%22%20%29%20%3D%3D%20null%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20booleans%2C%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09var%20val%3B%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%09%09%09return%20elem%5B%20name%20%5D%20%3D%3D%3D%20true%20%3F%20name.toLowerCase%28%29%20%3A%0A%09%09%09%09%28%20val%20%3D%20elem.getAttributeNode%28%20name%20%29%20%29%20%26%26%20val.specified%20%3F%0A%09%09%09%09%09val.value%20%3A%0A%09%09%09%09%09null%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0Areturn%20Sizzle%3B%0A%0A%7D%20%29%28%20window%20%29%3B%0A%0A%0A%0AjQuery.find%20%3D%20Sizzle%3B%0AjQuery.expr%20%3D%20Sizzle.selectors%3B%0A%0A//%20Deprecated%0AjQuery.expr%5B%20%22%3A%22%20%5D%20%3D%20jQuery.expr.pseudos%3B%0AjQuery.uniqueSort%20%3D%20jQuery.unique%20%3D%20Sizzle.uniqueSort%3B%0AjQuery.text%20%3D%20Sizzle.getText%3B%0AjQuery.isXMLDoc%20%3D%20Sizzle.isXML%3B%0AjQuery.contains%20%3D%20Sizzle.contains%3B%0AjQuery.escapeSelector%20%3D%20Sizzle.escape%3B%0A%0A%0A%0A%0Avar%20dir%20%3D%20function%28%20elem%2C%20dir%2C%20until%20%29%20%7B%0A%09var%20matched%20%3D%20%5B%5D%2C%0A%09%09truncate%20%3D%20until%20%21%3D%3D%20undefined%3B%0A%0A%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%26%26%20elem.nodeType%20%21%3D%3D%209%20%29%20%7B%0A%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09if%20%28%20truncate%20%26%26%20jQuery%28%20elem%20%29.is%28%20until%20%29%20%29%20%7B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09matched.push%28%20elem%20%29%3B%0A%09%09%7D%0A%09%7D%0A%09return%20matched%3B%0A%7D%3B%0A%0A%0Avar%20siblings%20%3D%20function%28%20n%2C%20elem%20%29%20%7B%0A%09var%20matched%20%3D%20%5B%5D%3B%0A%0A%09for%20%28%20%3B%20n%3B%20n%20%3D%20n.nextSibling%20%29%20%7B%0A%09%09if%20%28%20n.nodeType%20%3D%3D%3D%201%20%26%26%20n%20%21%3D%3D%20elem%20%29%20%7B%0A%09%09%09matched.push%28%20n%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20matched%3B%0A%7D%3B%0A%0A%0Avar%20rneedsContext%20%3D%20jQuery.expr.match.needsContext%3B%0A%0A%0A%0Afunction%20nodeName%28%20elem%2C%20name%20%29%20%7B%0A%0A%20%20return%20elem.nodeName%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name.toLowerCase%28%29%3B%0A%0A%7D%3B%0Avar%20rsingleTag%20%3D%20%28%20/%5E%3C%28%5Ba-z%5D%5B%5E%5C/%5C0%3E%3A%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%29%5B%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%5C/%3F%3E%28%3F%3A%3C%5C/%5C1%3E%7C%29%24/i%20%29%3B%0A%0A%0A%0A//%20Implement%20the%20identical%20functionality%20for%20filter%20and%20not%0Afunction%20winnow%28%20elements%2C%20qualifier%2C%20not%20%29%20%7B%0A%09if%20%28%20isFunction%28%20qualifier%20%29%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%2C%20i%20%29%20%7B%0A%09%09%09return%20%21%21qualifier.call%28%20elem%2C%20i%2C%20elem%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Single%20element%0A%09if%20%28%20qualifier.nodeType%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%28%20elem%20%3D%3D%3D%20qualifier%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Arraylike%20of%20elements%20%28jQuery%2C%20arguments%2C%20Array%29%0A%09if%20%28%20typeof%20qualifier%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%28%20indexOf.call%28%20qualifier%2C%20elem%20%29%20%3E%20-1%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Filtered%20directly%20for%20both%20simple%20and%20complex%20selectors%0A%09return%20jQuery.filter%28%20qualifier%2C%20elements%2C%20not%20%29%3B%0A%7D%0A%0AjQuery.filter%20%3D%20function%28%20expr%2C%20elems%2C%20not%20%29%20%7B%0A%09var%20elem%20%3D%20elems%5B%200%20%5D%3B%0A%0A%09if%20%28%20not%20%29%20%7B%0A%09%09expr%20%3D%20%22%3Anot%28%22%20%2B%20expr%20%2B%20%22%29%22%3B%0A%09%7D%0A%0A%09if%20%28%20elems.length%20%3D%3D%3D%201%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09return%20jQuery.find.matchesSelector%28%20elem%2C%20expr%20%29%20%3F%20%5B%20elem%20%5D%20%3A%20%5B%5D%3B%0A%09%7D%0A%0A%09return%20jQuery.find.matches%28%20expr%2C%20jQuery.grep%28%20elems%2C%20function%28%20elem%20%29%20%7B%0A%09%09return%20elem.nodeType%20%3D%3D%3D%201%3B%0A%09%7D%20%29%20%29%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09find%3A%20function%28%20selector%20%29%20%7B%0A%09%09var%20i%2C%20ret%2C%0A%09%09%09len%20%3D%20this.length%2C%0A%09%09%09self%20%3D%20this%3B%0A%0A%09%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20this.pushStack%28%20jQuery%28%20selector%20%29.filter%28%20function%28%29%20%7B%0A%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09if%20%28%20jQuery.contains%28%20self%5B%20i%20%5D%2C%20this%20%29%20%29%20%7B%0A%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09ret%20%3D%20this.pushStack%28%20%5B%5D%20%29%3B%0A%0A%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09jQuery.find%28%20selector%2C%20self%5B%20i%20%5D%2C%20ret%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20len%20%3E%201%20%3F%20jQuery.uniqueSort%28%20ret%20%29%20%3A%20ret%3B%0A%09%7D%2C%0A%09filter%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.pushStack%28%20winnow%28%20this%2C%20selector%20%7C%7C%20%5B%5D%2C%20false%20%29%20%29%3B%0A%09%7D%2C%0A%09not%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.pushStack%28%20winnow%28%20this%2C%20selector%20%7C%7C%20%5B%5D%2C%20true%20%29%20%29%3B%0A%09%7D%2C%0A%09is%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20%21%21winnow%28%0A%09%09%09this%2C%0A%0A%09%09%09//%20If%20this%20is%20a%20positional/relative%20selector%2C%20check%20membership%20in%20the%20returned%20set%0A%09%09%09//%20so%20%24%28%22p%3Afirst%22%29.is%28%22p%3Alast%22%29%20won%27t%20return%20true%20for%20a%20doc%20with%20two%20%22p%22.%0A%09%09%09typeof%20selector%20%3D%3D%3D%20%22string%22%20%26%26%20rneedsContext.test%28%20selector%20%29%20%3F%0A%09%09%09%09jQuery%28%20selector%20%29%20%3A%0A%09%09%09%09selector%20%7C%7C%20%5B%5D%2C%0A%09%09%09false%0A%09%09%29.length%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20Initialize%20a%20jQuery%20object%0A%0A%0A//%20A%20central%20reference%20to%20the%20root%20jQuery%28document%29%0Avar%20rootjQuery%2C%0A%0A%09//%20A%20simple%20way%20to%20check%20for%20HTML%20strings%0A%09//%20Prioritize%20%23id%20over%20%3Ctag%3E%20to%20avoid%20XSS%20via%20location.hash%20%28%239521%29%0A%09//%20Strict%20HTML%20recognition%20%28%2311290%3A%20must%20start%20with%20%3C%29%0A%09//%20Shortcut%20simple%20%23id%20case%20for%20speed%0A%09rquickExpr%20%3D%20/%5E%28%3F%3A%5Cs%2A%28%3C%5B%5Cw%5CW%5D%2B%3E%29%5B%5E%3E%5D%2A%7C%23%28%5B%5Cw-%5D%2B%29%29%24/%2C%0A%0A%09init%20%3D%20jQuery.fn.init%20%3D%20function%28%20selector%2C%20context%2C%20root%20%29%20%7B%0A%09%09var%20match%2C%20elem%3B%0A%0A%09%09//%20HANDLE%3A%20%24%28%22%22%29%2C%20%24%28null%29%2C%20%24%28undefined%29%2C%20%24%28false%29%0A%09%09if%20%28%20%21selector%20%29%20%7B%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%0A%09%09//%20Method%20init%28%29%20accepts%20an%20alternate%20rootjQuery%0A%09%09//%20so%20migrate%20can%20support%20jQuery.sub%20%28gh-2101%29%0A%09%09root%20%3D%20root%20%7C%7C%20rootjQuery%3B%0A%0A%09%09//%20Handle%20HTML%20strings%0A%09%09if%20%28%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09if%20%28%20selector%5B%200%20%5D%20%3D%3D%3D%20%22%3C%22%20%26%26%0A%09%09%09%09selector%5B%20selector.length%20-%201%20%5D%20%3D%3D%3D%20%22%3E%22%20%26%26%0A%09%09%09%09selector.length%20%3E%3D%203%20%29%20%7B%0A%0A%09%09%09%09//%20Assume%20that%20strings%20that%20start%20and%20end%20with%20%3C%3E%20are%20HTML%20and%20skip%20the%20regex%20check%0A%09%09%09%09match%20%3D%20%5B%20null%2C%20selector%2C%20null%20%5D%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09match%20%3D%20rquickExpr.exec%28%20selector%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Match%20html%20or%20make%20sure%20no%20context%20is%20specified%20for%20%23id%0A%09%09%09if%20%28%20match%20%26%26%20%28%20match%5B%201%20%5D%20%7C%7C%20%21context%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20HANDLE%3A%20%24%28html%29%20-%3E%20%24%28array%29%0A%09%09%09%09if%20%28%20match%5B%201%20%5D%20%29%20%7B%0A%09%09%09%09%09context%20%3D%20context%20instanceof%20jQuery%20%3F%20context%5B%200%20%5D%20%3A%20context%3B%0A%0A%09%09%09%09%09//%20Option%20to%20run%20scripts%20is%20true%20for%20back-compat%0A%09%09%09%09%09//%20Intentionally%20let%20the%20error%20be%20thrown%20if%20parseHTML%20is%20not%20present%0A%09%09%09%09%09jQuery.merge%28%20this%2C%20jQuery.parseHTML%28%0A%09%09%09%09%09%09match%5B%201%20%5D%2C%0A%09%09%09%09%09%09context%20%26%26%20context.nodeType%20%3F%20context.ownerDocument%20%7C%7C%20context%20%3A%20document%2C%0A%09%09%09%09%09%09true%0A%09%09%09%09%09%29%20%29%3B%0A%0A%09%09%09%09%09//%20HANDLE%3A%20%24%28html%2C%20props%29%0A%09%09%09%09%09if%20%28%20rsingleTag.test%28%20match%5B%201%20%5D%20%29%20%26%26%20jQuery.isPlainObject%28%20context%20%29%20%29%20%7B%0A%09%09%09%09%09%09for%20%28%20match%20in%20context%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Properties%20of%20context%20are%20called%20as%20methods%20if%20possible%0A%09%09%09%09%09%09%09if%20%28%20isFunction%28%20this%5B%20match%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09this%5B%20match%20%5D%28%20context%5B%20match%20%5D%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20...and%20otherwise%20set%20as%20attributes%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09this.attr%28%20match%2C%20context%5B%20match%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09return%20this%3B%0A%0A%09%09%09%09//%20HANDLE%3A%20%24%28%23id%29%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09elem%20%3D%20document.getElementById%28%20match%5B%202%20%5D%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20elem%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Inject%20the%20element%20directly%20into%20the%20jQuery%20object%0A%09%09%09%09%09%09this%5B%200%20%5D%20%3D%20elem%3B%0A%09%09%09%09%09%09this.length%20%3D%201%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%0A%09%09%09//%20HANDLE%3A%20%24%28expr%2C%20%24%28...%29%29%0A%09%09%09%7D%20else%20if%20%28%20%21context%20%7C%7C%20context.jquery%20%29%20%7B%0A%09%09%09%09return%20%28%20context%20%7C%7C%20root%20%29.find%28%20selector%20%29%3B%0A%0A%09%09%09//%20HANDLE%3A%20%24%28expr%2C%20context%29%0A%09%09%09//%20%28which%20is%20just%20equivalent%20to%3A%20%24%28context%29.find%28expr%29%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09return%20this.constructor%28%20context%20%29.find%28%20selector%20%29%3B%0A%09%09%09%7D%0A%0A%09%09//%20HANDLE%3A%20%24%28DOMElement%29%0A%09%09%7D%20else%20if%20%28%20selector.nodeType%20%29%20%7B%0A%09%09%09this%5B%200%20%5D%20%3D%20selector%3B%0A%09%09%09this.length%20%3D%201%3B%0A%09%09%09return%20this%3B%0A%0A%09%09//%20HANDLE%3A%20%24%28function%29%0A%09%09//%20Shortcut%20for%20document%20ready%0A%09%09%7D%20else%20if%20%28%20isFunction%28%20selector%20%29%20%29%20%7B%0A%09%09%09return%20root.ready%20%21%3D%3D%20undefined%20%3F%0A%09%09%09%09root.ready%28%20selector%20%29%20%3A%0A%0A%09%09%09%09//%20Execute%20immediately%20if%20ready%20is%20not%20present%0A%09%09%09%09selector%28%20jQuery%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20jQuery.makeArray%28%20selector%2C%20this%20%29%3B%0A%09%7D%3B%0A%0A//%20Give%20the%20init%20function%20the%20jQuery%20prototype%20for%20later%20instantiation%0Ainit.prototype%20%3D%20jQuery.fn%3B%0A%0A//%20Initialize%20central%20reference%0ArootjQuery%20%3D%20jQuery%28%20document%20%29%3B%0A%0A%0Avar%20rparentsprev%20%3D%20/%5E%28%3F%3Aparents%7Cprev%28%3F%3AUntil%7CAll%29%29/%2C%0A%0A%09//%20Methods%20guaranteed%20to%20produce%20a%20unique%20set%20when%20starting%20from%20a%20unique%20set%0A%09guaranteedUnique%20%3D%20%7B%0A%09%09children%3A%20true%2C%0A%09%09contents%3A%20true%2C%0A%09%09next%3A%20true%2C%0A%09%09prev%3A%20true%0A%09%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09has%3A%20function%28%20target%20%29%20%7B%0A%09%09var%20targets%20%3D%20jQuery%28%20target%2C%20this%20%29%2C%0A%09%09%09l%20%3D%20targets.length%3B%0A%0A%09%09return%20this.filter%28%20function%28%29%20%7B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20jQuery.contains%28%20this%2C%20targets%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09closest%3A%20function%28%20selectors%2C%20context%20%29%20%7B%0A%09%09var%20cur%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09l%20%3D%20this.length%2C%0A%09%09%09matched%20%3D%20%5B%5D%2C%0A%09%09%09targets%20%3D%20typeof%20selectors%20%21%3D%3D%20%22string%22%20%26%26%20jQuery%28%20selectors%20%29%3B%0A%0A%09%09//%20Positional%20selectors%20never%20match%2C%20since%20there%27s%20no%20_selection_%20context%0A%09%09if%20%28%20%21rneedsContext.test%28%20selectors%20%29%20%29%20%7B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09for%20%28%20cur%20%3D%20this%5B%20i%20%5D%3B%20cur%20%26%26%20cur%20%21%3D%3D%20context%3B%20cur%20%3D%20cur.parentNode%20%29%20%7B%0A%0A%09%09%09%09%09//%20Always%20skip%20document%20fragments%0A%09%09%09%09%09if%20%28%20cur.nodeType%20%3C%2011%20%26%26%20%28%20targets%20%3F%0A%09%09%09%09%09%09targets.index%28%20cur%20%29%20%3E%20-1%20%3A%0A%0A%09%09%09%09%09%09//%20Don%27t%20pass%20non-elements%20to%20Sizzle%0A%09%09%09%09%09%09cur.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%09%09%09jQuery.find.matchesSelector%28%20cur%2C%20selectors%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09matched.push%28%20cur%20%29%3B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20matched.length%20%3E%201%20%3F%20jQuery.uniqueSort%28%20matched%20%29%20%3A%20matched%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Determine%20the%20position%20of%20an%20element%20within%20the%20set%0A%09index%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20No%20argument%2C%20return%20index%20in%20parent%0A%09%09if%20%28%20%21elem%20%29%20%7B%0A%09%09%09return%20%28%20this%5B%200%20%5D%20%26%26%20this%5B%200%20%5D.parentNode%20%29%20%3F%20this.first%28%29.prevAll%28%29.length%20%3A%20-1%3B%0A%09%09%7D%0A%0A%09%09//%20Index%20in%20selector%0A%09%09if%20%28%20typeof%20elem%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20indexOf.call%28%20jQuery%28%20elem%20%29%2C%20this%5B%200%20%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Locate%20the%20position%20of%20the%20desired%20element%0A%09%09return%20indexOf.call%28%20this%2C%0A%0A%09%09%09//%20If%20it%20receives%20a%20jQuery%20object%2C%20the%20first%20element%20is%20used%0A%09%09%09elem.jquery%20%3F%20elem%5B%200%20%5D%20%3A%20elem%0A%09%09%29%3B%0A%09%7D%2C%0A%0A%09add%3A%20function%28%20selector%2C%20context%20%29%20%7B%0A%09%09return%20this.pushStack%28%0A%09%09%09jQuery.uniqueSort%28%0A%09%09%09%09jQuery.merge%28%20this.get%28%29%2C%20jQuery%28%20selector%2C%20context%20%29%20%29%0A%09%09%09%29%0A%09%09%29%3B%0A%09%7D%2C%0A%0A%09addBack%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.add%28%20selector%20%3D%3D%20null%20%3F%0A%09%09%09this.prevObject%20%3A%20this.prevObject.filter%28%20selector%20%29%0A%09%09%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0Afunction%20sibling%28%20cur%2C%20dir%20%29%20%7B%0A%09while%20%28%20%28%20cur%20%3D%20cur%5B%20dir%20%5D%20%29%20%26%26%20cur.nodeType%20%21%3D%3D%201%20%29%20%7B%7D%0A%09return%20cur%3B%0A%7D%0A%0AjQuery.each%28%20%7B%0A%09parent%3A%20function%28%20elem%20%29%20%7B%0A%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09return%20parent%20%26%26%20parent.nodeType%20%21%3D%3D%2011%20%3F%20parent%20%3A%20null%3B%0A%09%7D%2C%0A%09parents%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22parentNode%22%20%29%3B%0A%09%7D%2C%0A%09parentsUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22parentNode%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09next%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20sibling%28%20elem%2C%20%22nextSibling%22%20%29%3B%0A%09%7D%2C%0A%09prev%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20sibling%28%20elem%2C%20%22previousSibling%22%20%29%3B%0A%09%7D%2C%0A%09nextAll%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22nextSibling%22%20%29%3B%0A%09%7D%2C%0A%09prevAll%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22previousSibling%22%20%29%3B%0A%09%7D%2C%0A%09nextUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22nextSibling%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09prevUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22previousSibling%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09siblings%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20siblings%28%20%28%20elem.parentNode%20%7C%7C%20%7B%7D%20%29.firstChild%2C%20elem%20%29%3B%0A%09%7D%2C%0A%09children%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20siblings%28%20elem.firstChild%20%29%3B%0A%09%7D%2C%0A%09contents%3A%20function%28%20elem%20%29%20%7B%0A%09%09if%20%28%20elem.contentDocument%20%21%3D%20null%20%26%26%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%0A%09%09%09//%20%3Cobject%3E%20elements%20with%20no%20%60data%60%20attribute%20has%20an%20object%0A%09%09%09//%20%60contentDocument%60%20with%20a%20%60null%60%20prototype.%0A%09%09%09getProto%28%20elem.contentDocument%20%29%20%29%20%7B%0A%0A%09%09%09return%20elem.contentDocument%3B%0A%09%09%7D%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%20only%2C%20iOS%207%20only%2C%20Android%20Browser%20%3C%3D4.3%20only%0A%09%09//%20Treat%20the%20template%20element%20as%20a%20regular%20one%20in%20browsers%20that%0A%09%09//%20don%27t%20support%20it.%0A%09%09if%20%28%20nodeName%28%20elem%2C%20%22template%22%20%29%20%29%20%7B%0A%09%09%09elem%20%3D%20elem.content%20%7C%7C%20elem%3B%0A%09%09%7D%0A%0A%09%09return%20jQuery.merge%28%20%5B%5D%2C%20elem.childNodes%20%29%3B%0A%09%7D%0A%7D%2C%20function%28%20name%2C%20fn%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20until%2C%20selector%20%29%20%7B%0A%09%09var%20matched%20%3D%20jQuery.map%28%20this%2C%20fn%2C%20until%20%29%3B%0A%0A%09%09if%20%28%20name.slice%28%20-5%20%29%20%21%3D%3D%20%22Until%22%20%29%20%7B%0A%09%09%09selector%20%3D%20until%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20selector%20%26%26%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09matched%20%3D%20jQuery.filter%28%20selector%2C%20matched%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20this.length%20%3E%201%20%29%20%7B%0A%0A%09%09%09//%20Remove%20duplicates%0A%09%09%09if%20%28%20%21guaranteedUnique%5B%20name%20%5D%20%29%20%7B%0A%09%09%09%09jQuery.uniqueSort%28%20matched%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Reverse%20order%20for%20parents%2A%20and%20prev-derivatives%0A%09%09%09if%20%28%20rparentsprev.test%28%20name%20%29%20%29%20%7B%0A%09%09%09%09matched.reverse%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20matched%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0Avar%20rnothtmlwhite%20%3D%20%28%20/%5B%5E%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2B/g%20%29%3B%0A%0A%0A%0A//%20Convert%20String-formatted%20options%20into%20Object-formatted%20ones%0Afunction%20createOptions%28%20options%20%29%20%7B%0A%09var%20object%20%3D%20%7B%7D%3B%0A%09jQuery.each%28%20options.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%2C%20function%28%20_%2C%20flag%20%29%20%7B%0A%09%09object%5B%20flag%20%5D%20%3D%20true%3B%0A%09%7D%20%29%3B%0A%09return%20object%3B%0A%7D%0A%0A/%2A%0A%20%2A%20Create%20a%20callback%20list%20using%20the%20following%20parameters%3A%0A%20%2A%0A%20%2A%09options%3A%20an%20optional%20list%20of%20space-separated%20options%20that%20will%20change%20how%0A%20%2A%09%09%09the%20callback%20list%20behaves%20or%20a%20more%20traditional%20option%20object%0A%20%2A%0A%20%2A%20By%20default%20a%20callback%20list%20will%20act%20like%20an%20event%20callback%20list%20and%20can%20be%0A%20%2A%20%22fired%22%20multiple%20times.%0A%20%2A%0A%20%2A%20Possible%20options%3A%0A%20%2A%0A%20%2A%09once%3A%09%09%09will%20ensure%20the%20callback%20list%20can%20only%20be%20fired%20once%20%28like%20a%20Deferred%29%0A%20%2A%0A%20%2A%09memory%3A%09%09%09will%20keep%20track%20of%20previous%20values%20and%20will%20call%20any%20callback%20added%0A%20%2A%09%09%09%09%09after%20the%20list%20has%20been%20fired%20right%20away%20with%20the%20latest%20%22memorized%22%0A%20%2A%09%09%09%09%09values%20%28like%20a%20Deferred%29%0A%20%2A%0A%20%2A%09unique%3A%09%09%09will%20ensure%20a%20callback%20can%20only%20be%20added%20once%20%28no%20duplicate%20in%20the%20list%29%0A%20%2A%0A%20%2A%09stopOnFalse%3A%09interrupt%20callings%20when%20a%20callback%20returns%20false%0A%20%2A%0A%20%2A/%0AjQuery.Callbacks%20%3D%20function%28%20options%20%29%20%7B%0A%0A%09//%20Convert%20options%20from%20String-formatted%20to%20Object-formatted%20if%20needed%0A%09//%20%28we%20check%20in%20cache%20first%29%0A%09options%20%3D%20typeof%20options%20%3D%3D%3D%20%22string%22%20%3F%0A%09%09createOptions%28%20options%20%29%20%3A%0A%09%09jQuery.extend%28%20%7B%7D%2C%20options%20%29%3B%0A%0A%09var%20//%20Flag%20to%20know%20if%20list%20is%20currently%20firing%0A%09%09firing%2C%0A%0A%09%09//%20Last%20fire%20value%20for%20non-forgettable%20lists%0A%09%09memory%2C%0A%0A%09%09//%20Flag%20to%20know%20if%20list%20was%20already%20fired%0A%09%09fired%2C%0A%0A%09%09//%20Flag%20to%20prevent%20firing%0A%09%09locked%2C%0A%0A%09%09//%20Actual%20callback%20list%0A%09%09list%20%3D%20%5B%5D%2C%0A%0A%09%09//%20Queue%20of%20execution%20data%20for%20repeatable%20lists%0A%09%09queue%20%3D%20%5B%5D%2C%0A%0A%09%09//%20Index%20of%20currently%20firing%20callback%20%28modified%20by%20add/remove%20as%20needed%29%0A%09%09firingIndex%20%3D%20-1%2C%0A%0A%09%09//%20Fire%20callbacks%0A%09%09fire%20%3D%20function%28%29%20%7B%0A%0A%09%09%09//%20Enforce%20single-firing%0A%09%09%09locked%20%3D%20locked%20%7C%7C%20options.once%3B%0A%0A%09%09%09//%20Execute%20callbacks%20for%20all%20pending%20executions%2C%0A%09%09%09//%20respecting%20firingIndex%20overrides%20and%20runtime%20changes%0A%09%09%09fired%20%3D%20firing%20%3D%20true%3B%0A%09%09%09for%20%28%20%3B%20queue.length%3B%20firingIndex%20%3D%20-1%20%29%20%7B%0A%09%09%09%09memory%20%3D%20queue.shift%28%29%3B%0A%09%09%09%09while%20%28%20%2B%2BfiringIndex%20%3C%20list.length%20%29%20%7B%0A%0A%09%09%09%09%09//%20Run%20callback%20and%20check%20for%20early%20termination%0A%09%09%09%09%09if%20%28%20list%5B%20firingIndex%20%5D.apply%28%20memory%5B%200%20%5D%2C%20memory%5B%201%20%5D%20%29%20%3D%3D%3D%20false%20%26%26%0A%09%09%09%09%09%09options.stopOnFalse%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Jump%20to%20end%20and%20forget%20the%20data%20so%20.add%20doesn%27t%20re-fire%0A%09%09%09%09%09%09firingIndex%20%3D%20list.length%3B%0A%09%09%09%09%09%09memory%20%3D%20false%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Forget%20the%20data%20if%20we%27re%20done%20with%20it%0A%09%09%09if%20%28%20%21options.memory%20%29%20%7B%0A%09%09%09%09memory%20%3D%20false%3B%0A%09%09%09%7D%0A%0A%09%09%09firing%20%3D%20false%3B%0A%0A%09%09%09//%20Clean%20up%20if%20we%27re%20done%20firing%20for%20good%0A%09%09%09if%20%28%20locked%20%29%20%7B%0A%0A%09%09%09%09//%20Keep%20an%20empty%20list%20if%20we%20have%20data%20for%20future%20add%20calls%0A%09%09%09%09if%20%28%20memory%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20%5B%5D%3B%0A%0A%09%09%09%09//%20Otherwise%2C%20this%20object%20is%20spent%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09list%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09//%20Actual%20Callbacks%20object%0A%09%09self%20%3D%20%7B%0A%0A%09%09%09//%20Add%20a%20callback%20or%20a%20collection%20of%20callbacks%20to%20the%20list%0A%09%09%09add%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20list%20%29%20%7B%0A%0A%09%09%09%09%09//%20If%20we%20have%20memory%20from%20a%20past%20run%2C%20we%20should%20fire%20after%20adding%0A%09%09%09%09%09if%20%28%20memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09firingIndex%20%3D%20list.length%20-%201%3B%0A%09%09%09%09%09%09queue.push%28%20memory%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%28%20function%20add%28%20args%20%29%20%7B%0A%09%09%09%09%09%09jQuery.each%28%20args%2C%20function%28%20_%2C%20arg%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20isFunction%28%20arg%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09if%20%28%20%21options.unique%20%7C%7C%20%21self.has%28%20arg%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09list.push%28%20arg%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20else%20if%20%28%20arg%20%26%26%20arg.length%20%26%26%20toType%28%20arg%20%29%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Inspect%20recursively%0A%09%09%09%09%09%09%09%09add%28%20arg%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%7D%20%29%28%20arguments%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09fire%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Remove%20a%20callback%20from%20the%20list%0A%09%09%09remove%3A%20function%28%29%20%7B%0A%09%09%09%09jQuery.each%28%20arguments%2C%20function%28%20_%2C%20arg%20%29%20%7B%0A%09%09%09%09%09var%20index%3B%0A%09%09%09%09%09while%20%28%20%28%20index%20%3D%20jQuery.inArray%28%20arg%2C%20list%2C%20index%20%29%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09%09list.splice%28%20index%2C%201%20%29%3B%0A%0A%09%09%09%09%09%09//%20Handle%20firing%20indexes%0A%09%09%09%09%09%09if%20%28%20index%20%3C%3D%20firingIndex%20%29%20%7B%0A%09%09%09%09%09%09%09firingIndex--%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Check%20if%20a%20given%20callback%20is%20in%20the%20list.%0A%09%09%09//%20If%20no%20argument%20is%20given%2C%20return%20whether%20or%20not%20list%20has%20callbacks%20attached.%0A%09%09%09has%3A%20function%28%20fn%20%29%20%7B%0A%09%09%09%09return%20fn%20%3F%0A%09%09%09%09%09jQuery.inArray%28%20fn%2C%20list%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09list.length%20%3E%200%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Remove%20all%20callbacks%20from%20the%20list%0A%09%09%09empty%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20list%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20%5B%5D%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Disable%20.fire%20and%20.add%0A%09%09%09//%20Abort%20any%20current/pending%20executions%0A%09%09%09//%20Clear%20all%20callbacks%20and%20values%0A%09%09%09disable%3A%20function%28%29%20%7B%0A%09%09%09%09locked%20%3D%20queue%20%3D%20%5B%5D%3B%0A%09%09%09%09list%20%3D%20memory%20%3D%20%22%22%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%09%09%09disabled%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21list%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Disable%20.fire%0A%09%09%09//%20Also%20disable%20.add%20unless%20we%20have%20memory%20%28since%20it%20would%20have%20no%20effect%29%0A%09%09%09//%20Abort%20any%20pending%20executions%0A%09%09%09lock%3A%20function%28%29%20%7B%0A%09%09%09%09locked%20%3D%20queue%20%3D%20%5B%5D%3B%0A%09%09%09%09if%20%28%20%21memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20memory%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%09%09%09locked%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21%21locked%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Call%20all%20callbacks%20with%20the%20given%20context%20and%20arguments%0A%09%09%09fireWith%3A%20function%28%20context%2C%20args%20%29%20%7B%0A%09%09%09%09if%20%28%20%21locked%20%29%20%7B%0A%09%09%09%09%09args%20%3D%20args%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09args%20%3D%20%5B%20context%2C%20args.slice%20%3F%20args.slice%28%29%20%3A%20args%20%5D%3B%0A%09%09%09%09%09queue.push%28%20args%20%29%3B%0A%09%09%09%09%09if%20%28%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09fire%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Call%20all%20the%20callbacks%20with%20the%20given%20arguments%0A%09%09%09fire%3A%20function%28%29%20%7B%0A%09%09%09%09self.fireWith%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20To%20know%20if%20the%20callbacks%20have%20already%20been%20called%20at%20least%20once%0A%09%09%09fired%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21%21fired%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%0A%09return%20self%3B%0A%7D%3B%0A%0A%0Afunction%20Identity%28%20v%20%29%20%7B%0A%09return%20v%3B%0A%7D%0Afunction%20Thrower%28%20ex%20%29%20%7B%0A%09throw%20ex%3B%0A%7D%0A%0Afunction%20adoptValue%28%20value%2C%20resolve%2C%20reject%2C%20noValue%20%29%20%7B%0A%09var%20method%3B%0A%0A%09try%20%7B%0A%0A%09%09//%20Check%20for%20promise%20aspect%20first%20to%20privilege%20synchronous%20behavior%0A%09%09if%20%28%20value%20%26%26%20isFunction%28%20%28%20method%20%3D%20value.promise%20%29%20%29%20%29%20%7B%0A%09%09%09method.call%28%20value%20%29.done%28%20resolve%20%29.fail%28%20reject%20%29%3B%0A%0A%09%09//%20Other%20thenables%0A%09%09%7D%20else%20if%20%28%20value%20%26%26%20isFunction%28%20%28%20method%20%3D%20value.then%20%29%20%29%20%29%20%7B%0A%09%09%09method.call%28%20value%2C%20resolve%2C%20reject%20%29%3B%0A%0A%09%09//%20Other%20non-thenables%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Control%20%60resolve%60%20arguments%20by%20letting%20Array%23slice%20cast%20boolean%20%60noValue%60%20to%20integer%3A%0A%09%09%09//%20%2A%20false%3A%20%5B%20value%20%5D.slice%28%200%20%29%20%3D%3E%20resolve%28%20value%20%29%0A%09%09%09//%20%2A%20true%3A%20%5B%20value%20%5D.slice%28%201%20%29%20%3D%3E%20resolve%28%29%0A%09%09%09resolve.apply%28%20undefined%2C%20%5B%20value%20%5D.slice%28%20noValue%20%29%20%29%3B%0A%09%09%7D%0A%0A%09//%20For%20Promises/A%2B%2C%20convert%20exceptions%20into%20rejections%0A%09//%20Since%20jQuery.when%20doesn%27t%20unwrap%20thenables%2C%20we%20can%20skip%20the%20extra%20checks%20appearing%20in%0A%09//%20Deferred%23then%20to%20conditionally%20suppress%20rejection.%0A%09%7D%20catch%20%28%20value%20%29%20%7B%0A%0A%09%09//%20Support%3A%20Android%204.0%20only%0A%09%09//%20Strict%20mode%20functions%20invoked%20without%20.call/.apply%20get%20global-object%20context%0A%09%09reject.apply%28%20undefined%2C%20%5B%20value%20%5D%20%29%3B%0A%09%7D%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09Deferred%3A%20function%28%20func%20%29%20%7B%0A%09%09var%20tuples%20%3D%20%5B%0A%0A%09%09%09%09//%20action%2C%20add%20listener%2C%20callbacks%2C%0A%09%09%09%09//%20...%20.then%20handlers%2C%20argument%20index%2C%20%5Bfinal%20state%5D%0A%09%09%09%09%5B%20%22notify%22%2C%20%22progress%22%2C%20jQuery.Callbacks%28%20%22memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22memory%22%20%29%2C%202%20%5D%2C%0A%09%09%09%09%5B%20%22resolve%22%2C%20%22done%22%2C%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%200%2C%20%22resolved%22%20%5D%2C%0A%09%09%09%09%5B%20%22reject%22%2C%20%22fail%22%2C%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%201%2C%20%22rejected%22%20%5D%0A%09%09%09%5D%2C%0A%09%09%09state%20%3D%20%22pending%22%2C%0A%09%09%09promise%20%3D%20%7B%0A%09%09%09%09state%3A%20function%28%29%20%7B%0A%09%09%09%09%09return%20state%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09always%3A%20function%28%29%20%7B%0A%09%09%09%09%09deferred.done%28%20arguments%20%29.fail%28%20arguments%20%29%3B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09%22catch%22%3A%20function%28%20fn%20%29%20%7B%0A%09%09%09%09%09return%20promise.then%28%20null%2C%20fn%20%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Keep%20pipe%20for%20back-compat%0A%09%09%09%09pipe%3A%20function%28%20/%2A%20fnDone%2C%20fnFail%2C%20fnProgress%20%2A/%20%29%20%7B%0A%09%09%09%09%09var%20fns%20%3D%20arguments%3B%0A%0A%09%09%09%09%09return%20jQuery.Deferred%28%20function%28%20newDefer%20%29%20%7B%0A%09%09%09%09%09%09jQuery.each%28%20tuples%2C%20function%28%20_i%2C%20tuple%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Map%20tuples%20%28progress%2C%20done%2C%20fail%29%20to%20arguments%20%28done%2C%20fail%2C%20progress%29%0A%09%09%09%09%09%09%09var%20fn%20%3D%20isFunction%28%20fns%5B%20tuple%5B%204%20%5D%20%5D%20%29%20%26%26%20fns%5B%20tuple%5B%204%20%5D%20%5D%3B%0A%0A%09%09%09%09%09%09%09//%20deferred.progress%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.notify%20%7D%29%0A%09%09%09%09%09%09%09//%20deferred.done%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.resolve%20%7D%29%0A%09%09%09%09%09%09%09//%20deferred.fail%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.reject%20%7D%29%0A%09%09%09%09%09%09%09deferred%5B%20tuple%5B%201%20%5D%20%5D%28%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09var%20returned%20%3D%20fn%20%26%26%20fn.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09%09%09%09%09if%20%28%20returned%20%26%26%20isFunction%28%20returned.promise%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09returned.promise%28%29%0A%09%09%09%09%09%09%09%09%09%09.progress%28%20newDefer.notify%20%29%0A%09%09%09%09%09%09%09%09%09%09.done%28%20newDefer.resolve%20%29%0A%09%09%09%09%09%09%09%09%09%09.fail%28%20newDefer.reject%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09%09newDefer%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%28%0A%09%09%09%09%09%09%09%09%09%09this%2C%0A%09%09%09%09%09%09%09%09%09%09fn%20%3F%20%5B%20returned%20%5D%20%3A%20arguments%0A%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09fns%20%3D%20null%3B%0A%09%09%09%09%09%7D%20%29.promise%28%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09then%3A%20function%28%20onFulfilled%2C%20onRejected%2C%20onProgress%20%29%20%7B%0A%09%09%09%09%09var%20maxDepth%20%3D%200%3B%0A%09%09%09%09%09function%20resolve%28%20depth%2C%20deferred%2C%20handler%2C%20special%20%29%20%7B%0A%09%09%09%09%09%09return%20function%28%29%20%7B%0A%09%09%09%09%09%09%09var%20that%20%3D%20this%2C%0A%09%09%09%09%09%09%09%09args%20%3D%20arguments%2C%0A%09%09%09%09%09%09%09%09mightThrow%20%3D%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09%09var%20returned%2C%20then%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.3%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-59%0A%09%09%09%09%09%09%09%09%09//%20Ignore%20double-resolution%20attempts%0A%09%09%09%09%09%09%09%09%09if%20%28%20depth%20%3C%20maxDepth%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09returned%20%3D%20handler.apply%28%20that%2C%20args%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.1%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-48%0A%09%09%09%09%09%09%09%09%09if%20%28%20returned%20%3D%3D%3D%20deferred.promise%28%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09throw%20new%20TypeError%28%20%22Thenable%20self-resolution%22%20%29%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20sections%202.3.3.1%2C%203.5%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-54%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-75%0A%09%09%09%09%09%09%09%09%09//%20Retrieve%20%60then%60%20only%20once%0A%09%09%09%09%09%09%09%09%09then%20%3D%20returned%20%26%26%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.4%0A%09%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-64%0A%09%09%09%09%09%09%09%09%09%09//%20Only%20check%20objects%20and%20functions%20for%20thenability%0A%09%09%09%09%09%09%09%09%09%09%28%20typeof%20returned%20%3D%3D%3D%20%22object%22%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09typeof%20returned%20%3D%3D%3D%20%22function%22%20%29%20%26%26%0A%09%09%09%09%09%09%09%09%09%09returned.then%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Handle%20a%20returned%20thenable%0A%09%09%09%09%09%09%09%09%09if%20%28%20isFunction%28%20then%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Special%20processors%20%28notify%29%20just%20wait%20for%20resolution%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20special%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09then.call%28%0A%09%09%09%09%09%09%09%09%09%09%09%09returned%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Thrower%2C%20special%20%29%0A%09%09%09%09%09%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Normal%20processors%20%28resolve%29%20also%20hook%20into%20progress%0A%09%09%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20...and%20disregard%20older%20resolution%20values%0A%09%09%09%09%09%09%09%09%09%09%09maxDepth%2B%2B%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09then.call%28%0A%09%09%09%09%09%09%09%09%09%09%09%09returned%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Thrower%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09%09deferred.notifyWith%20%29%0A%09%09%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09//%20Handle%20all%20other%20returned%20values%0A%09%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Only%20substitute%20handlers%20pass%20on%20context%0A%09%09%09%09%09%09%09%09%09%09//%20and%20multiple%20values%20%28non-spec%20behavior%29%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20handler%20%21%3D%3D%20Identity%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09that%20%3D%20undefined%3B%0A%09%09%09%09%09%09%09%09%09%09%09args%20%3D%20%5B%20returned%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Process%20the%20value%28s%29%0A%09%09%09%09%09%09%09%09%09%09//%20Default%20process%20is%20resolve%0A%09%09%09%09%09%09%09%09%09%09%28%20special%20%7C%7C%20deferred.resolveWith%20%29%28%20that%2C%20args%20%29%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09%09%09%09//%20Only%20normal%20processors%20%28resolve%29%20catch%20and%20reject%20exceptions%0A%09%09%09%09%09%09%09%09process%20%3D%20special%20%3F%0A%09%09%09%09%09%09%09%09%09mightThrow%20%3A%0A%09%09%09%09%09%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09mightThrow%28%29%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09if%20%28%20jQuery.Deferred.exceptionHook%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09%09jQuery.Deferred.exceptionHook%28%20e%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09%09process.stackTrace%20%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.4.1%0A%09%09%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-61%0A%09%09%09%09%09%09%09%09%09%09%09//%20Ignore%20post-resolution%20exceptions%0A%09%09%09%09%09%09%09%09%09%09%09if%20%28%20depth%20%2B%201%20%3E%3D%20maxDepth%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09%09//%20Only%20substitute%20handlers%20pass%20on%20context%0A%09%09%09%09%09%09%09%09%09%09%09%09//%20and%20multiple%20values%20%28non-spec%20behavior%29%0A%09%09%09%09%09%09%09%09%09%09%09%09if%20%28%20handler%20%21%3D%3D%20Thrower%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09%09%09that%20%3D%20undefined%3B%0A%09%09%09%09%09%09%09%09%09%09%09%09%09args%20%3D%20%5B%20e%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09%09%09deferred.rejectWith%28%20that%2C%20args%20%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%7D%3B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.1%0A%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-57%0A%09%09%09%09%09%09%09//%20Re-resolve%20promises%20immediately%20to%20dodge%20false%20rejection%20from%0A%09%09%09%09%09%09%09//%20subsequent%20errors%0A%09%09%09%09%09%09%09if%20%28%20depth%20%29%20%7B%0A%09%09%09%09%09%09%09%09process%28%29%3B%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Call%20an%20optional%20hook%20to%20record%20the%20stack%2C%20in%20case%20of%20exception%0A%09%09%09%09%09%09%09%09//%20since%20it%27s%20otherwise%20lost%20when%20execution%20goes%20async%0A%09%09%09%09%09%09%09%09if%20%28%20jQuery.Deferred.getStackHook%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09process.stackTrace%20%3D%20jQuery.Deferred.getStackHook%28%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09window.setTimeout%28%20process%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09return%20jQuery.Deferred%28%20function%28%20newDefer%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20progress_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%200%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onProgress%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onProgress%20%3A%0A%09%09%09%09%09%09%09%09%09Identity%2C%0A%09%09%09%09%09%09%09%09newDefer.notifyWith%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09//%20fulfilled_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%201%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onFulfilled%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onFulfilled%20%3A%0A%09%09%09%09%09%09%09%09%09Identity%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09//%20rejected_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%202%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onRejected%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onRejected%20%3A%0A%09%09%09%09%09%09%09%09%09Thrower%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%7D%20%29.promise%28%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Get%20a%20promise%20for%20this%20deferred%0A%09%09%09%09//%20If%20obj%20is%20provided%2C%20the%20promise%20aspect%20is%20added%20to%20the%20object%0A%09%09%09%09promise%3A%20function%28%20obj%20%29%20%7B%0A%09%09%09%09%09return%20obj%20%21%3D%20null%20%3F%20jQuery.extend%28%20obj%2C%20promise%20%29%20%3A%20promise%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%09%09%09deferred%20%3D%20%7B%7D%3B%0A%0A%09%09//%20Add%20list-specific%20methods%0A%09%09jQuery.each%28%20tuples%2C%20function%28%20i%2C%20tuple%20%29%20%7B%0A%09%09%09var%20list%20%3D%20tuple%5B%202%20%5D%2C%0A%09%09%09%09stateString%20%3D%20tuple%5B%205%20%5D%3B%0A%0A%09%09%09//%20promise.progress%20%3D%20list.add%0A%09%09%09//%20promise.done%20%3D%20list.add%0A%09%09%09//%20promise.fail%20%3D%20list.add%0A%09%09%09promise%5B%20tuple%5B%201%20%5D%20%5D%20%3D%20list.add%3B%0A%0A%09%09%09//%20Handle%20state%0A%09%09%09if%20%28%20stateString%20%29%20%7B%0A%09%09%09%09list.add%28%0A%09%09%09%09%09function%28%29%20%7B%0A%0A%09%09%09%09%09%09//%20state%20%3D%20%22resolved%22%20%28i.e.%2C%20fulfilled%29%0A%09%09%09%09%09%09//%20state%20%3D%20%22rejected%22%0A%09%09%09%09%09%09state%20%3D%20stateString%3B%0A%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09//%20rejected_callbacks.disable%0A%09%09%09%09%09//%20fulfilled_callbacks.disable%0A%09%09%09%09%09tuples%5B%203%20-%20i%20%5D%5B%202%20%5D.disable%2C%0A%0A%09%09%09%09%09//%20rejected_handlers.disable%0A%09%09%09%09%09//%20fulfilled_handlers.disable%0A%09%09%09%09%09tuples%5B%203%20-%20i%20%5D%5B%203%20%5D.disable%2C%0A%0A%09%09%09%09%09//%20progress_callbacks.lock%0A%09%09%09%09%09tuples%5B%200%20%5D%5B%202%20%5D.lock%2C%0A%0A%09%09%09%09%09//%20progress_handlers.lock%0A%09%09%09%09%09tuples%5B%200%20%5D%5B%203%20%5D.lock%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20progress_handlers.fire%0A%09%09%09//%20fulfilled_handlers.fire%0A%09%09%09//%20rejected_handlers.fire%0A%09%09%09list.add%28%20tuple%5B%203%20%5D.fire%20%29%3B%0A%0A%09%09%09//%20deferred.notify%20%3D%20function%28%29%20%7B%20deferred.notifyWith%28...%29%20%7D%0A%09%09%09//%20deferred.resolve%20%3D%20function%28%29%20%7B%20deferred.resolveWith%28...%29%20%7D%0A%09%09%09//%20deferred.reject%20%3D%20function%28%29%20%7B%20deferred.rejectWith%28...%29%20%7D%0A%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%28%20this%20%3D%3D%3D%20deferred%20%3F%20undefined%20%3A%20this%2C%20arguments%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%3B%0A%0A%09%09%09//%20deferred.notifyWith%20%3D%20list.fireWith%0A%09%09%09//%20deferred.resolveWith%20%3D%20list.fireWith%0A%09%09%09//%20deferred.rejectWith%20%3D%20list.fireWith%0A%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%20%3D%20list.fireWith%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09//%20Make%20the%20deferred%20a%20promise%0A%09%09promise.promise%28%20deferred%20%29%3B%0A%0A%09%09//%20Call%20given%20func%20if%20any%0A%09%09if%20%28%20func%20%29%20%7B%0A%09%09%09func.call%28%20deferred%2C%20deferred%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20All%20done%21%0A%09%09return%20deferred%3B%0A%09%7D%2C%0A%0A%09//%20Deferred%20helper%0A%09when%3A%20function%28%20singleValue%20%29%20%7B%0A%09%09var%0A%0A%09%09%09//%20count%20of%20uncompleted%20subordinates%0A%09%09%09remaining%20%3D%20arguments.length%2C%0A%0A%09%09%09//%20count%20of%20unprocessed%20arguments%0A%09%09%09i%20%3D%20remaining%2C%0A%0A%09%09%09//%20subordinate%20fulfillment%20data%0A%09%09%09resolveContexts%20%3D%20Array%28%20i%20%29%2C%0A%09%09%09resolveValues%20%3D%20slice.call%28%20arguments%20%29%2C%0A%0A%09%09%09//%20the%20master%20Deferred%0A%09%09%09master%20%3D%20jQuery.Deferred%28%29%2C%0A%0A%09%09%09//%20subordinate%20callback%20factory%0A%09%09%09updateFunc%20%3D%20function%28%20i%20%29%20%7B%0A%09%09%09%09return%20function%28%20value%20%29%20%7B%0A%09%09%09%09%09resolveContexts%5B%20i%20%5D%20%3D%20this%3B%0A%09%09%09%09%09resolveValues%5B%20i%20%5D%20%3D%20arguments.length%20%3E%201%20%3F%20slice.call%28%20arguments%20%29%20%3A%20value%3B%0A%09%09%09%09%09if%20%28%20%21%28%20--remaining%20%29%20%29%20%7B%0A%09%09%09%09%09%09master.resolveWith%28%20resolveContexts%2C%20resolveValues%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%0A%09%09//%20Single-%20and%20empty%20arguments%20are%20adopted%20like%20Promise.resolve%0A%09%09if%20%28%20remaining%20%3C%3D%201%20%29%20%7B%0A%09%09%09adoptValue%28%20singleValue%2C%20master.done%28%20updateFunc%28%20i%20%29%20%29.resolve%2C%20master.reject%2C%0A%09%09%09%09%21remaining%20%29%3B%0A%0A%09%09%09//%20Use%20.then%28%29%20to%20unwrap%20secondary%20thenables%20%28cf.%20gh-3000%29%0A%09%09%09if%20%28%20master.state%28%29%20%3D%3D%3D%20%22pending%22%20%7C%7C%0A%09%09%09%09isFunction%28%20resolveValues%5B%20i%20%5D%20%26%26%20resolveValues%5B%20i%20%5D.then%20%29%20%29%20%7B%0A%0A%09%09%09%09return%20master.then%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Multiple%20arguments%20are%20aggregated%20like%20Promise.all%20array%20elements%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09adoptValue%28%20resolveValues%5B%20i%20%5D%2C%20updateFunc%28%20i%20%29%2C%20master.reject%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20master.promise%28%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20These%20usually%20indicate%20a%20programmer%20mistake%20during%20development%2C%0A//%20warn%20about%20them%20ASAP%20rather%20than%20swallowing%20them%20by%20default.%0Avar%20rerrorNames%20%3D%20/%5E%28Eval%7CInternal%7CRange%7CReference%7CSyntax%7CType%7CURI%29Error%24/%3B%0A%0AjQuery.Deferred.exceptionHook%20%3D%20function%28%20error%2C%20stack%20%29%20%7B%0A%0A%09//%20Support%3A%20IE%208%20-%209%20only%0A%09//%20Console%20exists%20when%20dev%20tools%20are%20open%2C%20which%20can%20happen%20at%20any%20time%0A%09if%20%28%20window.console%20%26%26%20window.console.warn%20%26%26%20error%20%26%26%20rerrorNames.test%28%20error.name%20%29%20%29%20%7B%0A%09%09window.console.warn%28%20%22jQuery.Deferred%20exception%3A%20%22%20%2B%20error.message%2C%20error.stack%2C%20stack%20%29%3B%0A%09%7D%0A%7D%3B%0A%0A%0A%0A%0AjQuery.readyException%20%3D%20function%28%20error%20%29%20%7B%0A%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09throw%20error%3B%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0A//%20The%20deferred%20used%20on%20DOM%20ready%0Avar%20readyList%20%3D%20jQuery.Deferred%28%29%3B%0A%0AjQuery.fn.ready%20%3D%20function%28%20fn%20%29%20%7B%0A%0A%09readyList%0A%09%09.then%28%20fn%20%29%0A%0A%09%09//%20Wrap%20jQuery.readyException%20in%20a%20function%20so%20that%20the%20lookup%0A%09%09//%20happens%20at%20the%20time%20of%20error%20handling%20instead%20of%20callback%0A%09%09//%20registration.%0A%09%09.catch%28%20function%28%20error%20%29%20%7B%0A%09%09%09jQuery.readyException%28%20error%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09return%20this%3B%0A%7D%3B%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Is%20the%20DOM%20ready%20to%20be%20used%3F%20Set%20to%20true%20once%20it%20occurs.%0A%09isReady%3A%20false%2C%0A%0A%09//%20A%20counter%20to%20track%20how%20many%20items%20to%20wait%20for%20before%0A%09//%20the%20ready%20event%20fires.%20See%20%236781%0A%09readyWait%3A%201%2C%0A%0A%09//%20Handle%20when%20the%20DOM%20is%20ready%0A%09ready%3A%20function%28%20wait%20%29%20%7B%0A%0A%09%09//%20Abort%20if%20there%20are%20pending%20holds%20or%20we%27re%20already%20ready%0A%09%09if%20%28%20wait%20%3D%3D%3D%20true%20%3F%20--jQuery.readyWait%20%3A%20jQuery.isReady%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Remember%20that%20the%20DOM%20is%20ready%0A%09%09jQuery.isReady%20%3D%20true%3B%0A%0A%09%09//%20If%20a%20normal%20DOM%20Ready%20event%20fired%2C%20decrement%2C%20and%20wait%20if%20need%20be%0A%09%09if%20%28%20wait%20%21%3D%3D%20true%20%26%26%20--jQuery.readyWait%20%3E%200%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20If%20there%20are%20functions%20bound%2C%20to%20execute%0A%09%09readyList.resolveWith%28%20document%2C%20%5B%20jQuery%20%5D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.ready.then%20%3D%20readyList.then%3B%0A%0A//%20The%20ready%20event%20handler%20and%20self%20cleanup%20method%0Afunction%20completed%28%29%20%7B%0A%09document.removeEventListener%28%20%22DOMContentLoaded%22%2C%20completed%20%29%3B%0A%09window.removeEventListener%28%20%22load%22%2C%20completed%20%29%3B%0A%09jQuery.ready%28%29%3B%0A%7D%0A%0A//%20Catch%20cases%20where%20%24%28document%29.ready%28%29%20is%20called%0A//%20after%20the%20browser%20event%20has%20already%20occurred.%0A//%20Support%3A%20IE%20%3C%3D9%20-%2010%20only%0A//%20Older%20IE%20sometimes%20signals%20%22interactive%22%20too%20soon%0Aif%20%28%20document.readyState%20%3D%3D%3D%20%22complete%22%20%7C%7C%0A%09%28%20document.readyState%20%21%3D%3D%20%22loading%22%20%26%26%20%21document.documentElement.doScroll%20%29%20%29%20%7B%0A%0A%09//%20Handle%20it%20asynchronously%20to%20allow%20scripts%20the%20opportunity%20to%20delay%20ready%0A%09window.setTimeout%28%20jQuery.ready%20%29%3B%0A%0A%7D%20else%20%7B%0A%0A%09//%20Use%20the%20handy%20event%20callback%0A%09document.addEventListener%28%20%22DOMContentLoaded%22%2C%20completed%20%29%3B%0A%0A%09//%20A%20fallback%20to%20window.onload%2C%20that%20will%20always%20work%0A%09window.addEventListener%28%20%22load%22%2C%20completed%20%29%3B%0A%7D%0A%0A%0A%0A%0A//%20Multifunctional%20method%20to%20get%20and%20set%20values%20of%20a%20collection%0A//%20The%20value/s%20can%20optionally%20be%20executed%20if%20it%27s%20a%20function%0Avar%20access%20%3D%20function%28%20elems%2C%20fn%2C%20key%2C%20value%2C%20chainable%2C%20emptyGet%2C%20raw%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20elems.length%2C%0A%09%09bulk%20%3D%20key%20%3D%3D%20null%3B%0A%0A%09//%20Sets%20many%20values%0A%09if%20%28%20toType%28%20key%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09chainable%20%3D%20true%3B%0A%09%09for%20%28%20i%20in%20key%20%29%20%7B%0A%09%09%09access%28%20elems%2C%20fn%2C%20i%2C%20key%5B%20i%20%5D%2C%20true%2C%20emptyGet%2C%20raw%20%29%3B%0A%09%09%7D%0A%0A%09//%20Sets%20one%20value%0A%09%7D%20else%20if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09chainable%20%3D%20true%3B%0A%0A%09%09if%20%28%20%21isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09raw%20%3D%20true%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20bulk%20%29%20%7B%0A%0A%09%09%09//%20Bulk%20operations%20run%20against%20the%20entire%20set%0A%09%09%09if%20%28%20raw%20%29%20%7B%0A%09%09%09%09fn.call%28%20elems%2C%20value%20%29%3B%0A%09%09%09%09fn%20%3D%20null%3B%0A%0A%09%09%09//%20...except%20when%20executing%20function%20values%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09bulk%20%3D%20fn%3B%0A%09%09%09%09fn%20%3D%20function%28%20elem%2C%20_key%2C%20value%20%29%20%7B%0A%09%09%09%09%09return%20bulk.call%28%20jQuery%28%20elem%20%29%2C%20value%20%29%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20fn%20%29%20%7B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09fn%28%0A%09%09%09%09%09elems%5B%20i%20%5D%2C%20key%2C%20raw%20%3F%0A%09%09%09%09%09value%20%3A%0A%09%09%09%09%09value.call%28%20elems%5B%20i%20%5D%2C%20i%2C%20fn%28%20elems%5B%20i%20%5D%2C%20key%20%29%20%29%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20chainable%20%29%20%7B%0A%09%09return%20elems%3B%0A%09%7D%0A%0A%09//%20Gets%0A%09if%20%28%20bulk%20%29%20%7B%0A%09%09return%20fn.call%28%20elems%20%29%3B%0A%09%7D%0A%0A%09return%20len%20%3F%20fn%28%20elems%5B%200%20%5D%2C%20key%20%29%20%3A%20emptyGet%3B%0A%7D%3B%0A%0A%0A//%20Matches%20dashed%20string%20for%20camelizing%0Avar%20rmsPrefix%20%3D%20/%5E-ms-/%2C%0A%09rdashAlpha%20%3D%20/-%28%5Ba-z%5D%29/g%3B%0A%0A//%20Used%20by%20camelCase%20as%20callback%20to%20replace%28%29%0Afunction%20fcamelCase%28%20_all%2C%20letter%20%29%20%7B%0A%09return%20letter.toUpperCase%28%29%3B%0A%7D%0A%0A//%20Convert%20dashed%20to%20camelCase%3B%20used%20by%20the%20css%20and%20data%20modules%0A//%20Support%3A%20IE%20%3C%3D9%20-%2011%2C%20Edge%2012%20-%2015%0A//%20Microsoft%20forgot%20to%20hump%20their%20vendor%20prefix%20%28%239572%29%0Afunction%20camelCase%28%20string%20%29%20%7B%0A%09return%20string.replace%28%20rmsPrefix%2C%20%22ms-%22%20%29.replace%28%20rdashAlpha%2C%20fcamelCase%20%29%3B%0A%7D%0Avar%20acceptData%20%3D%20function%28%20owner%20%29%20%7B%0A%0A%09//%20Accepts%20only%3A%0A%09//%20%20-%20Node%0A%09//%20%20%20%20-%20Node.ELEMENT_NODE%0A%09//%20%20%20%20-%20Node.DOCUMENT_NODE%0A%09//%20%20-%20Object%0A%09//%20%20%20%20-%20Any%0A%09return%20owner.nodeType%20%3D%3D%3D%201%20%7C%7C%20owner.nodeType%20%3D%3D%3D%209%20%7C%7C%20%21%28%20%2Bowner.nodeType%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0Afunction%20Data%28%29%20%7B%0A%09this.expando%20%3D%20jQuery.expando%20%2B%20Data.uid%2B%2B%3B%0A%7D%0A%0AData.uid%20%3D%201%3B%0A%0AData.prototype%20%3D%20%7B%0A%0A%09cache%3A%20function%28%20owner%20%29%20%7B%0A%0A%09%09//%20Check%20if%20the%20owner%20object%20already%20has%20a%20cache%0A%09%09var%20value%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%0A%09%09//%20If%20not%2C%20create%20one%0A%09%09if%20%28%20%21value%20%29%20%7B%0A%09%09%09value%20%3D%20%7B%7D%3B%0A%0A%09%09%09//%20We%20can%20accept%20data%20for%20non-element%20nodes%20in%20modern%20browsers%2C%0A%09%09%09//%20but%20we%20should%20not%2C%20see%20%238335.%0A%09%09%09//%20Always%20return%20an%20empty%20object.%0A%09%09%09if%20%28%20acceptData%28%20owner%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20it%20is%20a%20node%20unlikely%20to%20be%20stringify-ed%20or%20looped%20over%0A%09%09%09%09//%20use%20plain%20assignment%0A%09%09%09%09if%20%28%20owner.nodeType%20%29%20%7B%0A%09%09%09%09%09owner%5B%20this.expando%20%5D%20%3D%20value%3B%0A%0A%09%09%09%09//%20Otherwise%20secure%20it%20in%20a%20non-enumerable%20property%0A%09%09%09%09//%20configurable%20must%20be%20true%20to%20allow%20the%20property%20to%20be%0A%09%09%09%09//%20deleted%20when%20data%20is%20removed%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09Object.defineProperty%28%20owner%2C%20this.expando%2C%20%7B%0A%09%09%09%09%09%09value%3A%20value%2C%0A%09%09%09%09%09%09configurable%3A%20true%0A%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20value%3B%0A%09%7D%2C%0A%09set%3A%20function%28%20owner%2C%20data%2C%20value%20%29%20%7B%0A%09%09var%20prop%2C%0A%09%09%09cache%20%3D%20this.cache%28%20owner%20%29%3B%0A%0A%09%09//%20Handle%3A%20%5B%20owner%2C%20key%2C%20value%20%5D%20args%0A%09%09//%20Always%20use%20camelCase%20key%20%28gh-2257%29%0A%09%09if%20%28%20typeof%20data%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09cache%5B%20camelCase%28%20data%20%29%20%5D%20%3D%20value%3B%0A%0A%09%09//%20Handle%3A%20%5B%20owner%2C%20%7B%20properties%20%7D%20%5D%20args%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Copy%20the%20properties%20one-by-one%20to%20the%20cache%20object%0A%09%09%09for%20%28%20prop%20in%20data%20%29%20%7B%0A%09%09%09%09cache%5B%20camelCase%28%20prop%20%29%20%5D%20%3D%20data%5B%20prop%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20cache%3B%0A%09%7D%2C%0A%09get%3A%20function%28%20owner%2C%20key%20%29%20%7B%0A%09%09return%20key%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09this.cache%28%20owner%20%29%20%3A%0A%0A%09%09%09//%20Always%20use%20camelCase%20key%20%28gh-2257%29%0A%09%09%09owner%5B%20this.expando%20%5D%20%26%26%20owner%5B%20this.expando%20%5D%5B%20camelCase%28%20key%20%29%20%5D%3B%0A%09%7D%2C%0A%09access%3A%20function%28%20owner%2C%20key%2C%20value%20%29%20%7B%0A%0A%09%09//%20In%20cases%20where%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20No%20key%20was%20specified%0A%09%09//%20%20%202.%20A%20string%20key%20was%20specified%2C%20but%20no%20value%20provided%0A%09%09//%0A%09%09//%20Take%20the%20%22read%22%20path%20and%20allow%20the%20get%20method%20to%20determine%0A%09%09//%20which%20value%20to%20return%2C%20respectively%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20The%20entire%20cache%20object%0A%09%09//%20%20%202.%20The%20data%20stored%20at%20the%20key%0A%09%09//%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%7C%7C%0A%09%09%09%09%28%20%28%20key%20%26%26%20typeof%20key%20%3D%3D%3D%20%22string%22%20%29%20%26%26%20value%20%3D%3D%3D%20undefined%20%29%20%29%20%7B%0A%0A%09%09%09return%20this.get%28%20owner%2C%20key%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20When%20the%20key%20is%20not%20a%20string%2C%20or%20both%20a%20key%20and%20value%0A%09%09//%20are%20specified%2C%20set%20or%20extend%20%28existing%20objects%29%20with%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20An%20object%20of%20properties%0A%09%09//%20%20%202.%20A%20key%20and%20value%0A%09%09//%0A%09%09this.set%28%20owner%2C%20key%2C%20value%20%29%3B%0A%0A%09%09//%20Since%20the%20%22set%22%20path%20can%20have%20two%20possible%20entry%20points%0A%09%09//%20return%20the%20expected%20data%20based%20on%20which%20path%20was%20taken%5B%2A%5D%0A%09%09return%20value%20%21%3D%3D%20undefined%20%3F%20value%20%3A%20key%3B%0A%09%7D%2C%0A%09remove%3A%20function%28%20owner%2C%20key%20%29%20%7B%0A%09%09var%20i%2C%0A%09%09%09cache%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%0A%09%09if%20%28%20cache%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20key%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09//%20Support%20array%20or%20space%20separated%20string%20of%20keys%0A%09%09%09if%20%28%20Array.isArray%28%20key%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20key%20is%20an%20array%20of%20keys...%0A%09%09%09%09//%20We%20always%20set%20camelCase%20keys%2C%20so%20remove%20that.%0A%09%09%09%09key%20%3D%20key.map%28%20camelCase%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09key%20%3D%20camelCase%28%20key%20%29%3B%0A%0A%09%09%09%09//%20If%20a%20key%20with%20the%20spaces%20exists%2C%20use%20it.%0A%09%09%09%09//%20Otherwise%2C%20create%20an%20array%20by%20matching%20non-whitespace%0A%09%09%09%09key%20%3D%20key%20in%20cache%20%3F%0A%09%09%09%09%09%5B%20key%20%5D%20%3A%0A%09%09%09%09%09%28%20key.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09i%20%3D%20key.length%3B%0A%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09delete%20cache%5B%20key%5B%20i%20%5D%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Remove%20the%20expando%20if%20there%27s%20no%20more%20data%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%7C%7C%20jQuery.isEmptyObject%28%20cache%20%29%20%29%20%7B%0A%0A%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%0A%09%09%09//%20Webkit%20%26%20Blink%20performance%20suffers%20when%20deleting%20properties%0A%09%09%09//%20from%20DOM%20nodes%2C%20so%20set%20to%20undefined%20instead%0A%09%09%09//%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D378607%20%28bug%20restricted%29%0A%09%09%09if%20%28%20owner.nodeType%20%29%20%7B%0A%09%09%09%09owner%5B%20this.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09delete%20owner%5B%20this.expando%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%09hasData%3A%20function%28%20owner%20%29%20%7B%0A%09%09var%20cache%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%09%09return%20cache%20%21%3D%3D%20undefined%20%26%26%20%21jQuery.isEmptyObject%28%20cache%20%29%3B%0A%09%7D%0A%7D%3B%0Avar%20dataPriv%20%3D%20new%20Data%28%29%3B%0A%0Avar%20dataUser%20%3D%20new%20Data%28%29%3B%0A%0A%0A%0A//%09Implementation%20Summary%0A//%0A//%091.%20Enforce%20API%20surface%20and%20semantic%20compatibility%20with%201.9.x%20branch%0A//%092.%20Improve%20the%20module%27s%20maintainability%20by%20reducing%20the%20storage%0A//%09%09paths%20to%20a%20single%20mechanism.%0A//%093.%20Use%20the%20same%20single%20mechanism%20to%20support%20%22private%22%20and%20%22user%22%20data.%0A//%094.%20_Never_%20expose%20%22private%22%20data%20to%20user%20code%20%28TODO%3A%20Drop%20_data%2C%20_removeData%29%0A//%095.%20Avoid%20exposing%20implementation%20details%20on%20user%20objects%20%28eg.%20expando%20properties%29%0A//%096.%20Provide%20a%20clear%20path%20for%20implementation%20upgrade%20to%20WeakMap%20in%202014%0A%0Avar%20rbrace%20%3D%20/%5E%28%3F%3A%5C%7B%5B%5Cw%5CW%5D%2A%5C%7D%7C%5C%5B%5B%5Cw%5CW%5D%2A%5C%5D%29%24/%2C%0A%09rmultiDash%20%3D%20/%5BA-Z%5D/g%3B%0A%0Afunction%20getData%28%20data%20%29%20%7B%0A%09if%20%28%20data%20%3D%3D%3D%20%22true%22%20%29%20%7B%0A%09%09return%20true%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%3D%20%22false%22%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%3D%20%22null%22%20%29%20%7B%0A%09%09return%20null%3B%0A%09%7D%0A%0A%09//%20Only%20convert%20to%20a%20number%20if%20it%20doesn%27t%20change%20the%20string%0A%09if%20%28%20data%20%3D%3D%3D%20%2Bdata%20%2B%20%22%22%20%29%20%7B%0A%09%09return%20%2Bdata%3B%0A%09%7D%0A%0A%09if%20%28%20rbrace.test%28%20data%20%29%20%29%20%7B%0A%09%09return%20JSON.parse%28%20data%20%29%3B%0A%09%7D%0A%0A%09return%20data%3B%0A%7D%0A%0Afunction%20dataAttr%28%20elem%2C%20key%2C%20data%20%29%20%7B%0A%09var%20name%3B%0A%0A%09//%20If%20nothing%20was%20found%20internally%2C%20try%20to%20fetch%20any%0A%09//%20data%20from%20the%20HTML5%20data-%2A%20attribute%0A%09if%20%28%20data%20%3D%3D%3D%20undefined%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09name%20%3D%20%22data-%22%20%2B%20key.replace%28%20rmultiDash%2C%20%22-%24%26%22%20%29.toLowerCase%28%29%3B%0A%09%09data%20%3D%20elem.getAttribute%28%20name%20%29%3B%0A%0A%09%09if%20%28%20typeof%20data%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09data%20%3D%20getData%28%20data%20%29%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%0A%09%09%09//%20Make%20sure%20we%20set%20the%20data%20so%20it%20isn%27t%20changed%20later%0A%09%09%09dataUser.set%28%20elem%2C%20key%2C%20data%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%0A%09%7D%0A%09return%20data%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%09hasData%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dataUser.hasData%28%20elem%20%29%20%7C%7C%20dataPriv.hasData%28%20elem%20%29%3B%0A%09%7D%2C%0A%0A%09data%3A%20function%28%20elem%2C%20name%2C%20data%20%29%20%7B%0A%09%09return%20dataUser.access%28%20elem%2C%20name%2C%20data%20%29%3B%0A%09%7D%2C%0A%0A%09removeData%3A%20function%28%20elem%2C%20name%20%29%20%7B%0A%09%09dataUser.remove%28%20elem%2C%20name%20%29%3B%0A%09%7D%2C%0A%0A%09//%20TODO%3A%20Now%20that%20all%20calls%20to%20_data%20and%20_removeData%20have%20been%20replaced%0A%09//%20with%20direct%20calls%20to%20dataPriv%20methods%2C%20these%20can%20be%20deprecated.%0A%09_data%3A%20function%28%20elem%2C%20name%2C%20data%20%29%20%7B%0A%09%09return%20dataPriv.access%28%20elem%2C%20name%2C%20data%20%29%3B%0A%09%7D%2C%0A%0A%09_removeData%3A%20function%28%20elem%2C%20name%20%29%20%7B%0A%09%09dataPriv.remove%28%20elem%2C%20name%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09data%3A%20function%28%20key%2C%20value%20%29%20%7B%0A%09%09var%20i%2C%20name%2C%20data%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%2C%0A%09%09%09attrs%20%3D%20elem%20%26%26%20elem.attributes%3B%0A%0A%09%09//%20Gets%20all%20values%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20this.length%20%29%20%7B%0A%09%09%09%09data%20%3D%20dataUser.get%28%20elem%20%29%3B%0A%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%21dataPriv.get%28%20elem%2C%20%22hasDataAttrs%22%20%29%20%29%20%7B%0A%09%09%09%09%09i%20%3D%20attrs.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%2011%20only%0A%09%09%09%09%09%09//%20The%20attrs%20elements%20can%20be%20null%20%28%2314894%29%0A%09%09%09%09%09%09if%20%28%20attrs%5B%20i%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09name%20%3D%20attrs%5B%20i%20%5D.name%3B%0A%09%09%09%09%09%09%09if%20%28%20name.indexOf%28%20%22data-%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09%09%09%09%09%09name%20%3D%20camelCase%28%20name.slice%28%205%20%29%20%29%3B%0A%09%09%09%09%09%09%09%09dataAttr%28%20elem%2C%20name%2C%20data%5B%20name%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09dataPriv.set%28%20elem%2C%20%22hasDataAttrs%22%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09return%20data%3B%0A%09%09%7D%0A%0A%09%09//%20Sets%20multiple%20values%0A%09%09if%20%28%20typeof%20key%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09%09dataUser.set%28%20this%2C%20key%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09var%20data%3B%0A%0A%09%09%09//%20The%20calling%20jQuery%20object%20%28element%20matches%29%20is%20not%20empty%0A%09%09%09//%20%28and%20therefore%20has%20an%20element%20appears%20at%20this%5B%200%20%5D%29%20and%20the%0A%09%09%09//%20%60value%60%20parameter%20was%20not%20undefined.%20An%20empty%20jQuery%20object%0A%09%09%09//%20will%20result%20in%20%60undefined%60%20for%20elem%20%3D%20this%5B%200%20%5D%20which%20will%0A%09%09%09//%20throw%20an%20exception%20if%20an%20attempt%20to%20read%20a%20data%20cache%20is%20made.%0A%09%09%09if%20%28%20elem%20%26%26%20value%20%3D%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09//%20Attempt%20to%20get%20data%20from%20the%20cache%0A%09%09%09%09//%20The%20key%20will%20always%20be%20camelCased%20in%20Data%0A%09%09%09%09data%20%3D%20dataUser.get%28%20elem%2C%20key%20%29%3B%0A%09%09%09%09if%20%28%20data%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09return%20data%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Attempt%20to%20%22discover%22%20the%20data%20in%0A%09%09%09%09//%20HTML5%20custom%20data-%2A%20attrs%0A%09%09%09%09data%20%3D%20dataAttr%28%20elem%2C%20key%20%29%3B%0A%09%09%09%09if%20%28%20data%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09return%20data%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20We%20tried%20really%20hard%2C%20but%20the%20data%20doesn%27t%20exist.%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Set%20the%20data...%0A%09%09%09this.each%28%20function%28%29%20%7B%0A%0A%09%09%09%09//%20We%20always%20store%20the%20camelCased%20key%0A%09%09%09%09dataUser.set%28%20this%2C%20key%2C%20value%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%3E%201%2C%20null%2C%20true%20%29%3B%0A%09%7D%2C%0A%0A%09removeData%3A%20function%28%20key%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09dataUser.remove%28%20this%2C%20key%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery.extend%28%20%7B%0A%09queue%3A%20function%28%20elem%2C%20type%2C%20data%20%29%20%7B%0A%09%09var%20queue%3B%0A%0A%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09type%20%3D%20%28%20type%20%7C%7C%20%22fx%22%20%29%20%2B%20%22queue%22%3B%0A%09%09%09queue%20%3D%20dataPriv.get%28%20elem%2C%20type%20%29%3B%0A%0A%09%09%09//%20Speed%20up%20dequeue%20by%20getting%20out%20quickly%20if%20this%20is%20just%20a%20lookup%0A%09%09%09if%20%28%20data%20%29%20%7B%0A%09%09%09%09if%20%28%20%21queue%20%7C%7C%20Array.isArray%28%20data%20%29%20%29%20%7B%0A%09%09%09%09%09queue%20%3D%20dataPriv.access%28%20elem%2C%20type%2C%20jQuery.makeArray%28%20data%20%29%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09queue.push%28%20data%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20queue%20%7C%7C%20%5B%5D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09dequeue%3A%20function%28%20elem%2C%20type%20%29%20%7B%0A%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09%09var%20queue%20%3D%20jQuery.queue%28%20elem%2C%20type%20%29%2C%0A%09%09%09startLength%20%3D%20queue.length%2C%0A%09%09%09fn%20%3D%20queue.shift%28%29%2C%0A%09%09%09hooks%20%3D%20jQuery._queueHooks%28%20elem%2C%20type%20%29%2C%0A%09%09%09next%20%3D%20function%28%29%20%7B%0A%09%09%09%09jQuery.dequeue%28%20elem%2C%20type%20%29%3B%0A%09%09%09%7D%3B%0A%0A%09%09//%20If%20the%20fx%20queue%20is%20dequeued%2C%20always%20remove%20the%20progress%20sentinel%0A%09%09if%20%28%20fn%20%3D%3D%3D%20%22inprogress%22%20%29%20%7B%0A%09%09%09fn%20%3D%20queue.shift%28%29%3B%0A%09%09%09startLength--%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20fn%20%29%20%7B%0A%0A%09%09%09//%20Add%20a%20progress%20sentinel%20to%20prevent%20the%20fx%20queue%20from%20being%0A%09%09%09//%20automatically%20dequeued%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22fx%22%20%29%20%7B%0A%09%09%09%09queue.unshift%28%20%22inprogress%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Clear%20up%20the%20last%20queue%20stop%20function%0A%09%09%09delete%20hooks.stop%3B%0A%09%09%09fn.call%28%20elem%2C%20next%2C%20hooks%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%21startLength%20%26%26%20hooks%20%29%20%7B%0A%09%09%09hooks.empty.fire%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Not%20public%20-%20generate%20a%20queueHooks%20object%2C%20or%20return%20the%20current%20one%0A%09_queueHooks%3A%20function%28%20elem%2C%20type%20%29%20%7B%0A%09%09var%20key%20%3D%20type%20%2B%20%22queueHooks%22%3B%0A%09%09return%20dataPriv.get%28%20elem%2C%20key%20%29%20%7C%7C%20dataPriv.access%28%20elem%2C%20key%2C%20%7B%0A%09%09%09empty%3A%20jQuery.Callbacks%28%20%22once%20memory%22%20%29.add%28%20function%28%29%20%7B%0A%09%09%09%09dataPriv.remove%28%20elem%2C%20%5B%20type%20%2B%20%22queue%22%2C%20key%20%5D%20%29%3B%0A%09%09%09%7D%20%29%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09queue%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09var%20setter%20%3D%202%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09data%20%3D%20type%3B%0A%09%09%09type%20%3D%20%22fx%22%3B%0A%09%09%09setter--%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20arguments.length%20%3C%20setter%20%29%20%7B%0A%09%09%09return%20jQuery.queue%28%20this%5B%200%20%5D%2C%20type%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20data%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09this%20%3A%0A%09%09%09this.each%28%20function%28%29%20%7B%0A%09%09%09%09var%20queue%20%3D%20jQuery.queue%28%20this%2C%20type%2C%20data%20%29%3B%0A%0A%09%09%09%09//%20Ensure%20a%20hooks%20for%20this%20queue%0A%09%09%09%09jQuery._queueHooks%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09%09if%20%28%20type%20%3D%3D%3D%20%22fx%22%20%26%26%20queue%5B%200%20%5D%20%21%3D%3D%20%22inprogress%22%20%29%20%7B%0A%09%09%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09dequeue%3A%20function%28%20type%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09clearQueue%3A%20function%28%20type%20%29%20%7B%0A%09%09return%20this.queue%28%20type%20%7C%7C%20%22fx%22%2C%20%5B%5D%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Get%20a%20promise%20resolved%20when%20queues%20of%20a%20certain%20type%0A%09//%20are%20emptied%20%28fx%20is%20the%20type%20by%20default%29%0A%09promise%3A%20function%28%20type%2C%20obj%20%29%20%7B%0A%09%09var%20tmp%2C%0A%09%09%09count%20%3D%201%2C%0A%09%09%09defer%20%3D%20jQuery.Deferred%28%29%2C%0A%09%09%09elements%20%3D%20this%2C%0A%09%09%09i%20%3D%20this.length%2C%0A%09%09%09resolve%20%3D%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20%21%28%20--count%20%29%20%29%20%7B%0A%09%09%09%09%09defer.resolveWith%28%20elements%2C%20%5B%20elements%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09obj%20%3D%20type%3B%0A%09%09%09type%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09tmp%20%3D%20dataPriv.get%28%20elements%5B%20i%20%5D%2C%20type%20%2B%20%22queueHooks%22%20%29%3B%0A%09%09%09if%20%28%20tmp%20%26%26%20tmp.empty%20%29%20%7B%0A%09%09%09%09count%2B%2B%3B%0A%09%09%09%09tmp.empty.add%28%20resolve%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09resolve%28%29%3B%0A%09%09return%20defer.promise%28%20obj%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0Avar%20pnum%20%3D%20%28%20/%5B%2B-%5D%3F%28%3F%3A%5Cd%2A%5C.%7C%29%5Cd%2B%28%3F%3A%5BeE%5D%5B%2B-%5D%3F%5Cd%2B%7C%29/%20%29.source%3B%0A%0Avar%20rcssNum%20%3D%20new%20RegExp%28%20%22%5E%28%3F%3A%28%5B%2B-%5D%29%3D%7C%29%28%22%20%2B%20pnum%20%2B%20%22%29%28%5Ba-z%25%5D%2A%29%24%22%2C%20%22i%22%20%29%3B%0A%0A%0Avar%20cssExpand%20%3D%20%5B%20%22Top%22%2C%20%22Right%22%2C%20%22Bottom%22%2C%20%22Left%22%20%5D%3B%0A%0Avar%20documentElement%20%3D%20document.documentElement%3B%0A%0A%0A%0A%09var%20isAttached%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.contains%28%20elem.ownerDocument%2C%20elem%20%29%3B%0A%09%09%7D%2C%0A%09%09composed%20%3D%20%7B%20composed%3A%20true%20%7D%3B%0A%0A%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%2C%20iOS%2010.0%20-%2010.2%20only%0A%09//%20Check%20attachment%20across%20shadow%20DOM%20boundaries%20when%20possible%20%28gh-3504%29%0A%09//%20Support%3A%20iOS%2010.0-10.2%20only%0A%09//%20Early%20iOS%2010%20versions%20support%20%60attachShadow%60%20but%20not%20%60getRootNode%60%2C%0A%09//%20leading%20to%20errors.%20We%20need%20to%20check%20for%20%60getRootNode%60.%0A%09if%20%28%20documentElement.getRootNode%20%29%20%7B%0A%09%09isAttached%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.contains%28%20elem.ownerDocument%2C%20elem%20%29%20%7C%7C%0A%09%09%09%09elem.getRootNode%28%20composed%20%29%20%3D%3D%3D%20elem.ownerDocument%3B%0A%09%09%7D%3B%0A%09%7D%0Avar%20isHiddenWithinTree%20%3D%20function%28%20elem%2C%20el%20%29%20%7B%0A%0A%09%09//%20isHiddenWithinTree%20might%20be%20called%20from%20jQuery%23filter%20function%3B%0A%09%09//%20in%20that%20case%2C%20element%20will%20be%20second%20argument%0A%09%09elem%20%3D%20el%20%7C%7C%20elem%3B%0A%0A%09%09//%20Inline%20style%20trumps%20all%0A%09%09return%20elem.style.display%20%3D%3D%3D%20%22none%22%20%7C%7C%0A%09%09%09elem.style.display%20%3D%3D%3D%20%22%22%20%26%26%0A%0A%09%09%09//%20Otherwise%2C%20check%20computed%20style%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D43%20-%2045%0A%09%09%09//%20Disconnected%20elements%20can%20have%20computed%20display%3A%20none%2C%20so%20first%20confirm%20that%20elem%20is%0A%09%09%09//%20in%20the%20document.%0A%09%09%09isAttached%28%20elem%20%29%20%26%26%0A%0A%09%09%09jQuery.css%28%20elem%2C%20%22display%22%20%29%20%3D%3D%3D%20%22none%22%3B%0A%09%7D%3B%0A%0A%0A%0Afunction%20adjustCSS%28%20elem%2C%20prop%2C%20valueParts%2C%20tween%20%29%20%7B%0A%09var%20adjusted%2C%20scale%2C%0A%09%09maxIterations%20%3D%2020%2C%0A%09%09currentValue%20%3D%20tween%20%3F%0A%09%09%09function%28%29%20%7B%0A%09%09%09%09return%20tween.cur%28%29%3B%0A%09%09%09%7D%20%3A%0A%09%09%09function%28%29%20%7B%0A%09%09%09%09return%20jQuery.css%28%20elem%2C%20prop%2C%20%22%22%20%29%3B%0A%09%09%09%7D%2C%0A%09%09initial%20%3D%20currentValue%28%29%2C%0A%09%09unit%20%3D%20valueParts%20%26%26%20valueParts%5B%203%20%5D%20%7C%7C%20%28%20jQuery.cssNumber%5B%20prop%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%2C%0A%0A%09%09//%20Starting%20value%20computation%20is%20required%20for%20potential%20unit%20mismatches%0A%09%09initialInUnit%20%3D%20elem.nodeType%20%26%26%0A%09%09%09%28%20jQuery.cssNumber%5B%20prop%20%5D%20%7C%7C%20unit%20%21%3D%3D%20%22px%22%20%26%26%20%2Binitial%20%29%20%26%26%0A%09%09%09rcssNum.exec%28%20jQuery.css%28%20elem%2C%20prop%20%29%20%29%3B%0A%0A%09if%20%28%20initialInUnit%20%26%26%20initialInUnit%5B%203%20%5D%20%21%3D%3D%20unit%20%29%20%7B%0A%0A%09%09//%20Support%3A%20Firefox%20%3C%3D54%0A%09%09//%20Halve%20the%20iteration%20target%20value%20to%20prevent%20interference%20from%20CSS%20upper%20bounds%20%28gh-2144%29%0A%09%09initial%20%3D%20initial%20/%202%3B%0A%0A%09%09//%20Trust%20units%20reported%20by%20jQuery.css%0A%09%09unit%20%3D%20unit%20%7C%7C%20initialInUnit%5B%203%20%5D%3B%0A%0A%09%09//%20Iteratively%20approximate%20from%20a%20nonzero%20starting%20point%0A%09%09initialInUnit%20%3D%20%2Binitial%20%7C%7C%201%3B%0A%0A%09%09while%20%28%20maxIterations--%20%29%20%7B%0A%0A%09%09%09//%20Evaluate%20and%20update%20our%20best%20guess%20%28doubling%20guesses%20that%20zero%20out%29.%0A%09%09%09//%20Finish%20if%20the%20scale%20equals%20or%20crosses%201%20%28making%20the%20old%2Anew%20product%20non-positive%29.%0A%09%09%09jQuery.style%28%20elem%2C%20prop%2C%20initialInUnit%20%2B%20unit%20%29%3B%0A%09%09%09if%20%28%20%28%201%20-%20scale%20%29%20%2A%20%28%201%20-%20%28%20scale%20%3D%20currentValue%28%29%20/%20initial%20%7C%7C%200.5%20%29%20%29%20%3C%3D%200%20%29%20%7B%0A%09%09%09%09maxIterations%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%09initialInUnit%20%3D%20initialInUnit%20/%20scale%3B%0A%0A%09%09%7D%0A%0A%09%09initialInUnit%20%3D%20initialInUnit%20%2A%202%3B%0A%09%09jQuery.style%28%20elem%2C%20prop%2C%20initialInUnit%20%2B%20unit%20%29%3B%0A%0A%09%09//%20Make%20sure%20we%20update%20the%20tween%20properties%20later%20on%0A%09%09valueParts%20%3D%20valueParts%20%7C%7C%20%5B%5D%3B%0A%09%7D%0A%0A%09if%20%28%20valueParts%20%29%20%7B%0A%09%09initialInUnit%20%3D%20%2BinitialInUnit%20%7C%7C%20%2Binitial%20%7C%7C%200%3B%0A%0A%09%09//%20Apply%20relative%20offset%20%28%2B%3D/-%3D%29%20if%20specified%0A%09%09adjusted%20%3D%20valueParts%5B%201%20%5D%20%3F%0A%09%09%09initialInUnit%20%2B%20%28%20valueParts%5B%201%20%5D%20%2B%201%20%29%20%2A%20valueParts%5B%202%20%5D%20%3A%0A%09%09%09%2BvalueParts%5B%202%20%5D%3B%0A%09%09if%20%28%20tween%20%29%20%7B%0A%09%09%09tween.unit%20%3D%20unit%3B%0A%09%09%09tween.start%20%3D%20initialInUnit%3B%0A%09%09%09tween.end%20%3D%20adjusted%3B%0A%09%09%7D%0A%09%7D%0A%09return%20adjusted%3B%0A%7D%0A%0A%0Avar%20defaultDisplayMap%20%3D%20%7B%7D%3B%0A%0Afunction%20getDefaultDisplay%28%20elem%20%29%20%7B%0A%09var%20temp%2C%0A%09%09doc%20%3D%20elem.ownerDocument%2C%0A%09%09nodeName%20%3D%20elem.nodeName%2C%0A%09%09display%20%3D%20defaultDisplayMap%5B%20nodeName%20%5D%3B%0A%0A%09if%20%28%20display%20%29%20%7B%0A%09%09return%20display%3B%0A%09%7D%0A%0A%09temp%20%3D%20doc.body.appendChild%28%20doc.createElement%28%20nodeName%20%29%20%29%3B%0A%09display%20%3D%20jQuery.css%28%20temp%2C%20%22display%22%20%29%3B%0A%0A%09temp.parentNode.removeChild%28%20temp%20%29%3B%0A%0A%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09display%20%3D%20%22block%22%3B%0A%09%7D%0A%09defaultDisplayMap%5B%20nodeName%20%5D%20%3D%20display%3B%0A%0A%09return%20display%3B%0A%7D%0A%0Afunction%20showHide%28%20elements%2C%20show%20%29%20%7B%0A%09var%20display%2C%20elem%2C%0A%09%09values%20%3D%20%5B%5D%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20elements.length%3B%0A%0A%09//%20Determine%20new%20display%20value%20for%20elements%20that%20need%20to%20change%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09elem%20%3D%20elements%5B%20index%20%5D%3B%0A%09%09if%20%28%20%21elem.style%20%29%20%7B%0A%09%09%09continue%3B%0A%09%09%7D%0A%0A%09%09display%20%3D%20elem.style.display%3B%0A%09%09if%20%28%20show%20%29%20%7B%0A%0A%09%09%09//%20Since%20we%20force%20visibility%20upon%20cascade-hidden%20elements%2C%20an%20immediate%20%28and%20slow%29%0A%09%09%09//%20check%20is%20required%20in%20this%20first%20loop%20unless%20we%20have%20a%20nonempty%20display%20value%20%28either%0A%09%09%09//%20inline%20or%20about-to-be-restored%29%0A%09%09%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20dataPriv.get%28%20elem%2C%20%22display%22%20%29%20%7C%7C%20null%3B%0A%09%09%09%09if%20%28%20%21values%5B%20index%20%5D%20%29%20%7B%0A%09%09%09%09%09elem.style.display%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09if%20%28%20elem.style.display%20%3D%3D%3D%20%22%22%20%26%26%20isHiddenWithinTree%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20getDefaultDisplay%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28%20display%20%21%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20%22none%22%3B%0A%0A%09%09%09%09//%20Remember%20what%20we%27re%20overwriting%0A%09%09%09%09dataPriv.set%28%20elem%2C%20%22display%22%2C%20display%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Set%20the%20display%20of%20the%20elements%20in%20a%20second%20loop%20to%20avoid%20constant%20reflow%0A%09for%20%28%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09if%20%28%20values%5B%20index%20%5D%20%21%3D%20null%20%29%20%7B%0A%09%09%09elements%5B%20index%20%5D.style.display%20%3D%20values%5B%20index%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elements%3B%0A%7D%0A%0AjQuery.fn.extend%28%20%7B%0A%09show%3A%20function%28%29%20%7B%0A%09%09return%20showHide%28%20this%2C%20true%20%29%3B%0A%09%7D%2C%0A%09hide%3A%20function%28%29%20%7B%0A%09%09return%20showHide%28%20this%20%29%3B%0A%09%7D%2C%0A%09toggle%3A%20function%28%20state%20%29%20%7B%0A%09%09if%20%28%20typeof%20state%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09%09return%20state%20%3F%20this.show%28%29%20%3A%20this.hide%28%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09if%20%28%20isHiddenWithinTree%28%20this%20%29%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.show%28%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.hide%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0Avar%20rcheckableType%20%3D%20%28%20/%5E%28%3F%3Acheckbox%7Cradio%29%24/i%20%29%3B%0A%0Avar%20rtagName%20%3D%20%28%20/%3C%28%5Ba-z%5D%5B%5E%5C/%5C0%3E%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%29/i%20%29%3B%0A%0Avar%20rscriptType%20%3D%20%28%20/%5E%24%7C%5Emodule%24%7C%5C/%28%3F%3Ajava%7Cecma%29script/i%20%29%3B%0A%0A%0A%0A%28%20function%28%29%20%7B%0A%09var%20fragment%20%3D%20document.createDocumentFragment%28%29%2C%0A%09%09div%20%3D%20fragment.appendChild%28%20document.createElement%28%20%22div%22%20%29%20%29%2C%0A%09%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%0A%09//%20Support%3A%20Android%204.0%20-%204.3%20only%0A%09//%20Check%20state%20lost%20if%20the%20name%20is%20set%20%28%2311217%29%0A%09//%20Support%3A%20Windows%20Web%20Apps%20%28WWA%29%0A%09//%20%60name%60%20and%20%60type%60%20must%20use%20.setAttribute%20for%20WWA%20%28%2314901%29%0A%09input.setAttribute%28%20%22type%22%2C%20%22radio%22%20%29%3B%0A%09input.setAttribute%28%20%22checked%22%2C%20%22checked%22%20%29%3B%0A%09input.setAttribute%28%20%22name%22%2C%20%22t%22%20%29%3B%0A%0A%09div.appendChild%28%20input%20%29%3B%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.1%20only%0A%09//%20Older%20WebKit%20doesn%27t%20clone%20checked%20state%20correctly%20in%20fragments%0A%09support.checkClone%20%3D%20div.cloneNode%28%20true%20%29.cloneNode%28%20true%20%29.lastChild.checked%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20Make%20sure%20textarea%20%28and%20checkbox%29%20defaultValue%20is%20properly%20cloned%0A%09div.innerHTML%20%3D%20%22%3Ctextarea%3Ex%3C/textarea%3E%22%3B%0A%09support.noCloneChecked%20%3D%20%21%21div.cloneNode%28%20true%20%29.lastChild.defaultValue%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09//%20IE%20%3C%3D9%20replaces%20%3Coption%3E%20tags%20with%20their%20contents%20when%20inserted%20outside%20of%0A%09//%20the%20select%20element.%0A%09div.innerHTML%20%3D%20%22%3Coption%3E%3C/option%3E%22%3B%0A%09support.option%20%3D%20%21%21div.lastChild%3B%0A%7D%20%29%28%29%3B%0A%0A%0A//%20We%20have%20to%20close%20these%20tags%20to%20support%20XHTML%20%28%2313200%29%0Avar%20wrapMap%20%3D%20%7B%0A%0A%09//%20XHTML%20parsers%20do%20not%20magically%20insert%20elements%20in%20the%0A%09//%20same%20way%20that%20tag%20soup%20parsers%20do.%20So%20we%20cannot%20shorten%0A%09//%20this%20by%20omitting%20%3Ctbody%3E%20or%20other%20required%20elements.%0A%09thead%3A%20%5B%201%2C%20%22%3Ctable%3E%22%2C%20%22%3C/table%3E%22%20%5D%2C%0A%09col%3A%20%5B%202%2C%20%22%3Ctable%3E%3Ccolgroup%3E%22%2C%20%22%3C/colgroup%3E%3C/table%3E%22%20%5D%2C%0A%09tr%3A%20%5B%202%2C%20%22%3Ctable%3E%3Ctbody%3E%22%2C%20%22%3C/tbody%3E%3C/table%3E%22%20%5D%2C%0A%09td%3A%20%5B%203%2C%20%22%3Ctable%3E%3Ctbody%3E%3Ctr%3E%22%2C%20%22%3C/tr%3E%3C/tbody%3E%3C/table%3E%22%20%5D%2C%0A%0A%09_default%3A%20%5B%200%2C%20%22%22%2C%20%22%22%20%5D%0A%7D%3B%0A%0AwrapMap.tbody%20%3D%20wrapMap.tfoot%20%3D%20wrapMap.colgroup%20%3D%20wrapMap.caption%20%3D%20wrapMap.thead%3B%0AwrapMap.th%20%3D%20wrapMap.td%3B%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0Aif%20%28%20%21support.option%20%29%20%7B%0A%09wrapMap.optgroup%20%3D%20wrapMap.option%20%3D%20%5B%201%2C%20%22%3Cselect%20multiple%3D%27multiple%27%3E%22%2C%20%22%3C/select%3E%22%20%5D%3B%0A%7D%0A%0A%0Afunction%20getAll%28%20context%2C%20tag%20%29%20%7B%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09//%20Use%20typeof%20to%20avoid%20zero-argument%20method%20invocation%20on%20host%20objects%20%28%2315151%29%0A%09var%20ret%3B%0A%0A%09if%20%28%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09ret%20%3D%20context.getElementsByTagName%28%20tag%20%7C%7C%20%22%2A%22%20%29%3B%0A%0A%09%7D%20else%20if%20%28%20typeof%20context.querySelectorAll%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09ret%20%3D%20context.querySelectorAll%28%20tag%20%7C%7C%20%22%2A%22%20%29%3B%0A%0A%09%7D%20else%20%7B%0A%09%09ret%20%3D%20%5B%5D%3B%0A%09%7D%0A%0A%09if%20%28%20tag%20%3D%3D%3D%20undefined%20%7C%7C%20tag%20%26%26%20nodeName%28%20context%2C%20tag%20%29%20%29%20%7B%0A%09%09return%20jQuery.merge%28%20%5B%20context%20%5D%2C%20ret%20%29%3B%0A%09%7D%0A%0A%09return%20ret%3B%0A%7D%0A%0A%0A//%20Mark%20scripts%20as%20having%20already%20been%20evaluated%0Afunction%20setGlobalEval%28%20elems%2C%20refElements%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09l%20%3D%20elems.length%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09dataPriv.set%28%0A%09%09%09elems%5B%20i%20%5D%2C%0A%09%09%09%22globalEval%22%2C%0A%09%09%09%21refElements%20%7C%7C%20dataPriv.get%28%20refElements%5B%20i%20%5D%2C%20%22globalEval%22%20%29%0A%09%09%29%3B%0A%09%7D%0A%7D%0A%0A%0Avar%20rhtml%20%3D%20/%3C%7C%26%23%3F%5Cw%2B%3B/%3B%0A%0Afunction%20buildFragment%28%20elems%2C%20context%2C%20scripts%2C%20selection%2C%20ignored%20%29%20%7B%0A%09var%20elem%2C%20tmp%2C%20tag%2C%20wrap%2C%20attached%2C%20j%2C%0A%09%09fragment%20%3D%20context.createDocumentFragment%28%29%2C%0A%09%09nodes%20%3D%20%5B%5D%2C%0A%09%09i%20%3D%200%2C%0A%09%09l%20%3D%20elems.length%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09elem%20%3D%20elems%5B%20i%20%5D%3B%0A%0A%09%09if%20%28%20elem%20%7C%7C%20elem%20%3D%3D%3D%200%20%29%20%7B%0A%0A%09%09%09//%20Add%20nodes%20directly%0A%09%09%09if%20%28%20toType%28%20elem%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09jQuery.merge%28%20nodes%2C%20elem.nodeType%20%3F%20%5B%20elem%20%5D%20%3A%20elem%20%29%3B%0A%0A%09%09%09//%20Convert%20non-html%20into%20a%20text%20node%0A%09%09%09%7D%20else%20if%20%28%20%21rhtml.test%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09nodes.push%28%20context.createTextNode%28%20elem%20%29%20%29%3B%0A%0A%09%09%09//%20Convert%20html%20into%20DOM%20nodes%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09tmp%20%3D%20tmp%20%7C%7C%20fragment.appendChild%28%20context.createElement%28%20%22div%22%20%29%20%29%3B%0A%0A%09%09%09%09//%20Deserialize%20a%20standard%20representation%0A%09%09%09%09tag%20%3D%20%28%20rtagName.exec%28%20elem%20%29%20%7C%7C%20%5B%20%22%22%2C%20%22%22%20%5D%20%29%5B%201%20%5D.toLowerCase%28%29%3B%0A%09%09%09%09wrap%20%3D%20wrapMap%5B%20tag%20%5D%20%7C%7C%20wrapMap._default%3B%0A%09%09%09%09tmp.innerHTML%20%3D%20wrap%5B%201%20%5D%20%2B%20jQuery.htmlPrefilter%28%20elem%20%29%20%2B%20wrap%5B%202%20%5D%3B%0A%0A%09%09%09%09//%20Descend%20through%20wrappers%20to%20the%20right%20content%0A%09%09%09%09j%20%3D%20wrap%5B%200%20%5D%3B%0A%09%09%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09%09%09tmp%20%3D%20tmp.lastChild%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09jQuery.merge%28%20nodes%2C%20tmp.childNodes%20%29%3B%0A%0A%09%09%09%09//%20Remember%20the%20top-level%20container%0A%09%09%09%09tmp%20%3D%20fragment.firstChild%3B%0A%0A%09%09%09%09//%20Ensure%20the%20created%20nodes%20are%20orphaned%20%28%2312392%29%0A%09%09%09%09tmp.textContent%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Remove%20wrapper%20from%20fragment%0A%09fragment.textContent%20%3D%20%22%22%3B%0A%0A%09i%20%3D%200%3B%0A%09while%20%28%20%28%20elem%20%3D%20nodes%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09//%20Skip%20elements%20already%20in%20the%20context%20collection%20%28trac-4087%29%0A%09%09if%20%28%20selection%20%26%26%20jQuery.inArray%28%20elem%2C%20selection%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09if%20%28%20ignored%20%29%20%7B%0A%09%09%09%09ignored.push%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%09continue%3B%0A%09%09%7D%0A%0A%09%09attached%20%3D%20isAttached%28%20elem%20%29%3B%0A%0A%09%09//%20Append%20to%20fragment%0A%09%09tmp%20%3D%20getAll%28%20fragment.appendChild%28%20elem%20%29%2C%20%22script%22%20%29%3B%0A%0A%09%09//%20Preserve%20script%20evaluation%20history%0A%09%09if%20%28%20attached%20%29%20%7B%0A%09%09%09setGlobalEval%28%20tmp%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Capture%20executables%0A%09%09if%20%28%20scripts%20%29%20%7B%0A%09%09%09j%20%3D%200%3B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20tmp%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20rscriptType.test%28%20elem.type%20%7C%7C%20%22%22%20%29%20%29%20%7B%0A%09%09%09%09%09scripts.push%28%20elem%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20fragment%3B%0A%7D%0A%0A%0Avar%0A%09rkeyEvent%20%3D%20/%5Ekey/%2C%0A%09rmouseEvent%20%3D%20/%5E%28%3F%3Amouse%7Cpointer%7Ccontextmenu%7Cdrag%7Cdrop%29%7Cclick/%2C%0A%09rtypenamespace%20%3D%20/%5E%28%5B%5E.%5D%2A%29%28%3F%3A%5C.%28.%2B%29%7C%29/%3B%0A%0Afunction%20returnTrue%28%29%20%7B%0A%09return%20true%3B%0A%7D%0A%0Afunction%20returnFalse%28%29%20%7B%0A%09return%20false%3B%0A%7D%0A%0A//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A//%20focus%28%29%20and%20blur%28%29%20are%20asynchronous%2C%20except%20when%20they%20are%20no-op.%0A//%20So%20expect%20focus%20to%20be%20synchronous%20when%20the%20element%20is%20already%20active%2C%0A//%20and%20blur%20to%20be%20synchronous%20when%20the%20element%20is%20not%20already%20active.%0A//%20%28focus%20and%20blur%20are%20always%20synchronous%20in%20other%20supported%20browsers%2C%0A//%20this%20just%20defines%20when%20we%20can%20count%20on%20it%29.%0Afunction%20expectSync%28%20elem%2C%20type%20%29%20%7B%0A%09return%20%28%20elem%20%3D%3D%3D%20safeActiveElement%28%29%20%29%20%3D%3D%3D%20%28%20type%20%3D%3D%3D%20%22focus%22%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0A//%20Accessing%20document.activeElement%20can%20throw%20unexpectedly%0A//%20https%3A//bugs.jquery.com/ticket/13393%0Afunction%20safeActiveElement%28%29%20%7B%0A%09try%20%7B%0A%09%09return%20document.activeElement%3B%0A%09%7D%20catch%20%28%20err%20%29%20%7B%20%7D%0A%7D%0A%0Afunction%20on%28%20elem%2C%20types%2C%20selector%2C%20data%2C%20fn%2C%20one%20%29%20%7B%0A%09var%20origFn%2C%20type%3B%0A%0A%09//%20Types%20can%20be%20a%20map%20of%20types/handlers%0A%09if%20%28%20typeof%20types%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20%28%20types-Object%2C%20selector%2C%20data%20%29%0A%09%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types-Object%2C%20data%20%29%0A%09%09%09data%20%3D%20data%20%7C%7C%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09for%20%28%20type%20in%20types%20%29%20%7B%0A%09%09%09on%28%20elem%2C%20type%2C%20selector%2C%20data%2C%20types%5B%20type%20%5D%2C%20one%20%29%3B%0A%09%09%7D%0A%09%09return%20elem%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%20null%20%26%26%20fn%20%3D%3D%20null%20%29%20%7B%0A%0A%09%09//%20%28%20types%2C%20fn%20%29%0A%09%09fn%20%3D%20selector%3B%0A%09%09data%20%3D%20selector%20%3D%20undefined%3B%0A%09%7D%20else%20if%20%28%20fn%20%3D%3D%20null%20%29%20%7B%0A%09%09if%20%28%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types%2C%20selector%2C%20fn%20%29%0A%09%09%09fn%20%3D%20data%3B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20%28%20types%2C%20data%2C%20fn%20%29%0A%09%09%09fn%20%3D%20data%3B%0A%09%09%09data%20%3D%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%7D%0A%09if%20%28%20fn%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09fn%20%3D%20returnFalse%3B%0A%09%7D%20else%20if%20%28%20%21fn%20%29%20%7B%0A%09%09return%20elem%3B%0A%09%7D%0A%0A%09if%20%28%20one%20%3D%3D%3D%201%20%29%20%7B%0A%09%09origFn%20%3D%20fn%3B%0A%09%09fn%20%3D%20function%28%20event%20%29%20%7B%0A%0A%09%09%09//%20Can%20use%20an%20empty%20set%2C%20since%20event%20contains%20the%20info%0A%09%09%09jQuery%28%29.off%28%20event%20%29%3B%0A%09%09%09return%20origFn.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Use%20same%20guid%20so%20caller%20can%20remove%20using%20origFn%0A%09%09fn.guid%20%3D%20origFn.guid%20%7C%7C%20%28%20origFn.guid%20%3D%20jQuery.guid%2B%2B%20%29%3B%0A%09%7D%0A%09return%20elem.each%28%20function%28%29%20%7B%0A%09%09jQuery.event.add%28%20this%2C%20types%2C%20fn%2C%20data%2C%20selector%20%29%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A/%2A%0A%20%2A%20Helper%20functions%20for%20managing%20events%20--%20not%20part%20of%20the%20public%20interface.%0A%20%2A%20Props%20to%20Dean%20Edwards%27%20addEvent%20library%20for%20many%20of%20the%20ideas.%0A%20%2A/%0AjQuery.event%20%3D%20%7B%0A%0A%09global%3A%20%7B%7D%2C%0A%0A%09add%3A%20function%28%20elem%2C%20types%2C%20handler%2C%20data%2C%20selector%20%29%20%7B%0A%0A%09%09var%20handleObjIn%2C%20eventHandle%2C%20tmp%2C%0A%09%09%09events%2C%20t%2C%20handleObj%2C%0A%09%09%09special%2C%20handlers%2C%20type%2C%20namespaces%2C%20origType%2C%0A%09%09%09elemData%20%3D%20dataPriv.get%28%20elem%20%29%3B%0A%0A%09%09//%20Only%20attach%20events%20to%20objects%20that%20accept%20data%0A%09%09if%20%28%20%21acceptData%28%20elem%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Caller%20can%20pass%20in%20an%20object%20of%20custom%20data%20in%20lieu%20of%20the%20handler%0A%09%09if%20%28%20handler.handler%20%29%20%7B%0A%09%09%09handleObjIn%20%3D%20handler%3B%0A%09%09%09handler%20%3D%20handleObjIn.handler%3B%0A%09%09%09selector%20%3D%20handleObjIn.selector%3B%0A%09%09%7D%0A%0A%09%09//%20Ensure%20that%20invalid%20selectors%20throw%20exceptions%20at%20attach%20time%0A%09%09//%20Evaluate%20against%20documentElement%20in%20case%20elem%20is%20a%20non-element%20node%20%28e.g.%2C%20document%29%0A%09%09if%20%28%20selector%20%29%20%7B%0A%09%09%09jQuery.find.matchesSelector%28%20documentElement%2C%20selector%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20sure%20that%20the%20handler%20has%20a%20unique%20ID%2C%20used%20to%20find/remove%20it%20later%0A%09%09if%20%28%20%21handler.guid%20%29%20%7B%0A%09%09%09handler.guid%20%3D%20jQuery.guid%2B%2B%3B%0A%09%09%7D%0A%0A%09%09//%20Init%20the%20element%27s%20event%20structure%20and%20main%20handler%2C%20if%20this%20is%20the%20first%0A%09%09if%20%28%20%21%28%20events%20%3D%20elemData.events%20%29%20%29%20%7B%0A%09%09%09events%20%3D%20elemData.events%20%3D%20Object.create%28%20null%20%29%3B%0A%09%09%7D%0A%09%09if%20%28%20%21%28%20eventHandle%20%3D%20elemData.handle%20%29%20%29%20%7B%0A%09%09%09eventHandle%20%3D%20elemData.handle%20%3D%20function%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20Discard%20the%20second%20event%20of%20a%20jQuery.event.trigger%28%29%20and%0A%09%09%09%09//%20when%20an%20event%20is%20called%20after%20a%20page%20has%20unloaded%0A%09%09%09%09return%20typeof%20jQuery%20%21%3D%3D%20%22undefined%22%20%26%26%20jQuery.event.triggered%20%21%3D%3D%20e.type%20%3F%0A%09%09%09%09%09jQuery.event.dispatch.apply%28%20elem%2C%20arguments%20%29%20%3A%20undefined%3B%0A%09%09%09%7D%3B%0A%09%09%7D%0A%0A%09%09//%20Handle%20multiple%20events%20separated%20by%20a%20space%0A%09%09types%20%3D%20%28%20types%20%7C%7C%20%22%22%20%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%09%09t%20%3D%20types.length%3B%0A%09%09while%20%28%20t--%20%29%20%7B%0A%09%09%09tmp%20%3D%20rtypenamespace.exec%28%20types%5B%20t%20%5D%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09%09type%20%3D%20origType%20%3D%20tmp%5B%201%20%5D%3B%0A%09%09%09namespaces%20%3D%20%28%20tmp%5B%202%20%5D%20%7C%7C%20%22%22%20%29.split%28%20%22.%22%20%29.sort%28%29%3B%0A%0A%09%09%09//%20There%20%2Amust%2A%20be%20a%20type%2C%20no%20attaching%20namespace-only%20handlers%0A%09%09%09if%20%28%20%21type%20%29%20%7B%0A%09%09%09%09continue%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20event%20changes%20its%20type%2C%20use%20the%20special%20event%20handlers%20for%20the%20changed%20type%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09//%20If%20selector%20defined%2C%20determine%20special%20event%20api%20type%2C%20otherwise%20given%20type%0A%09%09%09type%20%3D%20%28%20selector%20%3F%20special.delegateType%20%3A%20special.bindType%20%29%20%7C%7C%20type%3B%0A%0A%09%09%09//%20Update%20special%20based%20on%20newly%20reset%20type%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09//%20handleObj%20is%20passed%20to%20all%20event%20handlers%0A%09%09%09handleObj%20%3D%20jQuery.extend%28%20%7B%0A%09%09%09%09type%3A%20type%2C%0A%09%09%09%09origType%3A%20origType%2C%0A%09%09%09%09data%3A%20data%2C%0A%09%09%09%09handler%3A%20handler%2C%0A%09%09%09%09guid%3A%20handler.guid%2C%0A%09%09%09%09selector%3A%20selector%2C%0A%09%09%09%09needsContext%3A%20selector%20%26%26%20jQuery.expr.match.needsContext.test%28%20selector%20%29%2C%0A%09%09%09%09namespace%3A%20namespaces.join%28%20%22.%22%20%29%0A%09%09%09%7D%2C%20handleObjIn%20%29%3B%0A%0A%09%09%09//%20Init%20the%20event%20handler%20queue%20if%20we%27re%20the%20first%0A%09%09%09if%20%28%20%21%28%20handlers%20%3D%20events%5B%20type%20%5D%20%29%20%29%20%7B%0A%09%09%09%09handlers%20%3D%20events%5B%20type%20%5D%20%3D%20%5B%5D%3B%0A%09%09%09%09handlers.delegateCount%20%3D%200%3B%0A%0A%09%09%09%09//%20Only%20use%20addEventListener%20if%20the%20special%20events%20handler%20returns%20false%0A%09%09%09%09if%20%28%20%21special.setup%20%7C%7C%0A%09%09%09%09%09special.setup.call%28%20elem%2C%20data%2C%20namespaces%2C%20eventHandle%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09if%20%28%20elem.addEventListener%20%29%20%7B%0A%09%09%09%09%09%09elem.addEventListener%28%20type%2C%20eventHandle%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20special.add%20%29%20%7B%0A%09%09%09%09special.add.call%28%20elem%2C%20handleObj%20%29%3B%0A%0A%09%09%09%09if%20%28%20%21handleObj.handler.guid%20%29%20%7B%0A%09%09%09%09%09handleObj.handler.guid%20%3D%20handler.guid%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20to%20the%20element%27s%20handler%20list%2C%20delegates%20in%20front%0A%09%09%09if%20%28%20selector%20%29%20%7B%0A%09%09%09%09handlers.splice%28%20handlers.delegateCount%2B%2B%2C%200%2C%20handleObj%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09handlers.push%28%20handleObj%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Keep%20track%20of%20which%20events%20have%20ever%20been%20used%2C%20for%20event%20optimization%0A%09%09%09jQuery.event.global%5B%20type%20%5D%20%3D%20true%3B%0A%09%09%7D%0A%0A%09%7D%2C%0A%0A%09//%20Detach%20an%20event%20or%20set%20of%20events%20from%20an%20element%0A%09remove%3A%20function%28%20elem%2C%20types%2C%20handler%2C%20selector%2C%20mappedTypes%20%29%20%7B%0A%0A%09%09var%20j%2C%20origCount%2C%20tmp%2C%0A%09%09%09events%2C%20t%2C%20handleObj%2C%0A%09%09%09special%2C%20handlers%2C%20type%2C%20namespaces%2C%20origType%2C%0A%09%09%09elemData%20%3D%20dataPriv.hasData%28%20elem%20%29%20%26%26%20dataPriv.get%28%20elem%20%29%3B%0A%0A%09%09if%20%28%20%21elemData%20%7C%7C%20%21%28%20events%20%3D%20elemData.events%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Once%20for%20each%20type.namespace%20in%20types%3B%20type%20may%20be%20omitted%0A%09%09types%20%3D%20%28%20types%20%7C%7C%20%22%22%20%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%09%09t%20%3D%20types.length%3B%0A%09%09while%20%28%20t--%20%29%20%7B%0A%09%09%09tmp%20%3D%20rtypenamespace.exec%28%20types%5B%20t%20%5D%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09%09type%20%3D%20origType%20%3D%20tmp%5B%201%20%5D%3B%0A%09%09%09namespaces%20%3D%20%28%20tmp%5B%202%20%5D%20%7C%7C%20%22%22%20%29.split%28%20%22.%22%20%29.sort%28%29%3B%0A%0A%09%09%09//%20Unbind%20all%20events%20%28on%20this%20namespace%2C%20if%20provided%29%20for%20the%20element%0A%09%09%09if%20%28%20%21type%20%29%20%7B%0A%09%09%09%09for%20%28%20type%20in%20events%20%29%20%7B%0A%09%09%09%09%09jQuery.event.remove%28%20elem%2C%20type%20%2B%20types%5B%20t%20%5D%2C%20handler%2C%20selector%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09continue%3B%0A%09%09%09%7D%0A%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09%09type%20%3D%20%28%20selector%20%3F%20special.delegateType%20%3A%20special.bindType%20%29%20%7C%7C%20type%3B%0A%09%09%09handlers%20%3D%20events%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09tmp%20%3D%20tmp%5B%202%20%5D%20%26%26%0A%09%09%09%09new%20RegExp%28%20%22%28%5E%7C%5C%5C.%29%22%20%2B%20namespaces.join%28%20%22%5C%5C.%28%3F%3A.%2A%5C%5C.%7C%29%22%20%29%20%2B%20%22%28%5C%5C.%7C%24%29%22%20%29%3B%0A%0A%09%09%09//%20Remove%20matching%20events%0A%09%09%09origCount%20%3D%20j%20%3D%20handlers.length%3B%0A%09%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09%09handleObj%20%3D%20handlers%5B%20j%20%5D%3B%0A%0A%09%09%09%09if%20%28%20%28%20mappedTypes%20%7C%7C%20origType%20%3D%3D%3D%20handleObj.origType%20%29%20%26%26%0A%09%09%09%09%09%28%20%21handler%20%7C%7C%20handler.guid%20%3D%3D%3D%20handleObj.guid%20%29%20%26%26%0A%09%09%09%09%09%28%20%21tmp%20%7C%7C%20tmp.test%28%20handleObj.namespace%20%29%20%29%20%26%26%0A%09%09%09%09%09%28%20%21selector%20%7C%7C%20selector%20%3D%3D%3D%20handleObj.selector%20%7C%7C%0A%09%09%09%09%09%09selector%20%3D%3D%3D%20%22%2A%2A%22%20%26%26%20handleObj.selector%20%29%20%29%20%7B%0A%09%09%09%09%09handlers.splice%28%20j%2C%201%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20handleObj.selector%20%29%20%7B%0A%09%09%09%09%09%09handlers.delegateCount--%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20special.remove%20%29%20%7B%0A%09%09%09%09%09%09special.remove.call%28%20elem%2C%20handleObj%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Remove%20generic%20event%20handler%20if%20we%20removed%20something%20and%20no%20more%20handlers%20exist%0A%09%09%09//%20%28avoids%20potential%20for%20endless%20recursion%20during%20removal%20of%20special%20event%20handlers%29%0A%09%09%09if%20%28%20origCount%20%26%26%20%21handlers.length%20%29%20%7B%0A%09%09%09%09if%20%28%20%21special.teardown%20%7C%7C%0A%09%09%09%09%09special.teardown.call%28%20elem%2C%20namespaces%2C%20elemData.handle%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09jQuery.removeEvent%28%20elem%2C%20type%2C%20elemData.handle%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09delete%20events%5B%20type%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Remove%20data%20and%20the%20expando%20if%20it%27s%20no%20longer%20used%0A%09%09if%20%28%20jQuery.isEmptyObject%28%20events%20%29%20%29%20%7B%0A%09%09%09dataPriv.remove%28%20elem%2C%20%22handle%20events%22%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09dispatch%3A%20function%28%20nativeEvent%20%29%20%7B%0A%0A%09%09var%20i%2C%20j%2C%20ret%2C%20matched%2C%20handleObj%2C%20handlerQueue%2C%0A%09%09%09args%20%3D%20new%20Array%28%20arguments.length%20%29%2C%0A%0A%09%09%09//%20Make%20a%20writable%20jQuery.Event%20from%20the%20native%20event%20object%0A%09%09%09event%20%3D%20jQuery.event.fix%28%20nativeEvent%20%29%2C%0A%0A%09%09%09handlers%20%3D%20%28%0A%09%09%09%09%09dataPriv.get%28%20this%2C%20%22events%22%20%29%20%7C%7C%20Object.create%28%20null%20%29%0A%09%09%09%09%29%5B%20event.type%20%5D%20%7C%7C%20%5B%5D%2C%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20event.type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09//%20Use%20the%20fix-ed%20jQuery.Event%20rather%20than%20the%20%28read-only%29%20native%20event%0A%09%09args%5B%200%20%5D%20%3D%20event%3B%0A%0A%09%09for%20%28%20i%20%3D%201%3B%20i%20%3C%20arguments.length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09args%5B%20i%20%5D%20%3D%20arguments%5B%20i%20%5D%3B%0A%09%09%7D%0A%0A%09%09event.delegateTarget%20%3D%20this%3B%0A%0A%09%09//%20Call%20the%20preDispatch%20hook%20for%20the%20mapped%20type%2C%20and%20let%20it%20bail%20if%20desired%0A%09%09if%20%28%20special.preDispatch%20%26%26%20special.preDispatch.call%28%20this%2C%20event%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Determine%20handlers%0A%09%09handlerQueue%20%3D%20jQuery.event.handlers.call%28%20this%2C%20event%2C%20handlers%20%29%3B%0A%0A%09%09//%20Run%20delegates%20first%3B%20they%20may%20want%20to%20stop%20propagation%20beneath%20us%0A%09%09i%20%3D%200%3B%0A%09%09while%20%28%20%28%20matched%20%3D%20handlerQueue%5B%20i%2B%2B%20%5D%20%29%20%26%26%20%21event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09event.currentTarget%20%3D%20matched.elem%3B%0A%0A%09%09%09j%20%3D%200%3B%0A%09%09%09while%20%28%20%28%20handleObj%20%3D%20matched.handlers%5B%20j%2B%2B%20%5D%20%29%20%26%26%0A%09%09%09%09%21event.isImmediatePropagationStopped%28%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20the%20event%20is%20namespaced%2C%20then%20each%20handler%20is%20only%20invoked%20if%20it%20is%0A%09%09%09%09//%20specially%20universal%20or%20its%20namespaces%20are%20a%20superset%20of%20the%20event%27s.%0A%09%09%09%09if%20%28%20%21event.rnamespace%20%7C%7C%20handleObj.namespace%20%3D%3D%3D%20false%20%7C%7C%0A%09%09%09%09%09event.rnamespace.test%28%20handleObj.namespace%20%29%20%29%20%7B%0A%0A%09%09%09%09%09event.handleObj%20%3D%20handleObj%3B%0A%09%09%09%09%09event.data%20%3D%20handleObj.data%3B%0A%0A%09%09%09%09%09ret%20%3D%20%28%20%28%20jQuery.event.special%5B%20handleObj.origType%20%5D%20%7C%7C%20%7B%7D%20%29.handle%20%7C%7C%0A%09%09%09%09%09%09handleObj.handler%20%29.apply%28%20matched.elem%2C%20args%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20ret%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20event.result%20%3D%20ret%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Call%20the%20postDispatch%20hook%20for%20the%20mapped%20type%0A%09%09if%20%28%20special.postDispatch%20%29%20%7B%0A%09%09%09special.postDispatch.call%28%20this%2C%20event%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20event.result%3B%0A%09%7D%2C%0A%0A%09handlers%3A%20function%28%20event%2C%20handlers%20%29%20%7B%0A%09%09var%20i%2C%20handleObj%2C%20sel%2C%20matchedHandlers%2C%20matchedSelectors%2C%0A%09%09%09handlerQueue%20%3D%20%5B%5D%2C%0A%09%09%09delegateCount%20%3D%20handlers.delegateCount%2C%0A%09%09%09cur%20%3D%20event.target%3B%0A%0A%09%09//%20Find%20delegate%20handlers%0A%09%09if%20%28%20delegateCount%20%26%26%0A%0A%09%09%09//%20Support%3A%20IE%20%3C%3D9%0A%09%09%09//%20Black-hole%20SVG%20%3Cuse%3E%20instance%20trees%20%28trac-13180%29%0A%09%09%09cur.nodeType%20%26%26%0A%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D42%0A%09%09%09//%20Suppress%20spec-violating%20clicks%20indicating%20a%20non-primary%20pointer%20button%20%28trac-3861%29%0A%09%09%09//%20https%3A//www.w3.org/TR/DOM-Level-3-Events/%23event-type-click%0A%09%09%09//%20Support%3A%20IE%2011%20only%0A%09%09%09//%20...but%20not%20arrow%20key%20%22clicks%22%20of%20radio%20inputs%2C%20which%20can%20have%20%60button%60%20-1%20%28gh-2343%29%0A%09%09%09%21%28%20event.type%20%3D%3D%3D%20%22click%22%20%26%26%20event.button%20%3E%3D%201%20%29%20%29%20%7B%0A%0A%09%09%09for%20%28%20%3B%20cur%20%21%3D%3D%20this%3B%20cur%20%3D%20cur.parentNode%20%7C%7C%20this%20%29%20%7B%0A%0A%09%09%09%09//%20Don%27t%20check%20non-elements%20%28%2313208%29%0A%09%09%09%09//%20Don%27t%20process%20clicks%20on%20disabled%20elements%20%28%236911%2C%20%238165%2C%20%2311382%2C%20%2311764%29%0A%09%09%09%09if%20%28%20cur.nodeType%20%3D%3D%3D%201%20%26%26%20%21%28%20event.type%20%3D%3D%3D%20%22click%22%20%26%26%20cur.disabled%20%3D%3D%3D%20true%20%29%20%29%20%7B%0A%09%09%09%09%09matchedHandlers%20%3D%20%5B%5D%3B%0A%09%09%09%09%09matchedSelectors%20%3D%20%7B%7D%3B%0A%09%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20delegateCount%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09%09handleObj%20%3D%20handlers%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09%09//%20Don%27t%20conflict%20with%20Object.prototype%20properties%20%28%2313203%29%0A%09%09%09%09%09%09sel%20%3D%20handleObj.selector%20%2B%20%22%20%22%3B%0A%0A%09%09%09%09%09%09if%20%28%20matchedSelectors%5B%20sel%20%5D%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09%09%09matchedSelectors%5B%20sel%20%5D%20%3D%20handleObj.needsContext%20%3F%0A%09%09%09%09%09%09%09%09jQuery%28%20sel%2C%20this%20%29.index%28%20cur%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09%09%09%09jQuery.find%28%20sel%2C%20this%2C%20null%2C%20%5B%20cur%20%5D%20%29.length%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28%20matchedSelectors%5B%20sel%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09matchedHandlers.push%28%20handleObj%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20matchedHandlers.length%20%29%20%7B%0A%09%09%09%09%09%09handlerQueue.push%28%20%7B%20elem%3A%20cur%2C%20handlers%3A%20matchedHandlers%20%7D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Add%20the%20remaining%20%28directly-bound%29%20handlers%0A%09%09cur%20%3D%20this%3B%0A%09%09if%20%28%20delegateCount%20%3C%20handlers.length%20%29%20%7B%0A%09%09%09handlerQueue.push%28%20%7B%20elem%3A%20cur%2C%20handlers%3A%20handlers.slice%28%20delegateCount%20%29%20%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20handlerQueue%3B%0A%09%7D%2C%0A%0A%09addProp%3A%20function%28%20name%2C%20hook%20%29%20%7B%0A%09%09Object.defineProperty%28%20jQuery.Event.prototype%2C%20name%2C%20%7B%0A%09%09%09enumerable%3A%20true%2C%0A%09%09%09configurable%3A%20true%2C%0A%0A%09%09%09get%3A%20isFunction%28%20hook%20%29%20%3F%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.originalEvent%20%29%20%7B%0A%09%09%09%09%09%09%09return%20hook%28%20this.originalEvent%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%3A%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.originalEvent%20%29%20%7B%0A%09%09%09%09%09%09%09return%20this.originalEvent%5B%20name%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%2C%0A%0A%09%09%09set%3A%20function%28%20value%20%29%20%7B%0A%09%09%09%09Object.defineProperty%28%20this%2C%20name%2C%20%7B%0A%09%09%09%09%09enumerable%3A%20true%2C%0A%09%09%09%09%09configurable%3A%20true%2C%0A%09%09%09%09%09writable%3A%20true%2C%0A%09%09%09%09%09value%3A%20value%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09fix%3A%20function%28%20originalEvent%20%29%20%7B%0A%09%09return%20originalEvent%5B%20jQuery.expando%20%5D%20%3F%0A%09%09%09originalEvent%20%3A%0A%09%09%09new%20jQuery.Event%28%20originalEvent%20%29%3B%0A%09%7D%2C%0A%0A%09special%3A%20%7B%0A%09%09load%3A%20%7B%0A%0A%09%09%09//%20Prevent%20triggered%20image.load%20events%20from%20bubbling%20to%20window.load%0A%09%09%09noBubble%3A%20true%0A%09%09%7D%2C%0A%09%09click%3A%20%7B%0A%0A%09%09%09//%20Utilize%20native%20event%20to%20ensure%20correct%20state%20for%20checkable%20inputs%0A%09%09%09setup%3A%20function%28%20data%20%29%20%7B%0A%0A%09%09%09%09//%20For%20mutual%20compressibility%20with%20_default%2C%20replace%20%60this%60%20access%20with%20a%20local%20var.%0A%09%09%09%09//%20%60%7C%7C%20data%60%20is%20dead%20code%20meant%20only%20to%20preserve%20the%20variable%20through%20minification.%0A%09%09%09%09var%20el%20%3D%20this%20%7C%7C%20data%3B%0A%0A%09%09%09%09//%20Claim%20the%20first%20handler%0A%09%09%09%09if%20%28%20rcheckableType.test%28%20el.type%20%29%20%26%26%0A%09%09%09%09%09el.click%20%26%26%20nodeName%28%20el%2C%20%22input%22%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20dataPriv.set%28%20el%2C%20%22click%22%2C%20...%20%29%0A%09%09%09%09%09leverageNative%28%20el%2C%20%22click%22%2C%20returnTrue%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Return%20false%20to%20allow%20normal%20processing%20in%20the%20caller%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%2C%0A%09%09%09trigger%3A%20function%28%20data%20%29%20%7B%0A%0A%09%09%09%09//%20For%20mutual%20compressibility%20with%20_default%2C%20replace%20%60this%60%20access%20with%20a%20local%20var.%0A%09%09%09%09//%20%60%7C%7C%20data%60%20is%20dead%20code%20meant%20only%20to%20preserve%20the%20variable%20through%20minification.%0A%09%09%09%09var%20el%20%3D%20this%20%7C%7C%20data%3B%0A%0A%09%09%09%09//%20Force%20setup%20before%20triggering%20a%20click%0A%09%09%09%09if%20%28%20rcheckableType.test%28%20el.type%20%29%20%26%26%0A%09%09%09%09%09el.click%20%26%26%20nodeName%28%20el%2C%20%22input%22%20%29%20%29%20%7B%0A%0A%09%09%09%09%09leverageNative%28%20el%2C%20%22click%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Return%20non-false%20to%20allow%20normal%20event-path%20propagation%0A%09%09%09%09return%20true%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20For%20cross-browser%20consistency%2C%20suppress%20native%20.click%28%29%20on%20links%0A%09%09%09//%20Also%20prevent%20it%20if%20we%27re%20currently%20inside%20a%20leveraged%20native-event%20stack%0A%09%09%09_default%3A%20function%28%20event%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20event.target%3B%0A%09%09%09%09return%20rcheckableType.test%28%20target.type%20%29%20%26%26%0A%09%09%09%09%09target.click%20%26%26%20nodeName%28%20target%2C%20%22input%22%20%29%20%26%26%0A%09%09%09%09%09dataPriv.get%28%20target%2C%20%22click%22%20%29%20%7C%7C%0A%09%09%09%09%09nodeName%28%20target%2C%20%22a%22%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09beforeunload%3A%20%7B%0A%09%09%09postDispatch%3A%20function%28%20event%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Firefox%2020%2B%0A%09%09%09%09//%20Firefox%20doesn%27t%20alert%20if%20the%20returnValue%20field%20is%20not%20set.%0A%09%09%09%09if%20%28%20event.result%20%21%3D%3D%20undefined%20%26%26%20event.originalEvent%20%29%20%7B%0A%09%09%09%09%09event.originalEvent.returnValue%20%3D%20event.result%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0A//%20Ensure%20the%20presence%20of%20an%20event%20listener%20that%20handles%20manually-triggered%0A//%20synthetic%20events%20by%20interrupting%20progress%20until%20reinvoked%20in%20response%20to%0A//%20%2Anative%2A%20events%20that%20it%20fires%20directly%2C%20ensuring%20that%20state%20changes%20have%0A//%20already%20occurred%20before%20other%20listeners%20are%20invoked.%0Afunction%20leverageNative%28%20el%2C%20type%2C%20expectSync%20%29%20%7B%0A%0A%09//%20Missing%20expectSync%20indicates%20a%20trigger%20call%2C%20which%20must%20force%20setup%20through%20jQuery.event.add%0A%09if%20%28%20%21expectSync%20%29%20%7B%0A%09%09if%20%28%20dataPriv.get%28%20el%2C%20type%20%29%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09jQuery.event.add%28%20el%2C%20type%2C%20returnTrue%20%29%3B%0A%09%09%7D%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Register%20the%20controller%20as%20a%20special%20universal%20handler%20for%20all%20event%20namespaces%0A%09dataPriv.set%28%20el%2C%20type%2C%20false%20%29%3B%0A%09jQuery.event.add%28%20el%2C%20type%2C%20%7B%0A%09%09namespace%3A%20false%2C%0A%09%09handler%3A%20function%28%20event%20%29%20%7B%0A%09%09%09var%20notAsync%2C%20result%2C%0A%09%09%09%09saved%20%3D%20dataPriv.get%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09if%20%28%20%28%20event.isTrigger%20%26%201%20%29%20%26%26%20this%5B%20type%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Interrupt%20processing%20of%20the%20outer%20synthetic%20.trigger%28%29ed%20event%0A%09%09%09%09//%20Saved%20data%20should%20be%20false%20in%20such%20cases%2C%20but%20might%20be%20a%20leftover%20capture%20object%0A%09%09%09%09//%20from%20an%20async%20native%20handler%20%28gh-4350%29%0A%09%09%09%09if%20%28%20%21saved.length%20%29%20%7B%0A%0A%09%09%09%09%09//%20Store%20arguments%20for%20use%20when%20handling%20the%20inner%20native%20event%0A%09%09%09%09%09//%20There%20will%20always%20be%20at%20least%20one%20argument%20%28an%20event%20object%29%2C%20so%20this%20array%0A%09%09%09%09%09//%20will%20not%20be%20confused%20with%20a%20leftover%20capture%20object.%0A%09%09%09%09%09saved%20%3D%20slice.call%28%20arguments%20%29%3B%0A%09%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20saved%20%29%3B%0A%0A%09%09%09%09%09//%20Trigger%20the%20native%20event%20and%20capture%20its%20result%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A%09%09%09%09%09//%20focus%28%29%20and%20blur%28%29%20are%20asynchronous%0A%09%09%09%09%09notAsync%20%3D%20expectSync%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%09this%5B%20type%20%5D%28%29%3B%0A%09%09%09%09%09result%20%3D%20dataPriv.get%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%09if%20%28%20saved%20%21%3D%3D%20result%20%7C%7C%20notAsync%20%29%20%7B%0A%09%09%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20false%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09result%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20saved%20%21%3D%3D%20result%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Cancel%20the%20outer%20synthetic%20event%0A%09%09%09%09%09%09event.stopImmediatePropagation%28%29%3B%0A%09%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%09%09return%20result.value%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09//%20If%20this%20is%20an%20inner%20synthetic%20event%20for%20an%20event%20with%20a%20bubbling%20surrogate%0A%09%09%09%09//%20%28focus%20or%20blur%29%2C%20assume%20that%20the%20surrogate%20already%20propagated%20from%20triggering%20the%0A%09%09%09%09//%20native%20event%20and%20prevent%20that%20from%20happening%20again%20here.%0A%09%09%09%09//%20This%20technically%20gets%20the%20ordering%20wrong%20w.r.t.%20to%20%60.trigger%28%29%60%20%28in%20which%20the%0A%09%09%09%09//%20bubbling%20surrogate%20propagates%20%2Aafter%2A%20the%20non-bubbling%20base%29%2C%20but%20that%20seems%0A%09%09%09%09//%20less%20bad%20than%20duplication.%0A%09%09%09%09%7D%20else%20if%20%28%20%28%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%20%29.delegateType%20%29%20%7B%0A%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09//%20If%20this%20is%20a%20native%20event%20triggered%20above%2C%20everything%20is%20now%20in%20order%0A%09%09%09//%20Fire%20an%20inner%20synthetic%20event%20with%20the%20original%20arguments%0A%09%09%09%7D%20else%20if%20%28%20saved.length%20%29%20%7B%0A%0A%09%09%09%09//%20...and%20capture%20the%20result%0A%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20%7B%0A%09%09%09%09%09value%3A%20jQuery.event.trigger%28%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A%09%09%09%09%09%09//%20Extend%20with%20the%20prototype%20to%20reset%20the%20above%20stopImmediatePropagation%28%29%0A%09%09%09%09%09%09jQuery.extend%28%20saved%5B%200%20%5D%2C%20jQuery.Event.prototype%20%29%2C%0A%09%09%09%09%09%09saved.slice%28%201%20%29%2C%0A%09%09%09%09%09%09this%0A%09%09%09%09%09%29%0A%09%09%09%09%7D%20%29%3B%0A%0A%09%09%09%09//%20Abort%20handling%20of%20the%20native%20event%0A%09%09%09%09event.stopImmediatePropagation%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0AjQuery.removeEvent%20%3D%20function%28%20elem%2C%20type%2C%20handle%20%29%20%7B%0A%0A%09//%20This%20%22if%22%20is%20needed%20for%20plain%20objects%0A%09if%20%28%20elem.removeEventListener%20%29%20%7B%0A%09%09elem.removeEventListener%28%20type%2C%20handle%20%29%3B%0A%09%7D%0A%7D%3B%0A%0AjQuery.Event%20%3D%20function%28%20src%2C%20props%20%29%20%7B%0A%0A%09//%20Allow%20instantiation%20without%20the%20%27new%27%20keyword%0A%09if%20%28%20%21%28%20this%20instanceof%20jQuery.Event%20%29%20%29%20%7B%0A%09%09return%20new%20jQuery.Event%28%20src%2C%20props%20%29%3B%0A%09%7D%0A%0A%09//%20Event%20object%0A%09if%20%28%20src%20%26%26%20src.type%20%29%20%7B%0A%09%09this.originalEvent%20%3D%20src%3B%0A%09%09this.type%20%3D%20src.type%3B%0A%0A%09%09//%20Events%20bubbling%20up%20the%20document%20may%20have%20been%20marked%20as%20prevented%0A%09%09//%20by%20a%20handler%20lower%20down%20the%20tree%3B%20reflect%20the%20correct%20value.%0A%09%09this.isDefaultPrevented%20%3D%20src.defaultPrevented%20%7C%7C%0A%09%09%09%09src.defaultPrevented%20%3D%3D%3D%20undefined%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D2.3%20only%0A%09%09%09%09src.returnValue%20%3D%3D%3D%20false%20%3F%0A%09%09%09returnTrue%20%3A%0A%09%09%09returnFalse%3B%0A%0A%09%09//%20Create%20target%20properties%0A%09%09//%20Support%3A%20Safari%20%3C%3D6%20-%207%20only%0A%09%09//%20Target%20should%20not%20be%20a%20text%20node%20%28%23504%2C%20%2313143%29%0A%09%09this.target%20%3D%20%28%20src.target%20%26%26%20src.target.nodeType%20%3D%3D%3D%203%20%29%20%3F%0A%09%09%09src.target.parentNode%20%3A%0A%09%09%09src.target%3B%0A%0A%09%09this.currentTarget%20%3D%20src.currentTarget%3B%0A%09%09this.relatedTarget%20%3D%20src.relatedTarget%3B%0A%0A%09//%20Event%20type%0A%09%7D%20else%20%7B%0A%09%09this.type%20%3D%20src%3B%0A%09%7D%0A%0A%09//%20Put%20explicitly%20provided%20properties%20onto%20the%20event%20object%0A%09if%20%28%20props%20%29%20%7B%0A%09%09jQuery.extend%28%20this%2C%20props%20%29%3B%0A%09%7D%0A%0A%09//%20Create%20a%20timestamp%20if%20incoming%20event%20doesn%27t%20have%20one%0A%09this.timeStamp%20%3D%20src%20%26%26%20src.timeStamp%20%7C%7C%20Date.now%28%29%3B%0A%0A%09//%20Mark%20it%20as%20fixed%0A%09this%5B%20jQuery.expando%20%5D%20%3D%20true%3B%0A%7D%3B%0A%0A//%20jQuery.Event%20is%20based%20on%20DOM3%20Events%20as%20specified%20by%20the%20ECMAScript%20Language%20Binding%0A//%20https%3A//www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html%0AjQuery.Event.prototype%20%3D%20%7B%0A%09constructor%3A%20jQuery.Event%2C%0A%09isDefaultPrevented%3A%20returnFalse%2C%0A%09isPropagationStopped%3A%20returnFalse%2C%0A%09isImmediatePropagationStopped%3A%20returnFalse%2C%0A%09isSimulated%3A%20false%2C%0A%0A%09preventDefault%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isDefaultPrevented%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09stopPropagation%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isPropagationStopped%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09stopImmediatePropagation%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isImmediatePropagationStopped%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.stopImmediatePropagation%28%29%3B%0A%09%09%7D%0A%0A%09%09this.stopPropagation%28%29%3B%0A%09%7D%0A%7D%3B%0A%0A//%20Includes%20all%20common%20event%20props%20including%20KeyEvent%20and%20MouseEvent%20specific%20props%0AjQuery.each%28%20%7B%0A%09altKey%3A%20true%2C%0A%09bubbles%3A%20true%2C%0A%09cancelable%3A%20true%2C%0A%09changedTouches%3A%20true%2C%0A%09ctrlKey%3A%20true%2C%0A%09detail%3A%20true%2C%0A%09eventPhase%3A%20true%2C%0A%09metaKey%3A%20true%2C%0A%09pageX%3A%20true%2C%0A%09pageY%3A%20true%2C%0A%09shiftKey%3A%20true%2C%0A%09view%3A%20true%2C%0A%09%22char%22%3A%20true%2C%0A%09code%3A%20true%2C%0A%09charCode%3A%20true%2C%0A%09key%3A%20true%2C%0A%09keyCode%3A%20true%2C%0A%09button%3A%20true%2C%0A%09buttons%3A%20true%2C%0A%09clientX%3A%20true%2C%0A%09clientY%3A%20true%2C%0A%09offsetX%3A%20true%2C%0A%09offsetY%3A%20true%2C%0A%09pointerId%3A%20true%2C%0A%09pointerType%3A%20true%2C%0A%09screenX%3A%20true%2C%0A%09screenY%3A%20true%2C%0A%09targetTouches%3A%20true%2C%0A%09toElement%3A%20true%2C%0A%09touches%3A%20true%2C%0A%0A%09which%3A%20function%28%20event%20%29%20%7B%0A%09%09var%20button%20%3D%20event.button%3B%0A%0A%09%09//%20Add%20which%20for%20key%20events%0A%09%09if%20%28%20event.which%20%3D%3D%20null%20%26%26%20rkeyEvent.test%28%20event.type%20%29%20%29%20%7B%0A%09%09%09return%20event.charCode%20%21%3D%20null%20%3F%20event.charCode%20%3A%20event.keyCode%3B%0A%09%09%7D%0A%0A%09%09//%20Add%20which%20for%20click%3A%201%20%3D%3D%3D%20left%3B%202%20%3D%3D%3D%20middle%3B%203%20%3D%3D%3D%20right%0A%09%09if%20%28%20%21event.which%20%26%26%20button%20%21%3D%3D%20undefined%20%26%26%20rmouseEvent.test%28%20event.type%20%29%20%29%20%7B%0A%09%09%09if%20%28%20button%20%26%201%20%29%20%7B%0A%09%09%09%09return%201%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20button%20%26%202%20%29%20%7B%0A%09%09%09%09return%203%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20button%20%26%204%20%29%20%7B%0A%09%09%09%09return%202%3B%0A%09%09%09%7D%0A%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09return%20event.which%3B%0A%09%7D%0A%7D%2C%20jQuery.event.addProp%20%29%3B%0A%0AjQuery.each%28%20%7B%20focus%3A%20%22focusin%22%2C%20blur%3A%20%22focusout%22%20%7D%2C%20function%28%20type%2C%20delegateType%20%29%20%7B%0A%09jQuery.event.special%5B%20type%20%5D%20%3D%20%7B%0A%0A%09%09//%20Utilize%20native%20event%20if%20possible%20so%20blur/focus%20sequence%20is%20correct%0A%09%09setup%3A%20function%28%29%20%7B%0A%0A%09%09%09//%20Claim%20the%20first%20handler%0A%09%09%09//%20dataPriv.set%28%20this%2C%20%22focus%22%2C%20...%20%29%0A%09%09%09//%20dataPriv.set%28%20this%2C%20%22blur%22%2C%20...%20%29%0A%09%09%09leverageNative%28%20this%2C%20type%2C%20expectSync%20%29%3B%0A%0A%09%09%09//%20Return%20false%20to%20allow%20normal%20processing%20in%20the%20caller%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09trigger%3A%20function%28%29%20%7B%0A%0A%09%09%09//%20Force%20setup%20before%20trigger%0A%09%09%09leverageNative%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09//%20Return%20non-false%20to%20allow%20normal%20event-path%20propagation%0A%09%09%09return%20true%3B%0A%09%09%7D%2C%0A%0A%09%09delegateType%3A%20delegateType%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Create%20mouseenter/leave%20events%20using%20mouseover/out%20and%20event-time%20checks%0A//%20so%20that%20event%20delegation%20works%20in%20jQuery.%0A//%20Do%20the%20same%20for%20pointerenter/pointerleave%20and%20pointerover/pointerout%0A//%0A//%20Support%3A%20Safari%207%20only%0A//%20Safari%20sends%20mouseenter%20too%20often%3B%20see%3A%0A//%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D470258%0A//%20for%20the%20description%20of%20the%20bug%20%28it%20existed%20in%20older%20Chrome%20versions%20as%20well%29.%0AjQuery.each%28%20%7B%0A%09mouseenter%3A%20%22mouseover%22%2C%0A%09mouseleave%3A%20%22mouseout%22%2C%0A%09pointerenter%3A%20%22pointerover%22%2C%0A%09pointerleave%3A%20%22pointerout%22%0A%7D%2C%20function%28%20orig%2C%20fix%20%29%20%7B%0A%09jQuery.event.special%5B%20orig%20%5D%20%3D%20%7B%0A%09%09delegateType%3A%20fix%2C%0A%09%09bindType%3A%20fix%2C%0A%0A%09%09handle%3A%20function%28%20event%20%29%20%7B%0A%09%09%09var%20ret%2C%0A%09%09%09%09target%20%3D%20this%2C%0A%09%09%09%09related%20%3D%20event.relatedTarget%2C%0A%09%09%09%09handleObj%20%3D%20event.handleObj%3B%0A%0A%09%09%09//%20For%20mouseenter/leave%20call%20the%20handler%20if%20related%20is%20outside%20the%20target.%0A%09%09%09//%20NB%3A%20No%20relatedTarget%20if%20the%20mouse%20left/entered%20the%20browser%20window%0A%09%09%09if%20%28%20%21related%20%7C%7C%20%28%20related%20%21%3D%3D%20target%20%26%26%20%21jQuery.contains%28%20target%2C%20related%20%29%20%29%20%29%20%7B%0A%09%09%09%09event.type%20%3D%20handleObj.origType%3B%0A%09%09%09%09ret%20%3D%20handleObj.handler.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09event.type%20%3D%20fix%3B%0A%09%09%09%7D%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09on%3A%20function%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20on%28%20this%2C%20types%2C%20selector%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09one%3A%20function%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20on%28%20this%2C%20types%2C%20selector%2C%20data%2C%20fn%2C%201%20%29%3B%0A%09%7D%2C%0A%09off%3A%20function%28%20types%2C%20selector%2C%20fn%20%29%20%7B%0A%09%09var%20handleObj%2C%20type%3B%0A%09%09if%20%28%20types%20%26%26%20types.preventDefault%20%26%26%20types.handleObj%20%29%20%7B%0A%0A%09%09%09//%20%28%20event%20%29%20%20dispatched%20jQuery.Event%0A%09%09%09handleObj%20%3D%20types.handleObj%3B%0A%09%09%09jQuery%28%20types.delegateTarget%20%29.off%28%0A%09%09%09%09handleObj.namespace%20%3F%0A%09%09%09%09%09handleObj.origType%20%2B%20%22.%22%20%2B%20handleObj.namespace%20%3A%0A%09%09%09%09%09handleObj.origType%2C%0A%09%09%09%09handleObj.selector%2C%0A%09%09%09%09handleObj.handler%0A%09%09%09%29%3B%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%09%09if%20%28%20typeof%20types%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types-object%20%5B%2C%20selector%5D%20%29%0A%09%09%09for%20%28%20type%20in%20types%20%29%20%7B%0A%09%09%09%09this.off%28%20type%2C%20selector%2C%20types%5B%20type%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%09%09if%20%28%20selector%20%3D%3D%3D%20false%20%7C%7C%20typeof%20selector%20%3D%3D%3D%20%22function%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types%20%5B%2C%20fn%5D%20%29%0A%09%09%09fn%20%3D%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09if%20%28%20fn%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09fn%20%3D%20returnFalse%3B%0A%09%09%7D%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.event.remove%28%20this%2C%20types%2C%20fn%2C%20selector%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Avar%0A%0A%09//%20Support%3A%20IE%20%3C%3D10%20-%2011%2C%20Edge%2012%20-%2013%20only%0A%09//%20In%20IE/Edge%20using%20regex%20groups%20here%20causes%20severe%20slowdowns.%0A%09//%20See%20https%3A//connect.microsoft.com/IE/feedback/details/1736512/%0A%09rnoInnerhtml%20%3D%20/%3Cscript%7C%3Cstyle%7C%3Clink/i%2C%0A%0A%09//%20checked%3D%22checked%22%20or%20checked%0A%09rchecked%20%3D%20/checked%5Cs%2A%28%3F%3A%5B%5E%3D%5D%7C%3D%5Cs%2A.checked.%29/i%2C%0A%09rcleanScript%20%3D%20/%5E%5Cs%2A%3C%21%28%3F%3A%5C%5BCDATA%5C%5B%7C--%29%7C%28%3F%3A%5C%5D%5C%5D%7C--%29%3E%5Cs%2A%24/g%3B%0A%0A//%20Prefer%20a%20tbody%20over%20its%20parent%20table%20for%20containing%20new%20rows%0Afunction%20manipulationTarget%28%20elem%2C%20content%20%29%20%7B%0A%09if%20%28%20nodeName%28%20elem%2C%20%22table%22%20%29%20%26%26%0A%09%09nodeName%28%20content.nodeType%20%21%3D%3D%2011%20%3F%20content%20%3A%20content.firstChild%2C%20%22tr%22%20%29%20%29%20%7B%0A%0A%09%09return%20jQuery%28%20elem%20%29.children%28%20%22tbody%22%20%29%5B%200%20%5D%20%7C%7C%20elem%3B%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0A//%20Replace/restore%20the%20type%20attribute%20of%20script%20elements%20for%20safe%20DOM%20manipulation%0Afunction%20disableScript%28%20elem%20%29%20%7B%0A%09elem.type%20%3D%20%28%20elem.getAttribute%28%20%22type%22%20%29%20%21%3D%3D%20null%20%29%20%2B%20%22/%22%20%2B%20elem.type%3B%0A%09return%20elem%3B%0A%7D%0Afunction%20restoreScript%28%20elem%20%29%20%7B%0A%09if%20%28%20%28%20elem.type%20%7C%7C%20%22%22%20%29.slice%28%200%2C%205%20%29%20%3D%3D%3D%20%22true/%22%20%29%20%7B%0A%09%09elem.type%20%3D%20elem.type.slice%28%205%20%29%3B%0A%09%7D%20else%20%7B%0A%09%09elem.removeAttribute%28%20%22type%22%20%29%3B%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0Afunction%20cloneCopyEvent%28%20src%2C%20dest%20%29%20%7B%0A%09var%20i%2C%20l%2C%20type%2C%20pdataOld%2C%20udataOld%2C%20udataCur%2C%20events%3B%0A%0A%09if%20%28%20dest.nodeType%20%21%3D%3D%201%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%201.%20Copy%20private%20data%3A%20events%2C%20handlers%2C%20etc.%0A%09if%20%28%20dataPriv.hasData%28%20src%20%29%20%29%20%7B%0A%09%09pdataOld%20%3D%20dataPriv.get%28%20src%20%29%3B%0A%09%09events%20%3D%20pdataOld.events%3B%0A%0A%09%09if%20%28%20events%20%29%20%7B%0A%09%09%09dataPriv.remove%28%20dest%2C%20%22handle%20events%22%20%29%3B%0A%0A%09%09%09for%20%28%20type%20in%20events%20%29%20%7B%0A%09%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20events%5B%20type%20%5D.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09jQuery.event.add%28%20dest%2C%20type%2C%20events%5B%20type%20%5D%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%202.%20Copy%20user%20data%0A%09if%20%28%20dataUser.hasData%28%20src%20%29%20%29%20%7B%0A%09%09udataOld%20%3D%20dataUser.access%28%20src%20%29%3B%0A%09%09udataCur%20%3D%20jQuery.extend%28%20%7B%7D%2C%20udataOld%20%29%3B%0A%0A%09%09dataUser.set%28%20dest%2C%20udataCur%20%29%3B%0A%09%7D%0A%7D%0A%0A//%20Fix%20IE%20bugs%2C%20see%20support%20tests%0Afunction%20fixInput%28%20src%2C%20dest%20%29%20%7B%0A%09var%20nodeName%20%3D%20dest.nodeName.toLowerCase%28%29%3B%0A%0A%09//%20Fails%20to%20persist%20the%20checked%20state%20of%20a%20cloned%20checkbox%20or%20radio%20button.%0A%09if%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%26%26%20rcheckableType.test%28%20src.type%20%29%20%29%20%7B%0A%09%09dest.checked%20%3D%20src.checked%3B%0A%0A%09//%20Fails%20to%20return%20the%20selected%20option%20to%20the%20default%20selected%20state%20when%20cloning%20options%0A%09%7D%20else%20if%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%7C%7C%20nodeName%20%3D%3D%3D%20%22textarea%22%20%29%20%7B%0A%09%09dest.defaultValue%20%3D%20src.defaultValue%3B%0A%09%7D%0A%7D%0A%0Afunction%20domManip%28%20collection%2C%20args%2C%20callback%2C%20ignored%20%29%20%7B%0A%0A%09//%20Flatten%20any%20nested%20arrays%0A%09args%20%3D%20flat%28%20args%20%29%3B%0A%0A%09var%20fragment%2C%20first%2C%20scripts%2C%20hasScripts%2C%20node%2C%20doc%2C%0A%09%09i%20%3D%200%2C%0A%09%09l%20%3D%20collection.length%2C%0A%09%09iNoClone%20%3D%20l%20-%201%2C%0A%09%09value%20%3D%20args%5B%200%20%5D%2C%0A%09%09valueIsFunction%20%3D%20isFunction%28%20value%20%29%3B%0A%0A%09//%20We%20can%27t%20cloneNode%20fragments%20that%20contain%20checked%2C%20in%20WebKit%0A%09if%20%28%20valueIsFunction%20%7C%7C%0A%09%09%09%28%20l%20%3E%201%20%26%26%20typeof%20value%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%21support.checkClone%20%26%26%20rchecked.test%28%20value%20%29%20%29%20%29%20%7B%0A%09%09return%20collection.each%28%20function%28%20index%20%29%20%7B%0A%09%09%09var%20self%20%3D%20collection.eq%28%20index%20%29%3B%0A%09%09%09if%20%28%20valueIsFunction%20%29%20%7B%0A%09%09%09%09args%5B%200%20%5D%20%3D%20value.call%28%20this%2C%20index%2C%20self.html%28%29%20%29%3B%0A%09%09%09%7D%0A%09%09%09domManip%28%20self%2C%20args%2C%20callback%2C%20ignored%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09if%20%28%20l%20%29%20%7B%0A%09%09fragment%20%3D%20buildFragment%28%20args%2C%20collection%5B%200%20%5D.ownerDocument%2C%20false%2C%20collection%2C%20ignored%20%29%3B%0A%09%09first%20%3D%20fragment.firstChild%3B%0A%0A%09%09if%20%28%20fragment.childNodes.length%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09fragment%20%3D%20first%3B%0A%09%09%7D%0A%0A%09%09//%20Require%20either%20new%20content%20or%20an%20interest%20in%20ignored%20elements%20to%20invoke%20the%20callback%0A%09%09if%20%28%20first%20%7C%7C%20ignored%20%29%20%7B%0A%09%09%09scripts%20%3D%20jQuery.map%28%20getAll%28%20fragment%2C%20%22script%22%20%29%2C%20disableScript%20%29%3B%0A%09%09%09hasScripts%20%3D%20scripts.length%3B%0A%0A%09%09%09//%20Use%20the%20original%20fragment%20for%20the%20last%20item%0A%09%09%09//%20instead%20of%20the%20first%20because%20it%20can%20end%20up%0A%09%09%09//%20being%20emptied%20incorrectly%20in%20certain%20situations%20%28%238070%29.%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09node%20%3D%20fragment%3B%0A%0A%09%09%09%09if%20%28%20i%20%21%3D%3D%20iNoClone%20%29%20%7B%0A%09%09%09%09%09node%20%3D%20jQuery.clone%28%20node%2C%20true%2C%20true%20%29%3B%0A%0A%09%09%09%09%09//%20Keep%20references%20to%20cloned%20scripts%20for%20later%20restoration%0A%09%09%09%09%09if%20%28%20hasScripts%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09%09%09jQuery.merge%28%20scripts%2C%20getAll%28%20node%2C%20%22script%22%20%29%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09callback.call%28%20collection%5B%20i%20%5D%2C%20node%2C%20i%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20hasScripts%20%29%20%7B%0A%09%09%09%09doc%20%3D%20scripts%5B%20scripts.length%20-%201%20%5D.ownerDocument%3B%0A%0A%09%09%09%09//%20Reenable%20scripts%0A%09%09%09%09jQuery.map%28%20scripts%2C%20restoreScript%20%29%3B%0A%0A%09%09%09%09//%20Evaluate%20executable%20scripts%20on%20first%20document%20insertion%0A%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20hasScripts%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09node%20%3D%20scripts%5B%20i%20%5D%3B%0A%09%09%09%09%09if%20%28%20rscriptType.test%28%20node.type%20%7C%7C%20%22%22%20%29%20%26%26%0A%09%09%09%09%09%09%21dataPriv.access%28%20node%2C%20%22globalEval%22%20%29%20%26%26%0A%09%09%09%09%09%09jQuery.contains%28%20doc%2C%20node%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09if%20%28%20node.src%20%26%26%20%28%20node.type%20%7C%7C%20%22%22%20%29.toLowerCase%28%29%20%20%21%3D%3D%20%22module%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Optional%20AJAX%20dependency%2C%20but%20won%27t%20run%20scripts%20if%20not%20present%0A%09%09%09%09%09%09%09if%20%28%20jQuery._evalUrl%20%26%26%20%21node.noModule%20%29%20%7B%0A%09%09%09%09%09%09%09%09jQuery._evalUrl%28%20node.src%2C%20%7B%0A%09%09%09%09%09%09%09%09%09nonce%3A%20node.nonce%20%7C%7C%20node.getAttribute%28%20%22nonce%22%20%29%0A%09%09%09%09%09%09%09%09%7D%2C%20doc%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09DOMEval%28%20node.textContent.replace%28%20rcleanScript%2C%20%22%22%20%29%2C%20node%2C%20doc%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20collection%3B%0A%7D%0A%0Afunction%20remove%28%20elem%2C%20selector%2C%20keepData%20%29%20%7B%0A%09var%20node%2C%0A%09%09nodes%20%3D%20selector%20%3F%20jQuery.filter%28%20selector%2C%20elem%20%29%20%3A%20elem%2C%0A%09%09i%20%3D%200%3B%0A%0A%09for%20%28%20%3B%20%28%20node%20%3D%20nodes%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%21keepData%20%26%26%20node.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09jQuery.cleanData%28%20getAll%28%20node%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20node.parentNode%20%29%20%7B%0A%09%09%09if%20%28%20keepData%20%26%26%20isAttached%28%20node%20%29%20%29%20%7B%0A%09%09%09%09setGlobalEval%28%20getAll%28%20node%2C%20%22script%22%20%29%20%29%3B%0A%09%09%09%7D%0A%09%09%09node.parentNode.removeChild%28%20node%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%09htmlPrefilter%3A%20function%28%20html%20%29%20%7B%0A%09%09return%20html%3B%0A%09%7D%2C%0A%0A%09clone%3A%20function%28%20elem%2C%20dataAndEvents%2C%20deepDataAndEvents%20%29%20%7B%0A%09%09var%20i%2C%20l%2C%20srcElements%2C%20destElements%2C%0A%09%09%09clone%20%3D%20elem.cloneNode%28%20true%20%29%2C%0A%09%09%09inPage%20%3D%20isAttached%28%20elem%20%29%3B%0A%0A%09%09//%20Fix%20IE%20cloning%20issues%0A%09%09if%20%28%20%21support.noCloneChecked%20%26%26%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20elem.nodeType%20%3D%3D%3D%2011%20%29%20%26%26%0A%09%09%09%09%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09//%20We%20eschew%20Sizzle%20here%20for%20performance%20reasons%3A%20https%3A//jsperf.com/getall-vs-sizzle/2%0A%09%09%09destElements%20%3D%20getAll%28%20clone%20%29%3B%0A%09%09%09srcElements%20%3D%20getAll%28%20elem%20%29%3B%0A%0A%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20srcElements.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09fixInput%28%20srcElements%5B%20i%20%5D%2C%20destElements%5B%20i%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Copy%20the%20events%20from%20the%20original%20to%20the%20clone%0A%09%09if%20%28%20dataAndEvents%20%29%20%7B%0A%09%09%09if%20%28%20deepDataAndEvents%20%29%20%7B%0A%09%09%09%09srcElements%20%3D%20srcElements%20%7C%7C%20getAll%28%20elem%20%29%3B%0A%09%09%09%09destElements%20%3D%20destElements%20%7C%7C%20getAll%28%20clone%20%29%3B%0A%0A%09%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20srcElements.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09cloneCopyEvent%28%20srcElements%5B%20i%20%5D%2C%20destElements%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09cloneCopyEvent%28%20elem%2C%20clone%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Preserve%20script%20evaluation%20history%0A%09%09destElements%20%3D%20getAll%28%20clone%2C%20%22script%22%20%29%3B%0A%09%09if%20%28%20destElements.length%20%3E%200%20%29%20%7B%0A%09%09%09setGlobalEval%28%20destElements%2C%20%21inPage%20%26%26%20getAll%28%20elem%2C%20%22script%22%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20the%20cloned%20set%0A%09%09return%20clone%3B%0A%09%7D%2C%0A%0A%09cleanData%3A%20function%28%20elems%20%29%20%7B%0A%09%09var%20data%2C%20elem%2C%20type%2C%0A%09%09%09special%20%3D%20jQuery.event.special%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20%28%20elem%20%3D%20elems%5B%20i%20%5D%20%29%20%21%3D%3D%20undefined%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20acceptData%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20%28%20data%20%3D%20elem%5B%20dataPriv.expando%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20data.events%20%29%20%7B%0A%09%09%09%09%09%09for%20%28%20type%20in%20data.events%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20special%5B%20type%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09%09jQuery.event.remove%28%20elem%2C%20type%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20This%20is%20a%20shortcut%20to%20avoid%20jQuery.event.remove%27s%20overhead%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09jQuery.removeEvent%28%20elem%2C%20type%2C%20data.handle%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%2B%0A%09%09%09%09%09//%20Assign%20undefined%20instead%20of%20using%20delete%2C%20see%20Data%23remove%0A%09%09%09%09%09elem%5B%20dataPriv.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28%20elem%5B%20dataUser.expando%20%5D%20%29%20%7B%0A%0A%09%09%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%2B%0A%09%09%09%09%09//%20Assign%20undefined%20instead%20of%20using%20delete%2C%20see%20Data%23remove%0A%09%09%09%09%09elem%5B%20dataUser.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09detach%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20remove%28%20this%2C%20selector%2C%20true%20%29%3B%0A%09%7D%2C%0A%0A%09remove%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20remove%28%20this%2C%20selector%20%29%3B%0A%09%7D%2C%0A%0A%09text%3A%20function%28%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09return%20value%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09%09jQuery.text%28%20this%20%29%20%3A%0A%09%09%09%09this.empty%28%29.each%28%20function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09%09this.textContent%20%3D%20value%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%29%3B%0A%09%7D%2C%0A%0A%09append%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20manipulationTarget%28%20this%2C%20elem%20%29%3B%0A%09%09%09%09target.appendChild%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09prepend%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20manipulationTarget%28%20this%2C%20elem%20%29%3B%0A%09%09%09%09target.insertBefore%28%20elem%2C%20target.firstChild%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09before%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.parentNode%20%29%20%7B%0A%09%09%09%09this.parentNode.insertBefore%28%20elem%2C%20this%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09after%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.parentNode%20%29%20%7B%0A%09%09%09%09this.parentNode.insertBefore%28%20elem%2C%20this.nextSibling%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09empty%3A%20function%28%29%20%7B%0A%09%09var%20elem%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20%28%20elem%20%3D%20this%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09//%20Prevent%20memory%20leaks%0A%09%09%09%09jQuery.cleanData%28%20getAll%28%20elem%2C%20false%20%29%20%29%3B%0A%0A%09%09%09%09//%20Remove%20any%20remaining%20nodes%0A%09%09%09%09elem.textContent%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09clone%3A%20function%28%20dataAndEvents%2C%20deepDataAndEvents%20%29%20%7B%0A%09%09dataAndEvents%20%3D%20dataAndEvents%20%3D%3D%20null%20%3F%20false%20%3A%20dataAndEvents%3B%0A%09%09deepDataAndEvents%20%3D%20deepDataAndEvents%20%3D%3D%20null%20%3F%20dataAndEvents%20%3A%20deepDataAndEvents%3B%0A%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%09%09%09return%20jQuery.clone%28%20this%2C%20dataAndEvents%2C%20deepDataAndEvents%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09html%3A%20function%28%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09var%20elem%20%3D%20this%5B%200%20%5D%20%7C%7C%20%7B%7D%2C%0A%09%09%09%09i%20%3D%200%2C%0A%09%09%09%09l%20%3D%20this.length%3B%0A%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20undefined%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09return%20elem.innerHTML%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20See%20if%20we%20can%20take%20a%20shortcut%20and%20just%20use%20innerHTML%0A%09%09%09if%20%28%20typeof%20value%20%3D%3D%3D%20%22string%22%20%26%26%20%21rnoInnerhtml.test%28%20value%20%29%20%26%26%0A%09%09%09%09%21wrapMap%5B%20%28%20rtagName.exec%28%20value%20%29%20%7C%7C%20%5B%20%22%22%2C%20%22%22%20%5D%20%29%5B%201%20%5D.toLowerCase%28%29%20%5D%20%29%20%7B%0A%0A%09%09%09%09value%20%3D%20jQuery.htmlPrefilter%28%20value%20%29%3B%0A%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09%09elem%20%3D%20this%5B%20i%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09%09%09%09//%20Remove%20element%20nodes%20and%20prevent%20memory%20leaks%0A%09%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09%09%09%09jQuery.cleanData%28%20getAll%28%20elem%2C%20false%20%29%20%29%3B%0A%09%09%09%09%09%09%09elem.innerHTML%20%3D%20value%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09elem%20%3D%200%3B%0A%0A%09%09%09%09//%20If%20using%20innerHTML%20throws%20an%20exception%2C%20use%20the%20fallback%20method%0A%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09%09this.empty%28%29.append%28%20value%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%29%3B%0A%09%7D%2C%0A%0A%09replaceWith%3A%20function%28%29%20%7B%0A%09%09var%20ignored%20%3D%20%5B%5D%3B%0A%0A%09%09//%20Make%20the%20changes%2C%20replacing%20each%20non-ignored%20context%20element%20with%20the%20new%20content%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20parent%20%3D%20this.parentNode%3B%0A%0A%09%09%09if%20%28%20jQuery.inArray%28%20this%2C%20ignored%20%29%20%3C%200%20%29%20%7B%0A%09%09%09%09jQuery.cleanData%28%20getAll%28%20this%20%29%20%29%3B%0A%09%09%09%09if%20%28%20parent%20%29%20%7B%0A%09%09%09%09%09parent.replaceChild%28%20elem%2C%20this%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Force%20callback%20invocation%0A%09%09%7D%2C%20ignored%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%7B%0A%09appendTo%3A%20%22append%22%2C%0A%09prependTo%3A%20%22prepend%22%2C%0A%09insertBefore%3A%20%22before%22%2C%0A%09insertAfter%3A%20%22after%22%2C%0A%09replaceAll%3A%20%22replaceWith%22%0A%7D%2C%20function%28%20name%2C%20original%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20selector%20%29%20%7B%0A%09%09var%20elems%2C%0A%09%09%09ret%20%3D%20%5B%5D%2C%0A%09%09%09insert%20%3D%20jQuery%28%20selector%20%29%2C%0A%09%09%09last%20%3D%20insert.length%20-%201%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20i%20%3C%3D%20last%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09elems%20%3D%20i%20%3D%3D%3D%20last%20%3F%20this%20%3A%20this.clone%28%20true%20%29%3B%0A%09%09%09jQuery%28%20insert%5B%20i%20%5D%20%29%5B%20original%20%5D%28%20elems%20%29%3B%0A%0A%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09//%20.get%28%29%20because%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09push.apply%28%20ret%2C%20elems.get%28%29%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20ret%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0Avar%20rnumnonpx%20%3D%20new%20RegExp%28%20%22%5E%28%22%20%2B%20pnum%20%2B%20%22%29%28%3F%21px%29%5Ba-z%25%5D%2B%24%22%2C%20%22i%22%20%29%3B%0A%0Avar%20getStyles%20%3D%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D11%20only%2C%20Firefox%20%3C%3D30%20%28%2315098%2C%20%2314150%29%0A%09%09//%20IE%20throws%20on%20elements%20created%20in%20popups%0A%09%09//%20FF%20meanwhile%20throws%20on%20frame%20elements%20through%20%22defaultView.getComputedStyle%22%0A%09%09var%20view%20%3D%20elem.ownerDocument.defaultView%3B%0A%0A%09%09if%20%28%20%21view%20%7C%7C%20%21view.opener%20%29%20%7B%0A%09%09%09view%20%3D%20window%3B%0A%09%09%7D%0A%0A%09%09return%20view.getComputedStyle%28%20elem%20%29%3B%0A%09%7D%3B%0A%0Avar%20swap%20%3D%20function%28%20elem%2C%20options%2C%20callback%20%29%20%7B%0A%09var%20ret%2C%20name%2C%0A%09%09old%20%3D%20%7B%7D%3B%0A%0A%09//%20Remember%20the%20old%20values%2C%20and%20insert%20the%20new%20ones%0A%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09old%5B%20name%20%5D%20%3D%20elem.style%5B%20name%20%5D%3B%0A%09%09elem.style%5B%20name%20%5D%20%3D%20options%5B%20name%20%5D%3B%0A%09%7D%0A%0A%09ret%20%3D%20callback.call%28%20elem%20%29%3B%0A%0A%09//%20Revert%20the%20old%20values%0A%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09elem.style%5B%20name%20%5D%20%3D%20old%5B%20name%20%5D%3B%0A%09%7D%0A%0A%09return%20ret%3B%0A%7D%3B%0A%0A%0Avar%20rboxStyle%20%3D%20new%20RegExp%28%20cssExpand.join%28%20%22%7C%22%20%29%2C%20%22i%22%20%29%3B%0A%0A%0A%0A%28%20function%28%29%20%7B%0A%0A%09//%20Executing%20both%20pixelPosition%20%26%20boxSizingReliable%20tests%20require%20only%20one%20layout%0A%09//%20so%20they%27re%20executed%20at%20the%20same%20time%20to%20save%20the%20second%20computation.%0A%09function%20computeStyleTests%28%29%20%7B%0A%0A%09%09//%20This%20is%20a%20singleton%2C%20we%20need%20to%20execute%20it%20only%20once%0A%09%09if%20%28%20%21div%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09container.style.cssText%20%3D%20%22position%3Aabsolute%3Bleft%3A-11111px%3Bwidth%3A60px%3B%22%20%2B%0A%09%09%09%22margin-top%3A1px%3Bpadding%3A0%3Bborder%3A0%22%3B%0A%09%09div.style.cssText%20%3D%0A%09%09%09%22position%3Arelative%3Bdisplay%3Ablock%3Bbox-sizing%3Aborder-box%3Boverflow%3Ascroll%3B%22%20%2B%0A%09%09%09%22margin%3Aauto%3Bborder%3A1px%3Bpadding%3A1px%3B%22%20%2B%0A%09%09%09%22width%3A60%25%3Btop%3A1%25%22%3B%0A%09%09documentElement.appendChild%28%20container%20%29.appendChild%28%20div%20%29%3B%0A%0A%09%09var%20divStyle%20%3D%20window.getComputedStyle%28%20div%20%29%3B%0A%09%09pixelPositionVal%20%3D%20divStyle.top%20%21%3D%3D%20%221%25%22%3B%0A%0A%09%09//%20Support%3A%20Android%204.0%20-%204.3%20only%2C%20Firefox%20%3C%3D3%20-%2044%0A%09%09reliableMarginLeftVal%20%3D%20roundPixelMeasures%28%20divStyle.marginLeft%20%29%20%3D%3D%3D%2012%3B%0A%0A%09%09//%20Support%3A%20Android%204.0%20-%204.3%20only%2C%20Safari%20%3C%3D9.1%20-%2010.1%2C%20iOS%20%3C%3D7.0%20-%209.3%0A%09%09//%20Some%20styles%20come%20back%20with%20percentage%20values%2C%20even%20though%20they%20shouldn%27t%0A%09%09div.style.right%20%3D%20%2260%25%22%3B%0A%09%09pixelBoxStylesVal%20%3D%20roundPixelMeasures%28%20divStyle.right%20%29%20%3D%3D%3D%2036%3B%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09%09//%20Detect%20misreporting%20of%20content%20dimensions%20for%20box-sizing%3Aborder-box%20elements%0A%09%09boxSizingReliableVal%20%3D%20roundPixelMeasures%28%20divStyle.width%20%29%20%3D%3D%3D%2036%3B%0A%0A%09%09//%20Support%3A%20IE%209%20only%0A%09%09//%20Detect%20overflow%3Ascroll%20screwiness%20%28gh-3699%29%0A%09%09//%20Support%3A%20Chrome%20%3C%3D64%0A%09%09//%20Don%27t%20get%20tricked%20when%20zoom%20affects%20offsetWidth%20%28gh-4029%29%0A%09%09div.style.position%20%3D%20%22absolute%22%3B%0A%09%09scrollboxSizeVal%20%3D%20roundPixelMeasures%28%20div.offsetWidth%20/%203%20%29%20%3D%3D%3D%2012%3B%0A%0A%09%09documentElement.removeChild%28%20container%20%29%3B%0A%0A%09%09//%20Nullify%20the%20div%20so%20it%20wouldn%27t%20be%20stored%20in%20the%20memory%20and%0A%09%09//%20it%20will%20also%20be%20a%20sign%20that%20checks%20already%20performed%0A%09%09div%20%3D%20null%3B%0A%09%7D%0A%0A%09function%20roundPixelMeasures%28%20measure%20%29%20%7B%0A%09%09return%20Math.round%28%20parseFloat%28%20measure%20%29%20%29%3B%0A%09%7D%0A%0A%09var%20pixelPositionVal%2C%20boxSizingReliableVal%2C%20scrollboxSizeVal%2C%20pixelBoxStylesVal%2C%0A%09%09reliableTrDimensionsVal%2C%20reliableMarginLeftVal%2C%0A%09%09container%20%3D%20document.createElement%28%20%22div%22%20%29%2C%0A%09%09div%20%3D%20document.createElement%28%20%22div%22%20%29%3B%0A%0A%09//%20Finish%20early%20in%20limited%20%28non-browser%29%20environments%0A%09if%20%28%20%21div.style%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09//%20Style%20of%20cloned%20element%20affects%20source%20element%20cloned%20%28%238908%29%0A%09div.style.backgroundClip%20%3D%20%22content-box%22%3B%0A%09div.cloneNode%28%20true%20%29.style.backgroundClip%20%3D%20%22%22%3B%0A%09support.clearCloneStyle%20%3D%20div.style.backgroundClip%20%3D%3D%3D%20%22content-box%22%3B%0A%0A%09jQuery.extend%28%20support%2C%20%7B%0A%09%09boxSizingReliable%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20boxSizingReliableVal%3B%0A%09%09%7D%2C%0A%09%09pixelBoxStyles%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20pixelBoxStylesVal%3B%0A%09%09%7D%2C%0A%09%09pixelPosition%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20pixelPositionVal%3B%0A%09%09%7D%2C%0A%09%09reliableMarginLeft%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20reliableMarginLeftVal%3B%0A%09%09%7D%2C%0A%09%09scrollboxSize%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20scrollboxSizeVal%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09//%20IE/Edge%20misreport%20%60getComputedStyle%60%20of%20table%20rows%20with%20width/height%0A%09%09//%20set%20in%20CSS%20while%20%60offset%2A%60%20properties%20report%20correct%20values.%0A%09%09//%20Behavior%20in%20IE%209%20is%20more%20subtle%20than%20in%20newer%20versions%20%26%20it%20passes%0A%09%09//%20some%20versions%20of%20this%20test%3B%20make%20sure%20not%20to%20make%20it%20pass%20there%21%0A%09%09reliableTrDimensions%3A%20function%28%29%20%7B%0A%09%09%09var%20table%2C%20tr%2C%20trChild%2C%20trStyle%3B%0A%09%09%09if%20%28%20reliableTrDimensionsVal%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09table%20%3D%20document.createElement%28%20%22table%22%20%29%3B%0A%09%09%09%09tr%20%3D%20document.createElement%28%20%22tr%22%20%29%3B%0A%09%09%09%09trChild%20%3D%20document.createElement%28%20%22div%22%20%29%3B%0A%0A%09%09%09%09table.style.cssText%20%3D%20%22position%3Aabsolute%3Bleft%3A-11111px%22%3B%0A%09%09%09%09tr.style.height%20%3D%20%221px%22%3B%0A%09%09%09%09trChild.style.height%20%3D%20%229px%22%3B%0A%0A%09%09%09%09documentElement%0A%09%09%09%09%09.appendChild%28%20table%20%29%0A%09%09%09%09%09.appendChild%28%20tr%20%29%0A%09%09%09%09%09.appendChild%28%20trChild%20%29%3B%0A%0A%09%09%09%09trStyle%20%3D%20window.getComputedStyle%28%20tr%20%29%3B%0A%09%09%09%09reliableTrDimensionsVal%20%3D%20parseInt%28%20trStyle.height%20%29%20%3E%203%3B%0A%0A%09%09%09%09documentElement.removeChild%28%20table%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20reliableTrDimensionsVal%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%20%29%28%29%3B%0A%0A%0Afunction%20curCSS%28%20elem%2C%20name%2C%20computed%20%29%20%7B%0A%09var%20width%2C%20minWidth%2C%20maxWidth%2C%20ret%2C%0A%0A%09%09//%20Support%3A%20Firefox%2051%2B%0A%09%09//%20Retrieving%20style%20before%20computed%20somehow%0A%09%09//%20fixes%20an%20issue%20with%20getting%20wrong%20values%0A%09%09//%20on%20detached%20elements%0A%09%09style%20%3D%20elem.style%3B%0A%0A%09computed%20%3D%20computed%20%7C%7C%20getStyles%28%20elem%20%29%3B%0A%0A%09//%20getPropertyValue%20is%20needed%20for%3A%0A%09//%20%20%20.css%28%27filter%27%29%20%28IE%209%20only%2C%20%2312537%29%0A%09//%20%20%20.css%28%27--customProperty%29%20%28%233144%29%0A%09if%20%28%20computed%20%29%20%7B%0A%09%09ret%20%3D%20computed.getPropertyValue%28%20name%20%29%20%7C%7C%20computed%5B%20name%20%5D%3B%0A%0A%09%09if%20%28%20ret%20%3D%3D%3D%20%22%22%20%26%26%20%21isAttached%28%20elem%20%29%20%29%20%7B%0A%09%09%09ret%20%3D%20jQuery.style%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20A%20tribute%20to%20the%20%22awesome%20hack%20by%20Dean%20Edwards%22%0A%09%09//%20Android%20Browser%20returns%20percentage%20for%20some%20values%2C%0A%09%09//%20but%20width%20seems%20to%20be%20reliably%20pixels.%0A%09%09//%20This%20is%20against%20the%20CSSOM%20draft%20spec%3A%0A%09%09//%20https%3A//drafts.csswg.org/cssom/%23resolved-values%0A%09%09if%20%28%20%21support.pixelBoxStyles%28%29%20%26%26%20rnumnonpx.test%28%20ret%20%29%20%26%26%20rboxStyle.test%28%20name%20%29%20%29%20%7B%0A%0A%09%09%09//%20Remember%20the%20original%20values%0A%09%09%09width%20%3D%20style.width%3B%0A%09%09%09minWidth%20%3D%20style.minWidth%3B%0A%09%09%09maxWidth%20%3D%20style.maxWidth%3B%0A%0A%09%09%09//%20Put%20in%20the%20new%20values%20to%20get%20a%20computed%20value%20out%0A%09%09%09style.minWidth%20%3D%20style.maxWidth%20%3D%20style.width%20%3D%20ret%3B%0A%09%09%09ret%20%3D%20computed.width%3B%0A%0A%09%09%09//%20Revert%20the%20changed%20values%0A%09%09%09style.width%20%3D%20width%3B%0A%09%09%09style.minWidth%20%3D%20minWidth%3B%0A%09%09%09style.maxWidth%20%3D%20maxWidth%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20ret%20%21%3D%3D%20undefined%20%3F%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09%09//%20IE%20returns%20zIndex%20value%20as%20an%20integer.%0A%09%09ret%20%2B%20%22%22%20%3A%0A%09%09ret%3B%0A%7D%0A%0A%0Afunction%20addGetHookIf%28%20conditionFn%2C%20hookFn%20%29%20%7B%0A%0A%09//%20Define%20the%20hook%2C%20we%27ll%20check%20on%20the%20first%20run%20if%20it%27s%20really%20needed.%0A%09return%20%7B%0A%09%09get%3A%20function%28%29%20%7B%0A%09%09%09if%20%28%20conditionFn%28%29%20%29%20%7B%0A%0A%09%09%09%09//%20Hook%20not%20needed%20%28or%20it%27s%20not%20possible%20to%20use%20it%20due%0A%09%09%09%09//%20to%20missing%20dependency%29%2C%20remove%20it.%0A%09%09%09%09delete%20this.get%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Hook%20needed%3B%20redefine%20it%20so%20that%20the%20support%20test%20is%20not%20executed%20again.%0A%09%09%09return%20%28%20this.get%20%3D%20hookFn%20%29.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0A%0Avar%20cssPrefixes%20%3D%20%5B%20%22Webkit%22%2C%20%22Moz%22%2C%20%22ms%22%20%5D%2C%0A%09emptyStyle%20%3D%20document.createElement%28%20%22div%22%20%29.style%2C%0A%09vendorProps%20%3D%20%7B%7D%3B%0A%0A//%20Return%20a%20vendor-prefixed%20property%20or%20undefined%0Afunction%20vendorPropName%28%20name%20%29%20%7B%0A%0A%09//%20Check%20for%20vendor%20prefixed%20names%0A%09var%20capName%20%3D%20name%5B%200%20%5D.toUpperCase%28%29%20%2B%20name.slice%28%201%20%29%2C%0A%09%09i%20%3D%20cssPrefixes.length%3B%0A%0A%09while%20%28%20i--%20%29%20%7B%0A%09%09name%20%3D%20cssPrefixes%5B%20i%20%5D%20%2B%20capName%3B%0A%09%09if%20%28%20name%20in%20emptyStyle%20%29%20%7B%0A%09%09%09return%20name%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0A//%20Return%20a%20potentially-mapped%20jQuery.cssProps%20or%20vendor%20prefixed%20property%0Afunction%20finalPropName%28%20name%20%29%20%7B%0A%09var%20final%20%3D%20jQuery.cssProps%5B%20name%20%5D%20%7C%7C%20vendorProps%5B%20name%20%5D%3B%0A%0A%09if%20%28%20final%20%29%20%7B%0A%09%09return%20final%3B%0A%09%7D%0A%09if%20%28%20name%20in%20emptyStyle%20%29%20%7B%0A%09%09return%20name%3B%0A%09%7D%0A%09return%20vendorProps%5B%20name%20%5D%20%3D%20vendorPropName%28%20name%20%29%20%7C%7C%20name%3B%0A%7D%0A%0A%0Avar%0A%0A%09//%20Swappable%20if%20display%20is%20none%20or%20starts%20with%20table%0A%09//%20except%20%22table%22%2C%20%22table-cell%22%2C%20or%20%22table-caption%22%0A%09//%20See%20here%20for%20display%20values%3A%20https%3A//developer.mozilla.org/en-US/docs/CSS/display%0A%09rdisplayswap%20%3D%20/%5E%28none%7Ctable%28%3F%21-c%5Bea%5D%29.%2B%29/%2C%0A%09rcustomProp%20%3D%20/%5E--/%2C%0A%09cssShow%20%3D%20%7B%20position%3A%20%22absolute%22%2C%20visibility%3A%20%22hidden%22%2C%20display%3A%20%22block%22%20%7D%2C%0A%09cssNormalTransform%20%3D%20%7B%0A%09%09letterSpacing%3A%20%220%22%2C%0A%09%09fontWeight%3A%20%22400%22%0A%09%7D%3B%0A%0Afunction%20setPositiveNumber%28%20_elem%2C%20value%2C%20subtract%20%29%20%7B%0A%0A%09//%20Any%20relative%20%28%2B/-%29%20values%20have%20already%20been%0A%09//%20normalized%20at%20this%20point%0A%09var%20matches%20%3D%20rcssNum.exec%28%20value%20%29%3B%0A%09return%20matches%20%3F%0A%0A%09%09//%20Guard%20against%20undefined%20%22subtract%22%2C%20e.g.%2C%20when%20used%20as%20in%20cssHooks%0A%09%09Math.max%28%200%2C%20matches%5B%202%20%5D%20-%20%28%20subtract%20%7C%7C%200%20%29%20%29%20%2B%20%28%20matches%5B%203%20%5D%20%7C%7C%20%22px%22%20%29%20%3A%0A%09%09value%3B%0A%7D%0A%0Afunction%20boxModelAdjustment%28%20elem%2C%20dimension%2C%20box%2C%20isBorderBox%2C%20styles%2C%20computedVal%20%29%20%7B%0A%09var%20i%20%3D%20dimension%20%3D%3D%3D%20%22width%22%20%3F%201%20%3A%200%2C%0A%09%09extra%20%3D%200%2C%0A%09%09delta%20%3D%200%3B%0A%0A%09//%20Adjustment%20may%20not%20be%20necessary%0A%09if%20%28%20box%20%3D%3D%3D%20%28%20isBorderBox%20%3F%20%22border%22%20%3A%20%22content%22%20%29%20%29%20%7B%0A%09%09return%200%3B%0A%09%7D%0A%0A%09for%20%28%20%3B%20i%20%3C%204%3B%20i%20%2B%3D%202%20%29%20%7B%0A%0A%09%09//%20Both%20box%20models%20exclude%20margin%0A%09%09if%20%28%20box%20%3D%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20box%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20If%20we%20get%20here%20with%20a%20content-box%2C%20we%27re%20seeking%20%22padding%22%20or%20%22border%22%20or%20%22margin%22%0A%09%09if%20%28%20%21isBorderBox%20%29%20%7B%0A%0A%09%09%09//%20Add%20padding%0A%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20%22padding%22%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%0A%09%09%09//%20For%20%22border%22%20or%20%22margin%22%2C%20add%20border%0A%09%09%09if%20%28%20box%20%21%3D%3D%20%22padding%22%20%29%20%7B%0A%09%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%0A%09%09%09//%20But%20still%20keep%20track%20of%20it%20otherwise%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09extra%20%2B%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%0A%09%09//%20If%20we%20get%20here%20with%20a%20border-box%20%28content%20%2B%20padding%20%2B%20border%29%2C%20we%27re%20seeking%20%22content%22%20or%0A%09%09//%20%22padding%22%20or%20%22margin%22%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20For%20%22content%22%2C%20subtract%20padding%0A%09%09%09if%20%28%20box%20%3D%3D%3D%20%22content%22%20%29%20%7B%0A%09%09%09%09delta%20-%3D%20jQuery.css%28%20elem%2C%20%22padding%22%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20For%20%22content%22%20or%20%22padding%22%2C%20subtract%20border%0A%09%09%09if%20%28%20box%20%21%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09%09%09delta%20-%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Account%20for%20positive%20content-box%20scroll%20gutter%20when%20requested%20by%20providing%20computedVal%0A%09if%20%28%20%21isBorderBox%20%26%26%20computedVal%20%3E%3D%200%20%29%20%7B%0A%0A%09%09//%20offsetWidth/offsetHeight%20is%20a%20rounded%20sum%20of%20content%2C%20padding%2C%20scroll%20gutter%2C%20and%20border%0A%09%09//%20Assuming%20integer%20scroll%20gutter%2C%20subtract%20the%20rest%20and%20round%20down%0A%09%09delta%20%2B%3D%20Math.max%28%200%2C%20Math.ceil%28%0A%09%09%09elem%5B%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%20%5D%20-%0A%09%09%09computedVal%20-%0A%09%09%09delta%20-%0A%09%09%09extra%20-%0A%09%09%090.5%0A%0A%09%09//%20If%20offsetWidth/offsetHeight%20is%20unknown%2C%20then%20we%20can%27t%20determine%20content-box%20scroll%20gutter%0A%09%09//%20Use%20an%20explicit%20zero%20to%20avoid%20NaN%20%28gh-3964%29%0A%09%09%29%20%29%20%7C%7C%200%3B%0A%09%7D%0A%0A%09return%20delta%3B%0A%7D%0A%0Afunction%20getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%20%7B%0A%0A%09//%20Start%20with%20computed%20style%0A%09var%20styles%20%3D%20getStyles%28%20elem%20%29%2C%0A%0A%09%09//%20To%20avoid%20forcing%20a%20reflow%2C%20only%20fetch%20boxSizing%20if%20we%20need%20it%20%28gh-4322%29.%0A%09%09//%20Fake%20content-box%20until%20we%20know%20it%27s%20needed%20to%20know%20the%20true%20value.%0A%09%09boxSizingNeeded%20%3D%20%21support.boxSizingReliable%28%29%20%7C%7C%20extra%2C%0A%09%09isBorderBox%20%3D%20boxSizingNeeded%20%26%26%0A%09%09%09jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%2C%0A%09%09valueIsBorderBox%20%3D%20isBorderBox%2C%0A%0A%09%09val%20%3D%20curCSS%28%20elem%2C%20dimension%2C%20styles%20%29%2C%0A%09%09offsetProp%20%3D%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%3B%0A%0A%09//%20Support%3A%20Firefox%20%3C%3D54%0A%09//%20Return%20a%20confounding%20non-pixel%20value%20or%20feign%20ignorance%2C%20as%20appropriate.%0A%09if%20%28%20rnumnonpx.test%28%20val%20%29%20%29%20%7B%0A%09%09if%20%28%20%21extra%20%29%20%7B%0A%09%09%09return%20val%3B%0A%09%09%7D%0A%09%09val%20%3D%20%22auto%22%3B%0A%09%7D%0A%0A%0A%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09//%20Use%20offsetWidth/offsetHeight%20for%20when%20box%20sizing%20is%20unreliable.%0A%09//%20In%20those%20cases%2C%20the%20computed%20value%20can%20be%20trusted%20to%20be%20border-box.%0A%09if%20%28%20%28%20%21support.boxSizingReliable%28%29%20%26%26%20isBorderBox%20%7C%7C%0A%0A%09%09//%20Support%3A%20IE%2010%20-%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09//%20IE/Edge%20misreport%20%60getComputedStyle%60%20of%20table%20rows%20with%20width/height%0A%09%09//%20set%20in%20CSS%20while%20%60offset%2A%60%20properties%20report%20correct%20values.%0A%09%09//%20Interestingly%2C%20in%20some%20cases%20IE%209%20doesn%27t%20suffer%20from%20this%20issue.%0A%09%09%21support.reliableTrDimensions%28%29%20%26%26%20nodeName%28%20elem%2C%20%22tr%22%20%29%20%7C%7C%0A%0A%09%09//%20Fall%20back%20to%20offsetWidth/offsetHeight%20when%20value%20is%20%22auto%22%0A%09%09//%20This%20happens%20for%20inline%20elements%20with%20no%20explicit%20setting%20%28gh-3571%29%0A%09%09val%20%3D%3D%3D%20%22auto%22%20%7C%7C%0A%0A%09%09//%20Support%3A%20Android%20%3C%3D4.1%20-%204.3%20only%0A%09%09//%20Also%20use%20offsetWidth/offsetHeight%20for%20misreported%20inline%20dimensions%20%28gh-3602%29%0A%09%09%21parseFloat%28%20val%20%29%20%26%26%20jQuery.css%28%20elem%2C%20%22display%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22inline%22%20%29%20%26%26%0A%0A%09%09//%20Make%20sure%20the%20element%20is%20visible%20%26%20connected%0A%09%09elem.getClientRects%28%29.length%20%29%20%7B%0A%0A%09%09isBorderBox%20%3D%20jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%3B%0A%0A%09%09//%20Where%20available%2C%20offsetWidth/offsetHeight%20approximate%20border%20box%20dimensions.%0A%09%09//%20Where%20not%20available%20%28e.g.%2C%20SVG%29%2C%20assume%20unreliable%20box-sizing%20and%20interpret%20the%0A%09%09//%20retrieved%20value%20as%20a%20content%20box%20dimension.%0A%09%09valueIsBorderBox%20%3D%20offsetProp%20in%20elem%3B%0A%09%09if%20%28%20valueIsBorderBox%20%29%20%7B%0A%09%09%09val%20%3D%20elem%5B%20offsetProp%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Normalize%20%22%22%20and%20auto%0A%09val%20%3D%20parseFloat%28%20val%20%29%20%7C%7C%200%3B%0A%0A%09//%20Adjust%20for%20the%20element%27s%20box%20model%0A%09return%20%28%20val%20%2B%0A%09%09boxModelAdjustment%28%0A%09%09%09elem%2C%0A%09%09%09dimension%2C%0A%09%09%09extra%20%7C%7C%20%28%20isBorderBox%20%3F%20%22border%22%20%3A%20%22content%22%20%29%2C%0A%09%09%09valueIsBorderBox%2C%0A%09%09%09styles%2C%0A%0A%09%09%09//%20Provide%20the%20current%20computed%20size%20to%20request%20scroll%20gutter%20calculation%20%28gh-3589%29%0A%09%09%09val%0A%09%09%29%0A%09%29%20%2B%20%22px%22%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Add%20in%20style%20property%20hooks%20for%20overriding%20the%20default%0A%09//%20behavior%20of%20getting%20and%20setting%20a%20style%20property%0A%09cssHooks%3A%20%7B%0A%09%09opacity%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09%09%09if%20%28%20computed%20%29%20%7B%0A%0A%09%09%09%09%09//%20We%20should%20always%20get%20a%20number%20back%20from%20opacity%0A%09%09%09%09%09var%20ret%20%3D%20curCSS%28%20elem%2C%20%22opacity%22%20%29%3B%0A%09%09%09%09%09return%20ret%20%3D%3D%3D%20%22%22%20%3F%20%221%22%20%3A%20ret%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Don%27t%20automatically%20add%20%22px%22%20to%20these%20possibly-unitless%20properties%0A%09cssNumber%3A%20%7B%0A%09%09%22animationIterationCount%22%3A%20true%2C%0A%09%09%22columnCount%22%3A%20true%2C%0A%09%09%22fillOpacity%22%3A%20true%2C%0A%09%09%22flexGrow%22%3A%20true%2C%0A%09%09%22flexShrink%22%3A%20true%2C%0A%09%09%22fontWeight%22%3A%20true%2C%0A%09%09%22gridArea%22%3A%20true%2C%0A%09%09%22gridColumn%22%3A%20true%2C%0A%09%09%22gridColumnEnd%22%3A%20true%2C%0A%09%09%22gridColumnStart%22%3A%20true%2C%0A%09%09%22gridRow%22%3A%20true%2C%0A%09%09%22gridRowEnd%22%3A%20true%2C%0A%09%09%22gridRowStart%22%3A%20true%2C%0A%09%09%22lineHeight%22%3A%20true%2C%0A%09%09%22opacity%22%3A%20true%2C%0A%09%09%22order%22%3A%20true%2C%0A%09%09%22orphans%22%3A%20true%2C%0A%09%09%22widows%22%3A%20true%2C%0A%09%09%22zIndex%22%3A%20true%2C%0A%09%09%22zoom%22%3A%20true%0A%09%7D%2C%0A%0A%09//%20Add%20in%20properties%20whose%20names%20you%20wish%20to%20fix%20before%0A%09//%20setting%20or%20getting%20the%20value%0A%09cssProps%3A%20%7B%7D%2C%0A%0A%09//%20Get%20and%20set%20the%20style%20property%20on%20a%20DOM%20Node%0A%09style%3A%20function%28%20elem%2C%20name%2C%20value%2C%20extra%20%29%20%7B%0A%0A%09%09//%20Don%27t%20set%20styles%20on%20text%20and%20comment%20nodes%0A%09%09if%20%28%20%21elem%20%7C%7C%20elem.nodeType%20%3D%3D%3D%203%20%7C%7C%20elem.nodeType%20%3D%3D%3D%208%20%7C%7C%20%21elem.style%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name%0A%09%09var%20ret%2C%20type%2C%20hooks%2C%0A%09%09%09origName%20%3D%20camelCase%28%20name%20%29%2C%0A%09%09%09isCustomProp%20%3D%20rcustomProp.test%28%20name%20%29%2C%0A%09%09%09style%20%3D%20elem.style%3B%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name.%20We%20don%27t%0A%09%09//%20want%20to%20query%20the%20value%20if%20it%20is%20a%20CSS%20custom%20property%0A%09%09//%20since%20they%20are%20user-defined.%0A%09%09if%20%28%20%21isCustomProp%20%29%20%7B%0A%09%09%09name%20%3D%20finalPropName%28%20origName%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Gets%20hook%20for%20the%20prefixed%20version%2C%20then%20unprefixed%20version%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%20%7C%7C%20jQuery.cssHooks%5B%20origName%20%5D%3B%0A%0A%09%09//%20Check%20if%20we%27re%20setting%20a%20value%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09type%20%3D%20typeof%20value%3B%0A%0A%09%09%09//%20Convert%20%22%2B%3D%22%20or%20%22-%3D%22%20to%20relative%20numbers%20%28%237345%29%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22string%22%20%26%26%20%28%20ret%20%3D%20rcssNum.exec%28%20value%20%29%20%29%20%26%26%20ret%5B%201%20%5D%20%29%20%7B%0A%09%09%09%09value%20%3D%20adjustCSS%28%20elem%2C%20name%2C%20ret%20%29%3B%0A%0A%09%09%09%09//%20Fixes%20bug%20%239237%0A%09%09%09%09type%20%3D%20%22number%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Make%20sure%20that%20null%20and%20NaN%20values%20aren%27t%20set%20%28%237116%29%0A%09%09%09if%20%28%20value%20%3D%3D%20null%20%7C%7C%20value%20%21%3D%3D%20value%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20a%20number%20was%20passed%20in%2C%20add%20the%20unit%20%28except%20for%20certain%20CSS%20properties%29%0A%09%09%09//%20The%20isCustomProp%20check%20can%20be%20removed%20in%20jQuery%204.0%20when%20we%20only%20auto-append%0A%09%09%09//%20%22px%22%20to%20a%20few%20hardcoded%20values.%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22number%22%20%26%26%20%21isCustomProp%20%29%20%7B%0A%09%09%09%09value%20%2B%3D%20ret%20%26%26%20ret%5B%203%20%5D%20%7C%7C%20%28%20jQuery.cssNumber%5B%20origName%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20background-%2A%20props%20affect%20original%20clone%27s%20values%0A%09%09%09if%20%28%20%21support.clearCloneStyle%20%26%26%20value%20%3D%3D%3D%20%22%22%20%26%26%20name.indexOf%28%20%22background%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09%09style%5B%20name%20%5D%20%3D%20%22inherit%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20a%20hook%20was%20provided%2C%20use%20that%20value%2C%20otherwise%20just%20set%20the%20specified%20value%0A%09%09%09if%20%28%20%21hooks%20%7C%7C%20%21%28%20%22set%22%20in%20hooks%20%29%20%7C%7C%0A%09%09%09%09%28%20value%20%3D%20hooks.set%28%20elem%2C%20value%2C%20extra%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09if%20%28%20isCustomProp%20%29%20%7B%0A%09%09%09%09%09style.setProperty%28%20name%2C%20value%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09style%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20If%20a%20hook%20was%20provided%20get%20the%20non-computed%20value%20from%20there%0A%09%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.get%28%20elem%2C%20false%2C%20extra%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Otherwise%20just%20get%20the%20value%20from%20the%20style%20object%0A%09%09%09return%20style%5B%20name%20%5D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09css%3A%20function%28%20elem%2C%20name%2C%20extra%2C%20styles%20%29%20%7B%0A%09%09var%20val%2C%20num%2C%20hooks%2C%0A%09%09%09origName%20%3D%20camelCase%28%20name%20%29%2C%0A%09%09%09isCustomProp%20%3D%20rcustomProp.test%28%20name%20%29%3B%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name.%20We%20don%27t%0A%09%09//%20want%20to%20modify%20the%20value%20if%20it%20is%20a%20CSS%20custom%20property%0A%09%09//%20since%20they%20are%20user-defined.%0A%09%09if%20%28%20%21isCustomProp%20%29%20%7B%0A%09%09%09name%20%3D%20finalPropName%28%20origName%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Try%20prefixed%20name%20followed%20by%20the%20unprefixed%20name%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%20%7C%7C%20jQuery.cssHooks%5B%20origName%20%5D%3B%0A%0A%09%09//%20If%20a%20hook%20was%20provided%20get%20the%20computed%20value%20from%20there%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%29%20%7B%0A%09%09%09val%20%3D%20hooks.get%28%20elem%2C%20true%2C%20extra%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Otherwise%2C%20if%20a%20way%20to%20get%20the%20computed%20value%20exists%2C%20use%20that%0A%09%09if%20%28%20val%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09val%20%3D%20curCSS%28%20elem%2C%20name%2C%20styles%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Convert%20%22normal%22%20to%20computed%20value%0A%09%09if%20%28%20val%20%3D%3D%3D%20%22normal%22%20%26%26%20name%20in%20cssNormalTransform%20%29%20%7B%0A%09%09%09val%20%3D%20cssNormalTransform%5B%20name%20%5D%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20numeric%20if%20forced%20or%20a%20qualifier%20was%20provided%20and%20val%20looks%20numeric%0A%09%09if%20%28%20extra%20%3D%3D%3D%20%22%22%20%7C%7C%20extra%20%29%20%7B%0A%09%09%09num%20%3D%20parseFloat%28%20val%20%29%3B%0A%09%09%09return%20extra%20%3D%3D%3D%20true%20%7C%7C%20isFinite%28%20num%20%29%20%3F%20num%20%7C%7C%200%20%3A%20val%3B%0A%09%09%7D%0A%0A%09%09return%20val%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22height%22%2C%20%22width%22%20%5D%2C%20function%28%20_i%2C%20dimension%20%29%20%7B%0A%09jQuery.cssHooks%5B%20dimension%20%5D%20%3D%20%7B%0A%09%09get%3A%20function%28%20elem%2C%20computed%2C%20extra%20%29%20%7B%0A%09%09%09if%20%28%20computed%20%29%20%7B%0A%0A%09%09%09%09//%20Certain%20elements%20can%20have%20dimension%20info%20if%20we%20invisibly%20show%20them%0A%09%09%09%09//%20but%20it%20must%20have%20a%20current%20display%20style%20that%20would%20benefit%0A%09%09%09%09return%20rdisplayswap.test%28%20jQuery.css%28%20elem%2C%20%22display%22%20%29%20%29%20%26%26%0A%0A%09%09%09%09%09//%20Support%3A%20Safari%208%2B%0A%09%09%09%09%09//%20Table%20columns%20in%20Safari%20have%20non-zero%20offsetWidth%20%26%20zero%0A%09%09%09%09%09//%20getBoundingClientRect%28%29.width%20unless%20display%20is%20changed.%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09%09%09%09%09//%20Running%20getBoundingClientRect%20on%20a%20disconnected%20node%0A%09%09%09%09%09//%20in%20IE%20throws%20an%20error.%0A%09%09%09%09%09%28%20%21elem.getClientRects%28%29.length%20%7C%7C%20%21elem.getBoundingClientRect%28%29.width%20%29%20%3F%0A%09%09%09%09%09%09swap%28%20elem%2C%20cssShow%2C%20function%28%29%20%7B%0A%09%09%09%09%09%09%09return%20getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%3B%0A%09%09%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09%09%09getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09set%3A%20function%28%20elem%2C%20value%2C%20extra%20%29%20%7B%0A%09%09%09var%20matches%2C%0A%09%09%09%09styles%20%3D%20getStyles%28%20elem%20%29%2C%0A%0A%09%09%09%09//%20Only%20read%20styles.position%20if%20the%20test%20has%20a%20chance%20to%20fail%0A%09%09%09%09//%20to%20avoid%20forcing%20a%20reflow.%0A%09%09%09%09scrollboxSizeBuggy%20%3D%20%21support.scrollboxSize%28%29%20%26%26%0A%09%09%09%09%09styles.position%20%3D%3D%3D%20%22absolute%22%2C%0A%0A%09%09%09%09//%20To%20avoid%20forcing%20a%20reflow%2C%20only%20fetch%20boxSizing%20if%20we%20need%20it%20%28gh-3991%29%0A%09%09%09%09boxSizingNeeded%20%3D%20scrollboxSizeBuggy%20%7C%7C%20extra%2C%0A%09%09%09%09isBorderBox%20%3D%20boxSizingNeeded%20%26%26%0A%09%09%09%09%09jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%2C%0A%09%09%09%09subtract%20%3D%20extra%20%3F%0A%09%09%09%09%09boxModelAdjustment%28%0A%09%09%09%09%09%09elem%2C%0A%09%09%09%09%09%09dimension%2C%0A%09%09%09%09%09%09extra%2C%0A%09%09%09%09%09%09isBorderBox%2C%0A%09%09%09%09%09%09styles%0A%09%09%09%09%09%29%20%3A%0A%09%09%09%09%090%3B%0A%0A%09%09%09//%20Account%20for%20unreliable%20border-box%20dimensions%20by%20comparing%20offset%2A%20to%20computed%20and%0A%09%09%09//%20faking%20a%20content-box%20to%20get%20border%20and%20padding%20%28gh-3699%29%0A%09%09%09if%20%28%20isBorderBox%20%26%26%20scrollboxSizeBuggy%20%29%20%7B%0A%09%09%09%09subtract%20-%3D%20Math.ceil%28%0A%09%09%09%09%09elem%5B%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%20%5D%20-%0A%09%09%09%09%09parseFloat%28%20styles%5B%20dimension%20%5D%20%29%20-%0A%09%09%09%09%09boxModelAdjustment%28%20elem%2C%20dimension%2C%20%22border%22%2C%20false%2C%20styles%20%29%20-%0A%09%09%09%09%090.5%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Convert%20to%20pixels%20if%20value%20adjustment%20is%20needed%0A%09%09%09if%20%28%20subtract%20%26%26%20%28%20matches%20%3D%20rcssNum.exec%28%20value%20%29%20%29%20%26%26%0A%09%09%09%09%28%20matches%5B%203%20%5D%20%7C%7C%20%22px%22%20%29%20%21%3D%3D%20%22px%22%20%29%20%7B%0A%0A%09%09%09%09elem.style%5B%20dimension%20%5D%20%3D%20value%3B%0A%09%09%09%09value%20%3D%20jQuery.css%28%20elem%2C%20dimension%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20setPositiveNumber%28%20elem%2C%20value%2C%20subtract%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.cssHooks.marginLeft%20%3D%20addGetHookIf%28%20support.reliableMarginLeft%2C%0A%09function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09if%20%28%20computed%20%29%20%7B%0A%09%09%09return%20%28%20parseFloat%28%20curCSS%28%20elem%2C%20%22marginLeft%22%20%29%20%29%20%7C%7C%0A%09%09%09%09elem.getBoundingClientRect%28%29.left%20-%0A%09%09%09%09%09swap%28%20elem%2C%20%7B%20marginLeft%3A%200%20%7D%2C%20function%28%29%20%7B%0A%09%09%09%09%09%09return%20elem.getBoundingClientRect%28%29.left%3B%0A%09%09%09%09%09%7D%20%29%0A%09%09%09%09%29%20%2B%20%22px%22%3B%0A%09%09%7D%0A%09%7D%0A%29%3B%0A%0A//%20These%20hooks%20are%20used%20by%20animate%20to%20expand%20properties%0AjQuery.each%28%20%7B%0A%09margin%3A%20%22%22%2C%0A%09padding%3A%20%22%22%2C%0A%09border%3A%20%22Width%22%0A%7D%2C%20function%28%20prefix%2C%20suffix%20%29%20%7B%0A%09jQuery.cssHooks%5B%20prefix%20%2B%20suffix%20%5D%20%3D%20%7B%0A%09%09expand%3A%20function%28%20value%20%29%20%7B%0A%09%09%09var%20i%20%3D%200%2C%0A%09%09%09%09expanded%20%3D%20%7B%7D%2C%0A%0A%09%09%09%09//%20Assumes%20a%20single%20number%20if%20not%20a%20string%0A%09%09%09%09parts%20%3D%20typeof%20value%20%3D%3D%3D%20%22string%22%20%3F%20value.split%28%20%22%20%22%20%29%20%3A%20%5B%20value%20%5D%3B%0A%0A%09%09%09for%20%28%20%3B%20i%20%3C%204%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09expanded%5B%20prefix%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20suffix%20%5D%20%3D%0A%09%09%09%09%09parts%5B%20i%20%5D%20%7C%7C%20parts%5B%20i%20-%202%20%5D%20%7C%7C%20parts%5B%200%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20expanded%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09if%20%28%20prefix%20%21%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09jQuery.cssHooks%5B%20prefix%20%2B%20suffix%20%5D.set%20%3D%20setPositiveNumber%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09css%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09%09var%20styles%2C%20len%2C%0A%09%09%09%09map%20%3D%20%7B%7D%2C%0A%09%09%09%09i%20%3D%200%3B%0A%0A%09%09%09if%20%28%20Array.isArray%28%20name%20%29%20%29%20%7B%0A%09%09%09%09styles%20%3D%20getStyles%28%20elem%20%29%3B%0A%09%09%09%09len%20%3D%20name.length%3B%0A%0A%09%09%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09map%5B%20name%5B%20i%20%5D%20%5D%20%3D%20jQuery.css%28%20elem%2C%20name%5B%20i%20%5D%2C%20false%2C%20styles%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20map%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20value%20%21%3D%3D%20undefined%20%3F%0A%09%09%09%09jQuery.style%28%20elem%2C%20name%2C%20value%20%29%20%3A%0A%09%09%09%09jQuery.css%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Afunction%20Tween%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%20%29%20%7B%0A%09return%20new%20Tween.prototype.init%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%20%29%3B%0A%7D%0AjQuery.Tween%20%3D%20Tween%3B%0A%0ATween.prototype%20%3D%20%7B%0A%09constructor%3A%20Tween%2C%0A%09init%3A%20function%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%2C%20unit%20%29%20%7B%0A%09%09this.elem%20%3D%20elem%3B%0A%09%09this.prop%20%3D%20prop%3B%0A%09%09this.easing%20%3D%20easing%20%7C%7C%20jQuery.easing._default%3B%0A%09%09this.options%20%3D%20options%3B%0A%09%09this.start%20%3D%20this.now%20%3D%20this.cur%28%29%3B%0A%09%09this.end%20%3D%20end%3B%0A%09%09this.unit%20%3D%20unit%20%7C%7C%20%28%20jQuery.cssNumber%5B%20prop%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%3B%0A%09%7D%2C%0A%09cur%3A%20function%28%29%20%7B%0A%09%09var%20hooks%20%3D%20Tween.propHooks%5B%20this.prop%20%5D%3B%0A%0A%09%09return%20hooks%20%26%26%20hooks.get%20%3F%0A%09%09%09hooks.get%28%20this%20%29%20%3A%0A%09%09%09Tween.propHooks._default.get%28%20this%20%29%3B%0A%09%7D%2C%0A%09run%3A%20function%28%20percent%20%29%20%7B%0A%09%09var%20eased%2C%0A%09%09%09hooks%20%3D%20Tween.propHooks%5B%20this.prop%20%5D%3B%0A%0A%09%09if%20%28%20this.options.duration%20%29%20%7B%0A%09%09%09this.pos%20%3D%20eased%20%3D%20jQuery.easing%5B%20this.easing%20%5D%28%0A%09%09%09%09percent%2C%20this.options.duration%20%2A%20percent%2C%200%2C%201%2C%20this.options.duration%0A%09%09%09%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09this.pos%20%3D%20eased%20%3D%20percent%3B%0A%09%09%7D%0A%09%09this.now%20%3D%20%28%20this.end%20-%20this.start%20%29%20%2A%20eased%20%2B%20this.start%3B%0A%0A%09%09if%20%28%20this.options.step%20%29%20%7B%0A%09%09%09this.options.step.call%28%20this.elem%2C%20this.now%2C%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20hooks.set%20%29%20%7B%0A%09%09%09hooks.set%28%20this%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09Tween.propHooks._default.set%28%20this%20%29%3B%0A%09%09%7D%0A%09%09return%20this%3B%0A%09%7D%0A%7D%3B%0A%0ATween.prototype.init.prototype%20%3D%20Tween.prototype%3B%0A%0ATween.propHooks%20%3D%20%7B%0A%09_default%3A%20%7B%0A%09%09get%3A%20function%28%20tween%20%29%20%7B%0A%09%09%09var%20result%3B%0A%0A%09%09%09//%20Use%20a%20property%20on%20the%20element%20directly%20when%20it%20is%20not%20a%20DOM%20element%2C%0A%09%09%09//%20or%20when%20there%20is%20no%20matching%20style%20property%20that%20exists.%0A%09%09%09if%20%28%20tween.elem.nodeType%20%21%3D%3D%201%20%7C%7C%0A%09%09%09%09tween.elem%5B%20tween.prop%20%5D%20%21%3D%20null%20%26%26%20tween.elem.style%5B%20tween.prop%20%5D%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09return%20tween.elem%5B%20tween.prop%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Passing%20an%20empty%20string%20as%20a%203rd%20parameter%20to%20.css%20will%20automatically%0A%09%09%09//%20attempt%20a%20parseFloat%20and%20fallback%20to%20a%20string%20if%20the%20parse%20fails.%0A%09%09%09//%20Simple%20values%20such%20as%20%2210px%22%20are%20parsed%20to%20Float%3B%0A%09%09%09//%20complex%20values%20such%20as%20%22rotate%281rad%29%22%20are%20returned%20as-is.%0A%09%09%09result%20%3D%20jQuery.css%28%20tween.elem%2C%20tween.prop%2C%20%22%22%20%29%3B%0A%0A%09%09%09//%20Empty%20strings%2C%20null%2C%20undefined%20and%20%22auto%22%20are%20converted%20to%200.%0A%09%09%09return%20%21result%20%7C%7C%20result%20%3D%3D%3D%20%22auto%22%20%3F%200%20%3A%20result%3B%0A%09%09%7D%2C%0A%09%09set%3A%20function%28%20tween%20%29%20%7B%0A%0A%09%09%09//%20Use%20step%20hook%20for%20back%20compat.%0A%09%09%09//%20Use%20cssHook%20if%20its%20there.%0A%09%09%09//%20Use%20.style%20if%20available%20and%20use%20plain%20properties%20where%20available.%0A%09%09%09if%20%28%20jQuery.fx.step%5B%20tween.prop%20%5D%20%29%20%7B%0A%09%09%09%09jQuery.fx.step%5B%20tween.prop%20%5D%28%20tween%20%29%3B%0A%09%09%09%7D%20else%20if%20%28%20tween.elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%0A%09%09%09%09%09jQuery.cssHooks%5B%20tween.prop%20%5D%20%7C%7C%0A%09%09%09%09%09tween.elem.style%5B%20finalPropName%28%20tween.prop%20%29%20%5D%20%21%3D%20null%20%29%20%29%20%7B%0A%09%09%09%09jQuery.style%28%20tween.elem%2C%20tween.prop%2C%20tween.now%20%2B%20tween.unit%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09tween.elem%5B%20tween.prop%20%5D%20%3D%20tween.now%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0A//%20Panic%20based%20approach%20to%20setting%20things%20on%20disconnected%20nodes%0ATween.propHooks.scrollTop%20%3D%20Tween.propHooks.scrollLeft%20%3D%20%7B%0A%09set%3A%20function%28%20tween%20%29%20%7B%0A%09%09if%20%28%20tween.elem.nodeType%20%26%26%20tween.elem.parentNode%20%29%20%7B%0A%09%09%09tween.elem%5B%20tween.prop%20%5D%20%3D%20tween.now%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AjQuery.easing%20%3D%20%7B%0A%09linear%3A%20function%28%20p%20%29%20%7B%0A%09%09return%20p%3B%0A%09%7D%2C%0A%09swing%3A%20function%28%20p%20%29%20%7B%0A%09%09return%200.5%20-%20Math.cos%28%20p%20%2A%20Math.PI%20%29%20/%202%3B%0A%09%7D%2C%0A%09_default%3A%20%22swing%22%0A%7D%3B%0A%0AjQuery.fx%20%3D%20Tween.prototype.init%3B%0A%0A//%20Back%20compat%20%3C1.8%20extension%20point%0AjQuery.fx.step%20%3D%20%7B%7D%3B%0A%0A%0A%0A%0Avar%0A%09fxNow%2C%20inProgress%2C%0A%09rfxtypes%20%3D%20/%5E%28%3F%3Atoggle%7Cshow%7Chide%29%24/%2C%0A%09rrun%20%3D%20/queueHooks%24/%3B%0A%0Afunction%20schedule%28%29%20%7B%0A%09if%20%28%20inProgress%20%29%20%7B%0A%09%09if%20%28%20document.hidden%20%3D%3D%3D%20false%20%26%26%20window.requestAnimationFrame%20%29%20%7B%0A%09%09%09window.requestAnimationFrame%28%20schedule%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09window.setTimeout%28%20schedule%2C%20jQuery.fx.interval%20%29%3B%0A%09%09%7D%0A%0A%09%09jQuery.fx.tick%28%29%3B%0A%09%7D%0A%7D%0A%0A//%20Animations%20created%20synchronously%20will%20run%20synchronously%0Afunction%20createFxNow%28%29%20%7B%0A%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09fxNow%20%3D%20undefined%3B%0A%09%7D%20%29%3B%0A%09return%20%28%20fxNow%20%3D%20Date.now%28%29%20%29%3B%0A%7D%0A%0A//%20Generate%20parameters%20to%20create%20a%20standard%20animation%0Afunction%20genFx%28%20type%2C%20includeWidth%20%29%20%7B%0A%09var%20which%2C%0A%09%09i%20%3D%200%2C%0A%09%09attrs%20%3D%20%7B%20height%3A%20type%20%7D%3B%0A%0A%09//%20If%20we%20include%20width%2C%20step%20value%20is%201%20to%20do%20all%20cssExpand%20values%2C%0A%09//%20otherwise%20step%20value%20is%202%20to%20skip%20over%20Left%20and%20Right%0A%09includeWidth%20%3D%20includeWidth%20%3F%201%20%3A%200%3B%0A%09for%20%28%20%3B%20i%20%3C%204%3B%20i%20%2B%3D%202%20-%20includeWidth%20%29%20%7B%0A%09%09which%20%3D%20cssExpand%5B%20i%20%5D%3B%0A%09%09attrs%5B%20%22margin%22%20%2B%20which%20%5D%20%3D%20attrs%5B%20%22padding%22%20%2B%20which%20%5D%20%3D%20type%3B%0A%09%7D%0A%0A%09if%20%28%20includeWidth%20%29%20%7B%0A%09%09attrs.opacity%20%3D%20attrs.width%20%3D%20type%3B%0A%09%7D%0A%0A%09return%20attrs%3B%0A%7D%0A%0Afunction%20createTween%28%20value%2C%20prop%2C%20animation%20%29%20%7B%0A%09var%20tween%2C%0A%09%09collection%20%3D%20%28%20Animation.tweeners%5B%20prop%20%5D%20%7C%7C%20%5B%5D%20%29.concat%28%20Animation.tweeners%5B%20%22%2A%22%20%5D%20%29%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20collection.length%3B%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20tween%20%3D%20collection%5B%20index%20%5D.call%28%20animation%2C%20prop%2C%20value%20%29%20%29%20%29%20%7B%0A%0A%09%09%09//%20We%27re%20done%20with%20this%20property%0A%09%09%09return%20tween%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20defaultPrefilter%28%20elem%2C%20props%2C%20opts%20%29%20%7B%0A%09var%20prop%2C%20value%2C%20toggle%2C%20hooks%2C%20oldfire%2C%20propTween%2C%20restoreDisplay%2C%20display%2C%0A%09%09isBox%20%3D%20%22width%22%20in%20props%20%7C%7C%20%22height%22%20in%20props%2C%0A%09%09anim%20%3D%20this%2C%0A%09%09orig%20%3D%20%7B%7D%2C%0A%09%09style%20%3D%20elem.style%2C%0A%09%09hidden%20%3D%20elem.nodeType%20%26%26%20isHiddenWithinTree%28%20elem%20%29%2C%0A%09%09dataShow%20%3D%20dataPriv.get%28%20elem%2C%20%22fxshow%22%20%29%3B%0A%0A%09//%20Queue-skipping%20animations%20hijack%20the%20fx%20hooks%0A%09if%20%28%20%21opts.queue%20%29%20%7B%0A%09%09hooks%20%3D%20jQuery._queueHooks%28%20elem%2C%20%22fx%22%20%29%3B%0A%09%09if%20%28%20hooks.unqueued%20%3D%3D%20null%20%29%20%7B%0A%09%09%09hooks.unqueued%20%3D%200%3B%0A%09%09%09oldfire%20%3D%20hooks.empty.fire%3B%0A%09%09%09hooks.empty.fire%20%3D%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20%21hooks.unqueued%20%29%20%7B%0A%09%09%09%09%09oldfire%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%09%09%7D%0A%09%09hooks.unqueued%2B%2B%3B%0A%0A%09%09anim.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Ensure%20the%20complete%20handler%20is%20called%20before%20this%20completes%0A%09%09%09anim.always%28%20function%28%29%20%7B%0A%09%09%09%09hooks.unqueued--%3B%0A%09%09%09%09if%20%28%20%21jQuery.queue%28%20elem%2C%20%22fx%22%20%29.length%20%29%20%7B%0A%09%09%09%09%09hooks.empty.fire%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Detect%20show/hide%20animations%0A%09for%20%28%20prop%20in%20props%20%29%20%7B%0A%09%09value%20%3D%20props%5B%20prop%20%5D%3B%0A%09%09if%20%28%20rfxtypes.test%28%20value%20%29%20%29%20%7B%0A%09%09%09delete%20props%5B%20prop%20%5D%3B%0A%09%09%09toggle%20%3D%20toggle%20%7C%7C%20value%20%3D%3D%3D%20%22toggle%22%3B%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20%28%20hidden%20%3F%20%22hide%22%20%3A%20%22show%22%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Pretend%20to%20be%20hidden%20if%20this%20is%20a%20%22show%22%20and%0A%09%09%09%09//%20there%20is%20still%20data%20from%20a%20stopped%20show/hide%0A%09%09%09%09if%20%28%20value%20%3D%3D%3D%20%22show%22%20%26%26%20dataShow%20%26%26%20dataShow%5B%20prop%20%5D%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09hidden%20%3D%20true%3B%0A%0A%09%09%09%09//%20Ignore%20all%20other%20no-op%20show/hide%20data%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09continue%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09orig%5B%20prop%20%5D%20%3D%20dataShow%20%26%26%20dataShow%5B%20prop%20%5D%20%7C%7C%20jQuery.style%28%20elem%2C%20prop%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Bail%20out%20if%20this%20is%20a%20no-op%20like%20.hide%28%29.hide%28%29%0A%09propTween%20%3D%20%21jQuery.isEmptyObject%28%20props%20%29%3B%0A%09if%20%28%20%21propTween%20%26%26%20jQuery.isEmptyObject%28%20orig%20%29%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Restrict%20%22overflow%22%20and%20%22display%22%20styles%20during%20box%20animations%0A%09if%20%28%20isBox%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2C%20Edge%2012%20-%2015%0A%09%09//%20Record%20all%203%20overflow%20attributes%20because%20IE%20does%20not%20infer%20the%20shorthand%0A%09%09//%20from%20identically-valued%20overflowX%20and%20overflowY%20and%20Edge%20just%20mirrors%0A%09%09//%20the%20overflowX%20value%20there.%0A%09%09opts.overflow%20%3D%20%5B%20style.overflow%2C%20style.overflowX%2C%20style.overflowY%20%5D%3B%0A%0A%09%09//%20Identify%20a%20display%20type%2C%20preferring%20old%20show/hide%20data%20over%20the%20CSS%20cascade%0A%09%09restoreDisplay%20%3D%20dataShow%20%26%26%20dataShow.display%3B%0A%09%09if%20%28%20restoreDisplay%20%3D%3D%20null%20%29%20%7B%0A%09%09%09restoreDisplay%20%3D%20dataPriv.get%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09%7D%0A%09%09display%20%3D%20jQuery.css%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09if%20%28%20restoreDisplay%20%29%20%7B%0A%09%09%09%09display%20%3D%20restoreDisplay%3B%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Get%20nonempty%20value%28s%29%20by%20temporarily%20forcing%20visibility%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%2C%20true%20%29%3B%0A%09%09%09%09restoreDisplay%20%3D%20elem.style.display%20%7C%7C%20restoreDisplay%3B%0A%09%09%09%09display%20%3D%20jQuery.css%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Animate%20inline%20elements%20as%20inline-block%0A%09%09if%20%28%20display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline-block%22%20%26%26%20restoreDisplay%20%21%3D%20null%20%29%20%7B%0A%09%09%09if%20%28%20jQuery.css%28%20elem%2C%20%22float%22%20%29%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%0A%09%09%09%09//%20Restore%20the%20original%20display%20value%20at%20the%20end%20of%20pure%20show/hide%20animations%0A%09%09%09%09if%20%28%20%21propTween%20%29%20%7B%0A%09%09%09%09%09anim.done%28%20function%28%29%20%7B%0A%09%09%09%09%09%09style.display%20%3D%20restoreDisplay%3B%0A%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09if%20%28%20restoreDisplay%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09display%20%3D%20style.display%3B%0A%09%09%09%09%09%09restoreDisplay%20%3D%20display%20%3D%3D%3D%20%22none%22%20%3F%20%22%22%20%3A%20display%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09style.display%20%3D%20%22inline-block%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20opts.overflow%20%29%20%7B%0A%09%09style.overflow%20%3D%20%22hidden%22%3B%0A%09%09anim.always%28%20function%28%29%20%7B%0A%09%09%09style.overflow%20%3D%20opts.overflow%5B%200%20%5D%3B%0A%09%09%09style.overflowX%20%3D%20opts.overflow%5B%201%20%5D%3B%0A%09%09%09style.overflowY%20%3D%20opts.overflow%5B%202%20%5D%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Implement%20show/hide%20animations%0A%09propTween%20%3D%20false%3B%0A%09for%20%28%20prop%20in%20orig%20%29%20%7B%0A%0A%09%09//%20General%20show/hide%20setup%20for%20this%20element%20animation%0A%09%09if%20%28%20%21propTween%20%29%20%7B%0A%09%09%09if%20%28%20dataShow%20%29%20%7B%0A%09%09%09%09if%20%28%20%22hidden%22%20in%20dataShow%20%29%20%7B%0A%09%09%09%09%09hidden%20%3D%20dataShow.hidden%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09dataShow%20%3D%20dataPriv.access%28%20elem%2C%20%22fxshow%22%2C%20%7B%20display%3A%20restoreDisplay%20%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Store%20hidden/visible%20for%20toggle%20so%20%60.stop%28%29.toggle%28%29%60%20%22reverses%22%0A%09%09%09if%20%28%20toggle%20%29%20%7B%0A%09%09%09%09dataShow.hidden%20%3D%20%21hidden%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Show%20elements%20before%20animating%20them%0A%09%09%09if%20%28%20hidden%20%29%20%7B%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%2C%20true%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09/%2A%20eslint-disable%20no-loop-func%20%2A/%0A%0A%09%09%09anim.done%28%20function%28%29%20%7B%0A%0A%09%09%09/%2A%20eslint-enable%20no-loop-func%20%2A/%0A%0A%09%09%09%09//%20The%20final%20step%20of%20a%20%22hide%22%20animation%20is%20actually%20hiding%20the%20element%0A%09%09%09%09if%20%28%20%21hidden%20%29%20%7B%0A%09%09%09%09%09showHide%28%20%5B%20elem%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09dataPriv.remove%28%20elem%2C%20%22fxshow%22%20%29%3B%0A%09%09%09%09for%20%28%20prop%20in%20orig%20%29%20%7B%0A%09%09%09%09%09jQuery.style%28%20elem%2C%20prop%2C%20orig%5B%20prop%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Per-property%20setup%0A%09%09propTween%20%3D%20createTween%28%20hidden%20%3F%20dataShow%5B%20prop%20%5D%20%3A%200%2C%20prop%2C%20anim%20%29%3B%0A%09%09if%20%28%20%21%28%20prop%20in%20dataShow%20%29%20%29%20%7B%0A%09%09%09dataShow%5B%20prop%20%5D%20%3D%20propTween.start%3B%0A%09%09%09if%20%28%20hidden%20%29%20%7B%0A%09%09%09%09propTween.end%20%3D%20propTween.start%3B%0A%09%09%09%09propTween.start%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20propFilter%28%20props%2C%20specialEasing%20%29%20%7B%0A%09var%20index%2C%20name%2C%20easing%2C%20value%2C%20hooks%3B%0A%0A%09//%20camelCase%2C%20specialEasing%20and%20expand%20cssHook%20pass%0A%09for%20%28%20index%20in%20props%20%29%20%7B%0A%09%09name%20%3D%20camelCase%28%20index%20%29%3B%0A%09%09easing%20%3D%20specialEasing%5B%20name%20%5D%3B%0A%09%09value%20%3D%20props%5B%20index%20%5D%3B%0A%09%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09%09easing%20%3D%20value%5B%201%20%5D%3B%0A%09%09%09value%20%3D%20props%5B%20index%20%5D%20%3D%20value%5B%200%20%5D%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20index%20%21%3D%3D%20name%20%29%20%7B%0A%09%09%09props%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09delete%20props%5B%20index%20%5D%3B%0A%09%09%7D%0A%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%3B%0A%09%09if%20%28%20hooks%20%26%26%20%22expand%22%20in%20hooks%20%29%20%7B%0A%09%09%09value%20%3D%20hooks.expand%28%20value%20%29%3B%0A%09%09%09delete%20props%5B%20name%20%5D%3B%0A%0A%09%09%09//%20Not%20quite%20%24.extend%2C%20this%20won%27t%20overwrite%20existing%20keys.%0A%09%09%09//%20Reusing%20%27index%27%20because%20we%20have%20the%20correct%20%22name%22%0A%09%09%09for%20%28%20index%20in%20value%20%29%20%7B%0A%09%09%09%09if%20%28%20%21%28%20index%20in%20props%20%29%20%29%20%7B%0A%09%09%09%09%09props%5B%20index%20%5D%20%3D%20value%5B%20index%20%5D%3B%0A%09%09%09%09%09specialEasing%5B%20index%20%5D%20%3D%20easing%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09specialEasing%5B%20name%20%5D%20%3D%20easing%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20Animation%28%20elem%2C%20properties%2C%20options%20%29%20%7B%0A%09var%20result%2C%0A%09%09stopped%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20Animation.prefilters.length%2C%0A%09%09deferred%20%3D%20jQuery.Deferred%28%29.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Don%27t%20match%20elem%20in%20the%20%3Aanimated%20selector%0A%09%09%09delete%20tick.elem%3B%0A%09%09%7D%20%29%2C%0A%09%09tick%20%3D%20function%28%29%20%7B%0A%09%09%09if%20%28%20stopped%20%29%20%7B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%0A%09%09%09var%20currentTime%20%3D%20fxNow%20%7C%7C%20createFxNow%28%29%2C%0A%09%09%09%09remaining%20%3D%20Math.max%28%200%2C%20animation.startTime%20%2B%20animation.duration%20-%20currentTime%20%29%2C%0A%0A%09%09%09%09//%20Support%3A%20Android%202.3%20only%0A%09%09%09%09//%20Archaic%20crash%20bug%20won%27t%20allow%20us%20to%20use%20%601%20-%20%28%200.5%20%7C%7C%200%20%29%60%20%28%2312497%29%0A%09%09%09%09temp%20%3D%20remaining%20/%20animation.duration%20%7C%7C%200%2C%0A%09%09%09%09percent%20%3D%201%20-%20temp%2C%0A%09%09%09%09index%20%3D%200%2C%0A%09%09%09%09length%20%3D%20animation.tweens.length%3B%0A%0A%09%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09animation.tweens%5B%20index%20%5D.run%28%20percent%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%20percent%2C%20remaining%20%5D%20%29%3B%0A%0A%09%09%09//%20If%20there%27s%20more%20to%20do%2C%20yield%0A%09%09%09if%20%28%20percent%20%3C%201%20%26%26%20length%20%29%20%7B%0A%09%09%09%09return%20remaining%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20this%20was%20an%20empty%20animation%2C%20synthesize%20a%20final%20progress%20notification%0A%09%09%09if%20%28%20%21length%20%29%20%7B%0A%09%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%201%2C%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Resolve%20the%20animation%20and%20report%20its%20conclusion%0A%09%09%09deferred.resolveWith%28%20elem%2C%20%5B%20animation%20%5D%20%29%3B%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09animation%20%3D%20deferred.promise%28%20%7B%0A%09%09%09elem%3A%20elem%2C%0A%09%09%09props%3A%20jQuery.extend%28%20%7B%7D%2C%20properties%20%29%2C%0A%09%09%09opts%3A%20jQuery.extend%28%20true%2C%20%7B%0A%09%09%09%09specialEasing%3A%20%7B%7D%2C%0A%09%09%09%09easing%3A%20jQuery.easing._default%0A%09%09%09%7D%2C%20options%20%29%2C%0A%09%09%09originalProperties%3A%20properties%2C%0A%09%09%09originalOptions%3A%20options%2C%0A%09%09%09startTime%3A%20fxNow%20%7C%7C%20createFxNow%28%29%2C%0A%09%09%09duration%3A%20options.duration%2C%0A%09%09%09tweens%3A%20%5B%5D%2C%0A%09%09%09createTween%3A%20function%28%20prop%2C%20end%20%29%20%7B%0A%09%09%09%09var%20tween%20%3D%20jQuery.Tween%28%20elem%2C%20animation.opts%2C%20prop%2C%20end%2C%0A%09%09%09%09%09%09animation.opts.specialEasing%5B%20prop%20%5D%20%7C%7C%20animation.opts.easing%20%29%3B%0A%09%09%09%09animation.tweens.push%28%20tween%20%29%3B%0A%09%09%09%09return%20tween%3B%0A%09%09%09%7D%2C%0A%09%09%09stop%3A%20function%28%20gotoEnd%20%29%20%7B%0A%09%09%09%09var%20index%20%3D%200%2C%0A%0A%09%09%09%09%09//%20If%20we%20are%20going%20to%20the%20end%2C%20we%20want%20to%20run%20all%20the%20tweens%0A%09%09%09%09%09//%20otherwise%20we%20skip%20this%20part%0A%09%09%09%09%09length%20%3D%20gotoEnd%20%3F%20animation.tweens.length%20%3A%200%3B%0A%09%09%09%09if%20%28%20stopped%20%29%20%7B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%09%09%09%09stopped%20%3D%20true%3B%0A%09%09%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09%09animation.tweens%5B%20index%20%5D.run%28%201%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Resolve%20when%20we%20played%20the%20last%20frame%3B%20otherwise%2C%20reject%0A%09%09%09%09if%20%28%20gotoEnd%20%29%20%7B%0A%09%09%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%201%2C%200%20%5D%20%29%3B%0A%09%09%09%09%09deferred.resolveWith%28%20elem%2C%20%5B%20animation%2C%20gotoEnd%20%5D%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09deferred.rejectWith%28%20elem%2C%20%5B%20animation%2C%20gotoEnd%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%2C%0A%09%09props%20%3D%20animation.props%3B%0A%0A%09propFilter%28%20props%2C%20animation.opts.specialEasing%20%29%3B%0A%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09result%20%3D%20Animation.prefilters%5B%20index%20%5D.call%28%20animation%2C%20elem%2C%20props%2C%20animation.opts%20%29%3B%0A%09%09if%20%28%20result%20%29%20%7B%0A%09%09%09if%20%28%20isFunction%28%20result.stop%20%29%20%29%20%7B%0A%09%09%09%09jQuery._queueHooks%28%20animation.elem%2C%20animation.opts.queue%20%29.stop%20%3D%0A%09%09%09%09%09result.stop.bind%28%20result%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20result%3B%0A%09%09%7D%0A%09%7D%0A%0A%09jQuery.map%28%20props%2C%20createTween%2C%20animation%20%29%3B%0A%0A%09if%20%28%20isFunction%28%20animation.opts.start%20%29%20%29%20%7B%0A%09%09animation.opts.start.call%28%20elem%2C%20animation%20%29%3B%0A%09%7D%0A%0A%09//%20Attach%20callbacks%20from%20options%0A%09animation%0A%09%09.progress%28%20animation.opts.progress%20%29%0A%09%09.done%28%20animation.opts.done%2C%20animation.opts.complete%20%29%0A%09%09.fail%28%20animation.opts.fail%20%29%0A%09%09.always%28%20animation.opts.always%20%29%3B%0A%0A%09jQuery.fx.timer%28%0A%09%09jQuery.extend%28%20tick%2C%20%7B%0A%09%09%09elem%3A%20elem%2C%0A%09%09%09anim%3A%20animation%2C%0A%09%09%09queue%3A%20animation.opts.queue%0A%09%09%7D%20%29%0A%09%29%3B%0A%0A%09return%20animation%3B%0A%7D%0A%0AjQuery.Animation%20%3D%20jQuery.extend%28%20Animation%2C%20%7B%0A%0A%09tweeners%3A%20%7B%0A%09%09%22%2A%22%3A%20%5B%20function%28%20prop%2C%20value%20%29%20%7B%0A%09%09%09var%20tween%20%3D%20this.createTween%28%20prop%2C%20value%20%29%3B%0A%09%09%09adjustCSS%28%20tween.elem%2C%20prop%2C%20rcssNum.exec%28%20value%20%29%2C%20tween%20%29%3B%0A%09%09%09return%20tween%3B%0A%09%09%7D%20%5D%0A%09%7D%2C%0A%0A%09tweener%3A%20function%28%20props%2C%20callback%20%29%20%7B%0A%09%09if%20%28%20isFunction%28%20props%20%29%20%29%20%7B%0A%09%09%09callback%20%3D%20props%3B%0A%09%09%09props%20%3D%20%5B%20%22%2A%22%20%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09props%20%3D%20props.match%28%20rnothtmlwhite%20%29%3B%0A%09%09%7D%0A%0A%09%09var%20prop%2C%0A%09%09%09index%20%3D%200%2C%0A%09%09%09length%20%3D%20props.length%3B%0A%0A%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09prop%20%3D%20props%5B%20index%20%5D%3B%0A%09%09%09Animation.tweeners%5B%20prop%20%5D%20%3D%20Animation.tweeners%5B%20prop%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09Animation.tweeners%5B%20prop%20%5D.unshift%28%20callback%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09prefilters%3A%20%5B%20defaultPrefilter%20%5D%2C%0A%0A%09prefilter%3A%20function%28%20callback%2C%20prepend%20%29%20%7B%0A%09%09if%20%28%20prepend%20%29%20%7B%0A%09%09%09Animation.prefilters.unshift%28%20callback%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09Animation.prefilters.push%28%20callback%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.speed%20%3D%20function%28%20speed%2C%20easing%2C%20fn%20%29%20%7B%0A%09var%20opt%20%3D%20speed%20%26%26%20typeof%20speed%20%3D%3D%3D%20%22object%22%20%3F%20jQuery.extend%28%20%7B%7D%2C%20speed%20%29%20%3A%20%7B%0A%09%09complete%3A%20fn%20%7C%7C%20%21fn%20%26%26%20easing%20%7C%7C%0A%09%09%09isFunction%28%20speed%20%29%20%26%26%20speed%2C%0A%09%09duration%3A%20speed%2C%0A%09%09easing%3A%20fn%20%26%26%20easing%20%7C%7C%20easing%20%26%26%20%21isFunction%28%20easing%20%29%20%26%26%20easing%0A%09%7D%3B%0A%0A%09//%20Go%20to%20the%20end%20state%20if%20fx%20are%20off%0A%09if%20%28%20jQuery.fx.off%20%29%20%7B%0A%09%09opt.duration%20%3D%200%3B%0A%0A%09%7D%20else%20%7B%0A%09%09if%20%28%20typeof%20opt.duration%20%21%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09if%20%28%20opt.duration%20in%20jQuery.fx.speeds%20%29%20%7B%0A%09%09%09%09opt.duration%20%3D%20jQuery.fx.speeds%5B%20opt.duration%20%5D%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09opt.duration%20%3D%20jQuery.fx.speeds._default%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Normalize%20opt.queue%20-%20true/undefined/null%20-%3E%20%22fx%22%0A%09if%20%28%20opt.queue%20%3D%3D%20null%20%7C%7C%20opt.queue%20%3D%3D%3D%20true%20%29%20%7B%0A%09%09opt.queue%20%3D%20%22fx%22%3B%0A%09%7D%0A%0A%09//%20Queueing%0A%09opt.old%20%3D%20opt.complete%3B%0A%0A%09opt.complete%20%3D%20function%28%29%20%7B%0A%09%09if%20%28%20isFunction%28%20opt.old%20%29%20%29%20%7B%0A%09%09%09opt.old.call%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20opt.queue%20%29%20%7B%0A%09%09%09jQuery.dequeue%28%20this%2C%20opt.queue%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09return%20opt%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09fadeTo%3A%20function%28%20speed%2C%20to%2C%20easing%2C%20callback%20%29%20%7B%0A%0A%09%09//%20Show%20any%20hidden%20elements%20after%20setting%20opacity%20to%200%0A%09%09return%20this.filter%28%20isHiddenWithinTree%20%29.css%28%20%22opacity%22%2C%200%20%29.show%28%29%0A%0A%09%09%09//%20Animate%20to%20the%20value%20specified%0A%09%09%09.end%28%29.animate%28%20%7B%20opacity%3A%20to%20%7D%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%2C%0A%09animate%3A%20function%28%20prop%2C%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09var%20empty%20%3D%20jQuery.isEmptyObject%28%20prop%20%29%2C%0A%09%09%09optall%20%3D%20jQuery.speed%28%20speed%2C%20easing%2C%20callback%20%29%2C%0A%09%09%09doAnimation%20%3D%20function%28%29%20%7B%0A%0A%09%09%09%09//%20Operate%20on%20a%20copy%20of%20prop%20so%20per-property%20easing%20won%27t%20be%20lost%0A%09%09%09%09var%20anim%20%3D%20Animation%28%20this%2C%20jQuery.extend%28%20%7B%7D%2C%20prop%20%29%2C%20optall%20%29%3B%0A%0A%09%09%09%09//%20Empty%20animations%2C%20or%20finishing%20resolves%20immediately%0A%09%09%09%09if%20%28%20empty%20%7C%7C%20dataPriv.get%28%20this%2C%20%22finish%22%20%29%20%29%20%7B%0A%09%09%09%09%09anim.stop%28%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%09%09%09doAnimation.finish%20%3D%20doAnimation%3B%0A%0A%09%09return%20empty%20%7C%7C%20optall.queue%20%3D%3D%3D%20false%20%3F%0A%09%09%09this.each%28%20doAnimation%20%29%20%3A%0A%09%09%09this.queue%28%20optall.queue%2C%20doAnimation%20%29%3B%0A%09%7D%2C%0A%09stop%3A%20function%28%20type%2C%20clearQueue%2C%20gotoEnd%20%29%20%7B%0A%09%09var%20stopQueue%20%3D%20function%28%20hooks%20%29%20%7B%0A%09%09%09var%20stop%20%3D%20hooks.stop%3B%0A%09%09%09delete%20hooks.stop%3B%0A%09%09%09stop%28%20gotoEnd%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09gotoEnd%20%3D%20clearQueue%3B%0A%09%09%09clearQueue%20%3D%20type%3B%0A%09%09%09type%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09if%20%28%20clearQueue%20%29%20%7B%0A%09%09%09this.queue%28%20type%20%7C%7C%20%22fx%22%2C%20%5B%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20dequeue%20%3D%20true%2C%0A%09%09%09%09index%20%3D%20type%20%21%3D%20null%20%26%26%20type%20%2B%20%22queueHooks%22%2C%0A%09%09%09%09timers%20%3D%20jQuery.timers%2C%0A%09%09%09%09data%20%3D%20dataPriv.get%28%20this%20%29%3B%0A%0A%09%09%09if%20%28%20index%20%29%20%7B%0A%09%09%09%09if%20%28%20data%5B%20index%20%5D%20%26%26%20data%5B%20index%20%5D.stop%20%29%20%7B%0A%09%09%09%09%09stopQueue%28%20data%5B%20index%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09for%20%28%20index%20in%20data%20%29%20%7B%0A%09%09%09%09%09if%20%28%20data%5B%20index%20%5D%20%26%26%20data%5B%20index%20%5D.stop%20%26%26%20rrun.test%28%20index%20%29%20%29%20%7B%0A%09%09%09%09%09%09stopQueue%28%20data%5B%20index%20%5D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09for%20%28%20index%20%3D%20timers.length%3B%20index--%3B%20%29%20%7B%0A%09%09%09%09if%20%28%20timers%5B%20index%20%5D.elem%20%3D%3D%3D%20this%20%26%26%0A%09%09%09%09%09%28%20type%20%3D%3D%20null%20%7C%7C%20timers%5B%20index%20%5D.queue%20%3D%3D%3D%20type%20%29%20%29%20%7B%0A%0A%09%09%09%09%09timers%5B%20index%20%5D.anim.stop%28%20gotoEnd%20%29%3B%0A%09%09%09%09%09dequeue%20%3D%20false%3B%0A%09%09%09%09%09timers.splice%28%20index%2C%201%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Start%20the%20next%20in%20the%20queue%20if%20the%20last%20step%20wasn%27t%20forced.%0A%09%09%09//%20Timers%20currently%20will%20call%20their%20complete%20callbacks%2C%20which%0A%09%09%09//%20will%20dequeue%20but%20only%20if%20they%20were%20gotoEnd.%0A%09%09%09if%20%28%20dequeue%20%7C%7C%20%21gotoEnd%20%29%20%7B%0A%09%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09finish%3A%20function%28%20type%20%29%20%7B%0A%09%09if%20%28%20type%20%21%3D%3D%20false%20%29%20%7B%0A%09%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%09%09%7D%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20index%2C%0A%09%09%09%09data%20%3D%20dataPriv.get%28%20this%20%29%2C%0A%09%09%09%09queue%20%3D%20data%5B%20type%20%2B%20%22queue%22%20%5D%2C%0A%09%09%09%09hooks%20%3D%20data%5B%20type%20%2B%20%22queueHooks%22%20%5D%2C%0A%09%09%09%09timers%20%3D%20jQuery.timers%2C%0A%09%09%09%09length%20%3D%20queue%20%3F%20queue.length%20%3A%200%3B%0A%0A%09%09%09//%20Enable%20finishing%20flag%20on%20private%20data%0A%09%09%09data.finish%20%3D%20true%3B%0A%0A%09%09%09//%20Empty%20the%20queue%20first%0A%09%09%09jQuery.queue%28%20this%2C%20type%2C%20%5B%5D%20%29%3B%0A%0A%09%09%09if%20%28%20hooks%20%26%26%20hooks.stop%20%29%20%7B%0A%09%09%09%09hooks.stop.call%28%20this%2C%20true%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Look%20for%20any%20active%20animations%2C%20and%20finish%20them%0A%09%09%09for%20%28%20index%20%3D%20timers.length%3B%20index--%3B%20%29%20%7B%0A%09%09%09%09if%20%28%20timers%5B%20index%20%5D.elem%20%3D%3D%3D%20this%20%26%26%20timers%5B%20index%20%5D.queue%20%3D%3D%3D%20type%20%29%20%7B%0A%09%09%09%09%09timers%5B%20index%20%5D.anim.stop%28%20true%20%29%3B%0A%09%09%09%09%09timers.splice%28%20index%2C%201%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Look%20for%20any%20animations%20in%20the%20old%20queue%20and%20finish%20them%0A%09%09%09for%20%28%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20queue%5B%20index%20%5D%20%26%26%20queue%5B%20index%20%5D.finish%20%29%20%7B%0A%09%09%09%09%09queue%5B%20index%20%5D.finish.call%28%20this%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Turn%20off%20finishing%20flag%0A%09%09%09delete%20data.finish%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22toggle%22%2C%20%22show%22%2C%20%22hide%22%20%5D%2C%20function%28%20_i%2C%20name%20%29%20%7B%0A%09var%20cssFn%20%3D%20jQuery.fn%5B%20name%20%5D%3B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09return%20speed%20%3D%3D%20null%20%7C%7C%20typeof%20speed%20%3D%3D%3D%20%22boolean%22%20%3F%0A%09%09%09cssFn.apply%28%20this%2C%20arguments%20%29%20%3A%0A%09%09%09this.animate%28%20genFx%28%20name%2C%20true%20%29%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Generate%20shortcuts%20for%20custom%20animations%0AjQuery.each%28%20%7B%0A%09slideDown%3A%20genFx%28%20%22show%22%20%29%2C%0A%09slideUp%3A%20genFx%28%20%22hide%22%20%29%2C%0A%09slideToggle%3A%20genFx%28%20%22toggle%22%20%29%2C%0A%09fadeIn%3A%20%7B%20opacity%3A%20%22show%22%20%7D%2C%0A%09fadeOut%3A%20%7B%20opacity%3A%20%22hide%22%20%7D%2C%0A%09fadeToggle%3A%20%7B%20opacity%3A%20%22toggle%22%20%7D%0A%7D%2C%20function%28%20name%2C%20props%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09return%20this.animate%28%20props%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.timers%20%3D%20%5B%5D%3B%0AjQuery.fx.tick%20%3D%20function%28%29%20%7B%0A%09var%20timer%2C%0A%09%09i%20%3D%200%2C%0A%09%09timers%20%3D%20jQuery.timers%3B%0A%0A%09fxNow%20%3D%20Date.now%28%29%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20timers.length%3B%20i%2B%2B%20%29%20%7B%0A%09%09timer%20%3D%20timers%5B%20i%20%5D%3B%0A%0A%09%09//%20Run%20the%20timer%20and%20safely%20remove%20it%20when%20done%20%28allowing%20for%20external%20removal%29%0A%09%09if%20%28%20%21timer%28%29%20%26%26%20timers%5B%20i%20%5D%20%3D%3D%3D%20timer%20%29%20%7B%0A%09%09%09timers.splice%28%20i--%2C%201%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20%21timers.length%20%29%20%7B%0A%09%09jQuery.fx.stop%28%29%3B%0A%09%7D%0A%09fxNow%20%3D%20undefined%3B%0A%7D%3B%0A%0AjQuery.fx.timer%20%3D%20function%28%20timer%20%29%20%7B%0A%09jQuery.timers.push%28%20timer%20%29%3B%0A%09jQuery.fx.start%28%29%3B%0A%7D%3B%0A%0AjQuery.fx.interval%20%3D%2013%3B%0AjQuery.fx.start%20%3D%20function%28%29%20%7B%0A%09if%20%28%20inProgress%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09inProgress%20%3D%20true%3B%0A%09schedule%28%29%3B%0A%7D%3B%0A%0AjQuery.fx.stop%20%3D%20function%28%29%20%7B%0A%09inProgress%20%3D%20null%3B%0A%7D%3B%0A%0AjQuery.fx.speeds%20%3D%20%7B%0A%09slow%3A%20600%2C%0A%09fast%3A%20200%2C%0A%0A%09//%20Default%20speed%0A%09_default%3A%20400%0A%7D%3B%0A%0A%0A//%20Based%20off%20of%20the%20plugin%20by%20Clint%20Helfers%2C%20with%20permission.%0A//%20https%3A//web.archive.org/web/20100324014747/http%3A//blindsignals.com/index.php/2009/07/jquery-delay/%0AjQuery.fn.delay%20%3D%20function%28%20time%2C%20type%20%29%20%7B%0A%09time%20%3D%20jQuery.fx%20%3F%20jQuery.fx.speeds%5B%20time%20%5D%20%7C%7C%20time%20%3A%20time%3B%0A%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09return%20this.queue%28%20type%2C%20function%28%20next%2C%20hooks%20%29%20%7B%0A%09%09var%20timeout%20%3D%20window.setTimeout%28%20next%2C%20time%20%29%3B%0A%09%09hooks.stop%20%3D%20function%28%29%20%7B%0A%09%09%09window.clearTimeout%28%20timeout%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0A%28%20function%28%29%20%7B%0A%09var%20input%20%3D%20document.createElement%28%20%22input%22%20%29%2C%0A%09%09select%20%3D%20document.createElement%28%20%22select%22%20%29%2C%0A%09%09opt%20%3D%20select.appendChild%28%20document.createElement%28%20%22option%22%20%29%20%29%3B%0A%0A%09input.type%20%3D%20%22checkbox%22%3B%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.3%20only%0A%09//%20Default%20value%20for%20a%20checkbox%20should%20be%20%22on%22%0A%09support.checkOn%20%3D%20input.value%20%21%3D%3D%20%22%22%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20Must%20access%20selectedIndex%20to%20make%20default%20options%20select%0A%09support.optSelected%20%3D%20opt.selected%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20An%20input%20loses%20its%20value%20after%20becoming%20a%20radio%0A%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09input.value%20%3D%20%22t%22%3B%0A%09input.type%20%3D%20%22radio%22%3B%0A%09support.radioValue%20%3D%20input.value%20%3D%3D%3D%20%22t%22%3B%0A%7D%20%29%28%29%3B%0A%0A%0Avar%20boolHook%2C%0A%09attrHandle%20%3D%20jQuery.expr.attrHandle%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09attr%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20jQuery.attr%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%2C%0A%0A%09removeAttr%3A%20function%28%20name%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.removeAttr%28%20this%2C%20name%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09attr%3A%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09var%20ret%2C%20hooks%2C%0A%09%09%09nType%20%3D%20elem.nodeType%3B%0A%0A%09%09//%20Don%27t%20get/set%20attributes%20on%20text%2C%20comment%20and%20attribute%20nodes%0A%09%09if%20%28%20nType%20%3D%3D%3D%203%20%7C%7C%20nType%20%3D%3D%3D%208%20%7C%7C%20nType%20%3D%3D%3D%202%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Fallback%20to%20prop%20when%20attributes%20are%20not%20supported%0A%09%09if%20%28%20typeof%20elem.getAttribute%20%3D%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09%09return%20jQuery.prop%28%20elem%2C%20name%2C%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Attribute%20hooks%20are%20determined%20by%20the%20lowercase%20version%0A%09%09//%20Grab%20necessary%20hook%20if%20one%20is%20defined%0A%09%09if%20%28%20nType%20%21%3D%3D%201%20%7C%7C%20%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%09%09%09hooks%20%3D%20jQuery.attrHooks%5B%20name.toLowerCase%28%29%20%5D%20%7C%7C%0A%09%09%09%09%28%20jQuery.expr.match.bool.test%28%20name%20%29%20%3F%20boolHook%20%3A%20undefined%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20null%20%29%20%7B%0A%09%09%09%09jQuery.removeAttr%28%20elem%2C%20name%20%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20hooks%20%26%26%20%22set%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.set%28%20elem%2C%20value%2C%20name%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09elem.setAttribute%28%20name%2C%20value%20%2B%20%22%22%20%29%3B%0A%09%09%09return%20value%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%20%28%20ret%20%3D%20hooks.get%28%20elem%2C%20name%20%29%20%29%20%21%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%0A%09%09ret%20%3D%20jQuery.find.attr%28%20elem%2C%20name%20%29%3B%0A%0A%09%09//%20Non-existent%20attributes%20return%20null%2C%20we%20normalize%20to%20undefined%0A%09%09return%20ret%20%3D%3D%20null%20%3F%20undefined%20%3A%20ret%3B%0A%09%7D%2C%0A%0A%09attrHooks%3A%20%7B%0A%09%09type%3A%20%7B%0A%09%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09%09if%20%28%20%21support.radioValue%20%26%26%20value%20%3D%3D%3D%20%22radio%22%20%26%26%0A%09%09%09%09%09nodeName%28%20elem%2C%20%22input%22%20%29%20%29%20%7B%0A%09%09%09%09%09var%20val%20%3D%20elem.value%3B%0A%09%09%09%09%09elem.setAttribute%28%20%22type%22%2C%20value%20%29%3B%0A%09%09%09%09%09if%20%28%20val%20%29%20%7B%0A%09%09%09%09%09%09elem.value%20%3D%20val%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20value%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09removeAttr%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09var%20name%2C%0A%09%09%09i%20%3D%200%2C%0A%0A%09%09%09//%20Attribute%20names%20can%20contain%20non-HTML%20whitespace%20characters%0A%09%09%09//%20https%3A//html.spec.whatwg.org/multipage/syntax.html%23attributes-2%0A%09%09%09attrNames%20%3D%20value%20%26%26%20value.match%28%20rnothtmlwhite%20%29%3B%0A%0A%09%09if%20%28%20attrNames%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09while%20%28%20%28%20name%20%3D%20attrNames%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09elem.removeAttribute%28%20name%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Hooks%20for%20boolean%20attributes%0AboolHook%20%3D%20%7B%0A%09set%3A%20function%28%20elem%2C%20value%2C%20name%20%29%20%7B%0A%09%09if%20%28%20value%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09//%20Remove%20boolean%20attributes%20when%20set%20to%20false%0A%09%09%09jQuery.removeAttr%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09elem.setAttribute%28%20name%2C%20name%20%29%3B%0A%09%09%7D%0A%09%09return%20name%3B%0A%09%7D%0A%7D%3B%0A%0AjQuery.each%28%20jQuery.expr.match.bool.source.match%28%20/%5Cw%2B/g%20%29%2C%20function%28%20_i%2C%20name%20%29%20%7B%0A%09var%20getter%20%3D%20attrHandle%5B%20name%20%5D%20%7C%7C%20jQuery.find.attr%3B%0A%0A%09attrHandle%5B%20name%20%5D%20%3D%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09var%20ret%2C%20handle%2C%0A%09%09%09lowercaseName%20%3D%20name.toLowerCase%28%29%3B%0A%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%0A%09%09%09//%20Avoid%20an%20infinite%20loop%20by%20temporarily%20removing%20this%20function%20from%20the%20getter%0A%09%09%09handle%20%3D%20attrHandle%5B%20lowercaseName%20%5D%3B%0A%09%09%09attrHandle%5B%20lowercaseName%20%5D%20%3D%20ret%3B%0A%09%09%09ret%20%3D%20getter%28%20elem%2C%20name%2C%20isXML%20%29%20%21%3D%20null%20%3F%0A%09%09%09%09lowercaseName%20%3A%0A%09%09%09%09null%3B%0A%09%09%09attrHandle%5B%20lowercaseName%20%5D%20%3D%20handle%3B%0A%09%09%7D%0A%09%09return%20ret%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20rfocusable%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Cbutton%29%24/i%2C%0A%09rclickable%20%3D%20/%5E%28%3F%3Aa%7Carea%29%24/i%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09prop%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20jQuery.prop%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%2C%0A%0A%09removeProp%3A%20function%28%20name%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09delete%20this%5B%20jQuery.propFix%5B%20name%20%5D%20%7C%7C%20name%20%5D%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09prop%3A%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09var%20ret%2C%20hooks%2C%0A%09%09%09nType%20%3D%20elem.nodeType%3B%0A%0A%09%09//%20Don%27t%20get/set%20properties%20on%20text%2C%20comment%20and%20attribute%20nodes%0A%09%09if%20%28%20nType%20%3D%3D%3D%203%20%7C%7C%20nType%20%3D%3D%3D%208%20%7C%7C%20nType%20%3D%3D%3D%202%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20nType%20%21%3D%3D%201%20%7C%7C%20%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09//%20Fix%20name%20and%20attach%20hooks%0A%09%09%09name%20%3D%20jQuery.propFix%5B%20name%20%5D%20%7C%7C%20name%3B%0A%09%09%09hooks%20%3D%20jQuery.propHooks%5B%20name%20%5D%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20hooks%20%26%26%20%22set%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.set%28%20elem%2C%20value%2C%20name%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20%28%20elem%5B%20name%20%5D%20%3D%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%20%28%20ret%20%3D%20hooks.get%28%20elem%2C%20name%20%29%20%29%20%21%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%0A%09%09return%20elem%5B%20name%20%5D%3B%0A%09%7D%2C%0A%0A%09propHooks%3A%20%7B%0A%09%09tabIndex%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09%09%09%09//%20elem.tabIndex%20doesn%27t%20always%20return%20the%0A%09%09%09%09//%20correct%20value%20when%20it%20hasn%27t%20been%20explicitly%20set%0A%09%09%09%09//%20https%3A//web.archive.org/web/20141116233347/http%3A//fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/%0A%09%09%09%09//%20Use%20proper%20attribute%20retrieval%28%2312072%29%0A%09%09%09%09var%20tabindex%20%3D%20jQuery.find.attr%28%20elem%2C%20%22tabindex%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20tabindex%20%29%20%7B%0A%09%09%09%09%09return%20parseInt%28%20tabindex%2C%2010%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09if%20%28%0A%09%09%09%09%09rfocusable.test%28%20elem.nodeName%20%29%20%7C%7C%0A%09%09%09%09%09rclickable.test%28%20elem.nodeName%20%29%20%26%26%0A%09%09%09%09%09elem.href%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09return%200%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09propFix%3A%20%7B%0A%09%09%22for%22%3A%20%22htmlFor%22%2C%0A%09%09%22class%22%3A%20%22className%22%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Support%3A%20IE%20%3C%3D11%20only%0A//%20Accessing%20the%20selectedIndex%20property%0A//%20forces%20the%20browser%20to%20respect%20setting%20selected%0A//%20on%20the%20option%0A//%20The%20getter%20ensures%20a%20default%20option%20is%20selected%0A//%20when%20in%20an%20optgroup%0A//%20eslint%20rule%20%22no-unused-expressions%22%20is%20disabled%20for%20this%20code%0A//%20since%20it%20considers%20such%20accessions%20noop%0Aif%20%28%20%21support.optSelected%20%29%20%7B%0A%09jQuery.propHooks.selected%20%3D%20%7B%0A%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09/%2A%20eslint%20no-unused-expressions%3A%20%22off%22%20%2A/%0A%0A%09%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09%09if%20%28%20parent%20%26%26%20parent.parentNode%20%29%20%7B%0A%09%09%09%09parent.parentNode.selectedIndex%3B%0A%09%09%09%7D%0A%09%09%09return%20null%3B%0A%09%09%7D%2C%0A%09%09set%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09/%2A%20eslint%20no-unused-expressions%3A%20%22off%22%20%2A/%0A%0A%09%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09%09if%20%28%20parent%20%29%20%7B%0A%09%09%09%09parent.selectedIndex%3B%0A%0A%09%09%09%09if%20%28%20parent.parentNode%20%29%20%7B%0A%09%09%09%09%09parent.parentNode.selectedIndex%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0AjQuery.each%28%20%5B%0A%09%22tabIndex%22%2C%0A%09%22readOnly%22%2C%0A%09%22maxLength%22%2C%0A%09%22cellSpacing%22%2C%0A%09%22cellPadding%22%2C%0A%09%22rowSpan%22%2C%0A%09%22colSpan%22%2C%0A%09%22useMap%22%2C%0A%09%22frameBorder%22%2C%0A%09%22contentEditable%22%0A%5D%2C%20function%28%29%20%7B%0A%09jQuery.propFix%5B%20this.toLowerCase%28%29%20%5D%20%3D%20this%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0A%09//%20Strip%20and%20collapse%20whitespace%20according%20to%20HTML%20spec%0A%09//%20https%3A//infra.spec.whatwg.org/%23strip-and-collapse-ascii-whitespace%0A%09function%20stripAndCollapse%28%20value%20%29%20%7B%0A%09%09var%20tokens%20%3D%20value.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09return%20tokens.join%28%20%22%20%22%20%29%3B%0A%09%7D%0A%0A%0Afunction%20getClass%28%20elem%20%29%20%7B%0A%09return%20elem.getAttribute%20%26%26%20elem.getAttribute%28%20%22class%22%20%29%20%7C%7C%20%22%22%3B%0A%7D%0A%0Afunction%20classesToArray%28%20value%20%29%20%7B%0A%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09return%20value%3B%0A%09%7D%0A%09if%20%28%20typeof%20value%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20value.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%09%7D%0A%09return%20%5B%5D%3B%0A%7D%0A%0AjQuery.fn.extend%28%20%7B%0A%09addClass%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20classes%2C%20elem%2C%20cur%2C%20curValue%2C%20clazz%2C%20j%2C%20finalValue%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20j%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.addClass%28%20value.call%28%20this%2C%20j%2C%20getClass%28%20this%20%29%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09classes%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20classes.length%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09curValue%20%3D%20getClass%28%20elem%20%29%3B%0A%09%09%09%09cur%20%3D%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%20%22%20%22%20%2B%20stripAndCollapse%28%20curValue%20%29%20%2B%20%22%20%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20cur%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20clazz%20%3D%20classes%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20cur.indexOf%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%20%29%20%3C%200%20%29%20%7B%0A%09%09%09%09%09%09%09cur%20%2B%3D%20clazz%20%2B%20%22%20%22%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Only%20assign%20if%20different%20to%20avoid%20unneeded%20rendering.%0A%09%09%09%09%09finalValue%20%3D%20stripAndCollapse%28%20cur%20%29%3B%0A%09%09%09%09%09if%20%28%20curValue%20%21%3D%3D%20finalValue%20%29%20%7B%0A%09%09%09%09%09%09elem.setAttribute%28%20%22class%22%2C%20finalValue%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09removeClass%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20classes%2C%20elem%2C%20cur%2C%20curValue%2C%20clazz%2C%20j%2C%20finalValue%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20j%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.removeClass%28%20value.call%28%20this%2C%20j%2C%20getClass%28%20this%20%29%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%21arguments.length%20%29%20%7B%0A%09%09%09return%20this.attr%28%20%22class%22%2C%20%22%22%20%29%3B%0A%09%09%7D%0A%0A%09%09classes%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20classes.length%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09curValue%20%3D%20getClass%28%20elem%20%29%3B%0A%0A%09%09%09%09//%20This%20expression%20is%20here%20for%20better%20compressibility%20%28see%20addClass%29%0A%09%09%09%09cur%20%3D%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%20%22%20%22%20%2B%20stripAndCollapse%28%20curValue%20%29%20%2B%20%22%20%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20cur%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20clazz%20%3D%20classes%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Remove%20%2Aall%2A%20instances%0A%09%09%09%09%09%09while%20%28%20cur.indexOf%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09%09%09cur%20%3D%20cur.replace%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%2C%20%22%20%22%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Only%20assign%20if%20different%20to%20avoid%20unneeded%20rendering.%0A%09%09%09%09%09finalValue%20%3D%20stripAndCollapse%28%20cur%20%29%3B%0A%09%09%09%09%09if%20%28%20curValue%20%21%3D%3D%20finalValue%20%29%20%7B%0A%09%09%09%09%09%09elem.setAttribute%28%20%22class%22%2C%20finalValue%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09toggleClass%3A%20function%28%20value%2C%20stateVal%20%29%20%7B%0A%09%09var%20type%20%3D%20typeof%20value%2C%0A%09%09%09isValidValue%20%3D%20type%20%3D%3D%3D%20%22string%22%20%7C%7C%20Array.isArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20typeof%20stateVal%20%3D%3D%3D%20%22boolean%22%20%26%26%20isValidValue%20%29%20%7B%0A%09%09%09return%20stateVal%20%3F%20this.addClass%28%20value%20%29%20%3A%20this.removeClass%28%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.toggleClass%28%0A%09%09%09%09%09value.call%28%20this%2C%20i%2C%20getClass%28%20this%20%29%2C%20stateVal%20%29%2C%0A%09%09%09%09%09stateVal%0A%09%09%09%09%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20className%2C%20i%2C%20self%2C%20classNames%3B%0A%0A%09%09%09if%20%28%20isValidValue%20%29%20%7B%0A%0A%09%09%09%09//%20Toggle%20individual%20class%20names%0A%09%09%09%09i%20%3D%200%3B%0A%09%09%09%09self%20%3D%20jQuery%28%20this%20%29%3B%0A%09%09%09%09classNames%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09%09%09while%20%28%20%28%20className%20%3D%20classNames%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Check%20each%20className%20given%2C%20space%20separated%20list%0A%09%09%09%09%09if%20%28%20self.hasClass%28%20className%20%29%20%29%20%7B%0A%09%09%09%09%09%09self.removeClass%28%20className%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09self.addClass%28%20className%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09//%20Toggle%20whole%20class%20name%0A%09%09%09%7D%20else%20if%20%28%20value%20%3D%3D%3D%20undefined%20%7C%7C%20type%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09%09%09className%20%3D%20getClass%28%20this%20%29%3B%0A%09%09%09%09if%20%28%20className%20%29%20%7B%0A%0A%09%09%09%09%09//%20Store%20className%20if%20set%0A%09%09%09%09%09dataPriv.set%28%20this%2C%20%22__className__%22%2C%20className%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20If%20the%20element%20has%20a%20class%20name%20or%20if%20we%27re%20passed%20%60false%60%2C%0A%09%09%09%09//%20then%20remove%20the%20whole%20classname%20%28if%20there%20was%20one%2C%20the%20above%20saved%20it%29.%0A%09%09%09%09//%20Otherwise%20bring%20back%20whatever%20was%20previously%20saved%20%28if%20anything%29%2C%0A%09%09%09%09//%20falling%20back%20to%20the%20empty%20string%20if%20nothing%20was%20stored.%0A%09%09%09%09if%20%28%20this.setAttribute%20%29%20%7B%0A%09%09%09%09%09this.setAttribute%28%20%22class%22%2C%0A%09%09%09%09%09%09className%20%7C%7C%20value%20%3D%3D%3D%20false%20%3F%0A%09%09%09%09%09%09%22%22%20%3A%0A%09%09%09%09%09%09dataPriv.get%28%20this%2C%20%22__className__%22%20%29%20%7C%7C%20%22%22%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09hasClass%3A%20function%28%20selector%20%29%20%7B%0A%09%09var%20className%2C%20elem%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09className%20%3D%20%22%20%22%20%2B%20selector%20%2B%20%22%20%22%3B%0A%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%28%20%22%20%22%20%2B%20stripAndCollapse%28%20getClass%28%20elem%20%29%20%29%20%2B%20%22%20%22%20%29.indexOf%28%20className%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20false%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20rreturn%20%3D%20/%5Cr/g%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09val%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20hooks%2C%20ret%2C%20valueIsFunction%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%3B%0A%0A%09%09if%20%28%20%21arguments.length%20%29%20%7B%0A%09%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09%09hooks%20%3D%20jQuery.valHooks%5B%20elem.type%20%5D%20%7C%7C%0A%09%09%09%09%09jQuery.valHooks%5B%20elem.nodeName.toLowerCase%28%29%20%5D%3B%0A%0A%09%09%09%09if%20%28%20hooks%20%26%26%0A%09%09%09%09%09%22get%22%20in%20hooks%20%26%26%0A%09%09%09%09%09%28%20ret%20%3D%20hooks.get%28%20elem%2C%20%22value%22%20%29%20%29%20%21%3D%3D%20undefined%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09return%20ret%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09ret%20%3D%20elem.value%3B%0A%0A%09%09%09%09//%20Handle%20most%20common%20string%20cases%0A%09%09%09%09if%20%28%20typeof%20ret%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09%09%09return%20ret.replace%28%20rreturn%2C%20%22%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Handle%20cases%20where%20value%20is%20null/undef%20or%20number%0A%09%09%09%09return%20ret%20%3D%3D%20null%20%3F%20%22%22%20%3A%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09valueIsFunction%20%3D%20isFunction%28%20value%20%29%3B%0A%0A%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09var%20val%3B%0A%0A%09%09%09if%20%28%20this.nodeType%20%21%3D%3D%201%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20valueIsFunction%20%29%20%7B%0A%09%09%09%09val%20%3D%20value.call%28%20this%2C%20i%2C%20jQuery%28%20this%20%29.val%28%29%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09val%20%3D%20value%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Treat%20null/undefined%20as%20%22%22%3B%20convert%20numbers%20to%20string%0A%09%09%09if%20%28%20val%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09val%20%3D%20%22%22%3B%0A%0A%09%09%09%7D%20else%20if%20%28%20typeof%20val%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09val%20%2B%3D%20%22%22%3B%0A%0A%09%09%09%7D%20else%20if%20%28%20Array.isArray%28%20val%20%29%20%29%20%7B%0A%09%09%09%09val%20%3D%20jQuery.map%28%20val%2C%20function%28%20value%20%29%20%7B%0A%09%09%09%09%09return%20value%20%3D%3D%20null%20%3F%20%22%22%20%3A%20value%20%2B%20%22%22%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09hooks%20%3D%20jQuery.valHooks%5B%20this.type%20%5D%20%7C%7C%20jQuery.valHooks%5B%20this.nodeName.toLowerCase%28%29%20%5D%3B%0A%0A%09%09%09//%20If%20set%20returns%20undefined%2C%20fall%20back%20to%20normal%20setting%0A%09%09%09if%20%28%20%21hooks%20%7C%7C%20%21%28%20%22set%22%20in%20hooks%20%29%20%7C%7C%20hooks.set%28%20this%2C%20val%2C%20%22value%22%20%29%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09this.value%20%3D%20val%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09valHooks%3A%20%7B%0A%09%09option%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09%09var%20val%20%3D%20jQuery.find.attr%28%20elem%2C%20%22value%22%20%29%3B%0A%09%09%09%09return%20val%20%21%3D%20null%20%3F%0A%09%09%09%09%09val%20%3A%0A%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D10%20-%2011%20only%0A%09%09%09%09%09//%20option.text%20throws%20exceptions%20%28%2314686%2C%20%2314858%29%0A%09%09%09%09%09//%20Strip%20and%20collapse%20whitespace%0A%09%09%09%09%09//%20https%3A//html.spec.whatwg.org/%23strip-and-collapse-whitespace%0A%09%09%09%09%09stripAndCollapse%28%20jQuery.text%28%20elem%20%29%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09select%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20value%2C%20option%2C%20i%2C%0A%09%09%09%09%09options%20%3D%20elem.options%2C%0A%09%09%09%09%09index%20%3D%20elem.selectedIndex%2C%0A%09%09%09%09%09one%20%3D%20elem.type%20%3D%3D%3D%20%22select-one%22%2C%0A%09%09%09%09%09values%20%3D%20one%20%3F%20null%20%3A%20%5B%5D%2C%0A%09%09%09%09%09max%20%3D%20one%20%3F%20index%20%2B%201%20%3A%20options.length%3B%0A%0A%09%09%09%09if%20%28%20index%20%3C%200%20%29%20%7B%0A%09%09%09%09%09i%20%3D%20max%3B%0A%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09i%20%3D%20one%20%3F%20index%20%3A%200%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Loop%20through%20all%20the%20selected%20options%0A%09%09%09%09for%20%28%20%3B%20i%20%3C%20max%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09option%20%3D%20options%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09//%20IE8-9%20doesn%27t%20update%20selected%20after%20form%20reset%20%28%232551%29%0A%09%09%09%09%09if%20%28%20%28%20option.selected%20%7C%7C%20i%20%3D%3D%3D%20index%20%29%20%26%26%0A%0A%09%09%09%09%09%09%09//%20Don%27t%20return%20options%20that%20are%20disabled%20or%20in%20a%20disabled%20optgroup%0A%09%09%09%09%09%09%09%21option.disabled%20%26%26%0A%09%09%09%09%09%09%09%28%20%21option.parentNode.disabled%20%7C%7C%0A%09%09%09%09%09%09%09%09%21nodeName%28%20option.parentNode%2C%20%22optgroup%22%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Get%20the%20specific%20value%20for%20the%20option%0A%09%09%09%09%09%09value%20%3D%20jQuery%28%20option%20%29.val%28%29%3B%0A%0A%09%09%09%09%09%09//%20We%20don%27t%20need%20an%20array%20for%20one%20selects%0A%09%09%09%09%09%09if%20%28%20one%20%29%20%7B%0A%09%09%09%09%09%09%09return%20value%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09//%20Multi-Selects%20return%20an%20array%0A%09%09%09%09%09%09values.push%28%20value%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20values%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09%09var%20optionSet%2C%20option%2C%0A%09%09%09%09%09options%20%3D%20elem.options%2C%0A%09%09%09%09%09values%20%3D%20jQuery.makeArray%28%20value%20%29%2C%0A%09%09%09%09%09i%20%3D%20options.length%3B%0A%0A%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09option%20%3D%20options%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09/%2A%20eslint-disable%20no-cond-assign%20%2A/%0A%0A%09%09%09%09%09if%20%28%20option.selected%20%3D%0A%09%09%09%09%09%09jQuery.inArray%28%20jQuery.valHooks.option.get%28%20option%20%29%2C%20values%20%29%20%3E%20-1%0A%09%09%09%09%09%29%20%7B%0A%09%09%09%09%09%09optionSet%20%3D%20true%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09/%2A%20eslint-enable%20no-cond-assign%20%2A/%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Force%20browsers%20to%20behave%20consistently%20when%20non-matching%20value%20is%20set%0A%09%09%09%09if%20%28%20%21optionSet%20%29%20%7B%0A%09%09%09%09%09elem.selectedIndex%20%3D%20-1%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20values%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Radios%20and%20checkboxes%20getter/setter%0AjQuery.each%28%20%5B%20%22radio%22%2C%20%22checkbox%22%20%5D%2C%20function%28%29%20%7B%0A%09jQuery.valHooks%5B%20this%20%5D%20%3D%20%7B%0A%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09%09%09return%20%28%20elem.checked%20%3D%20jQuery.inArray%28%20jQuery%28%20elem%20%29.val%28%29%2C%20value%20%29%20%3E%20-1%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%09if%20%28%20%21support.checkOn%20%29%20%7B%0A%09%09jQuery.valHooks%5B%20this%20%5D.get%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem.getAttribute%28%20%22value%22%20%29%20%3D%3D%3D%20null%20%3F%20%22on%22%20%3A%20elem.value%3B%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Return%20jQuery%20for%20attributes-only%20inclusion%0A%0A%0Asupport.focusin%20%3D%20%22onfocusin%22%20in%20window%3B%0A%0A%0Avar%20rfocusMorph%20%3D%20/%5E%28%3F%3Afocusinfocus%7Cfocusoutblur%29%24/%2C%0A%09stopPropagationCallback%20%3D%20function%28%20e%20%29%20%7B%0A%09%09e.stopPropagation%28%29%3B%0A%09%7D%3B%0A%0AjQuery.extend%28%20jQuery.event%2C%20%7B%0A%0A%09trigger%3A%20function%28%20event%2C%20data%2C%20elem%2C%20onlyHandlers%20%29%20%7B%0A%0A%09%09var%20i%2C%20cur%2C%20tmp%2C%20bubbleType%2C%20ontype%2C%20handle%2C%20special%2C%20lastElement%2C%0A%09%09%09eventPath%20%3D%20%5B%20elem%20%7C%7C%20document%20%5D%2C%0A%09%09%09type%20%3D%20hasOwn.call%28%20event%2C%20%22type%22%20%29%20%3F%20event.type%20%3A%20event%2C%0A%09%09%09namespaces%20%3D%20hasOwn.call%28%20event%2C%20%22namespace%22%20%29%20%3F%20event.namespace.split%28%20%22.%22%20%29%20%3A%20%5B%5D%3B%0A%0A%09%09cur%20%3D%20lastElement%20%3D%20tmp%20%3D%20elem%20%3D%20elem%20%7C%7C%20document%3B%0A%0A%09%09//%20Don%27t%20do%20events%20on%20text%20and%20comment%20nodes%0A%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%203%20%7C%7C%20elem.nodeType%20%3D%3D%3D%208%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20focus/blur%20morphs%20to%20focusin/out%3B%20ensure%20we%27re%20not%20firing%20them%20right%20now%0A%09%09if%20%28%20rfocusMorph.test%28%20type%20%2B%20jQuery.event.triggered%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20type.indexOf%28%20%22.%22%20%29%20%3E%20-1%20%29%20%7B%0A%0A%09%09%09//%20Namespaced%20trigger%3B%20create%20a%20regexp%20to%20match%20event%20type%20in%20handle%28%29%0A%09%09%09namespaces%20%3D%20type.split%28%20%22.%22%20%29%3B%0A%09%09%09type%20%3D%20namespaces.shift%28%29%3B%0A%09%09%09namespaces.sort%28%29%3B%0A%09%09%7D%0A%09%09ontype%20%3D%20type.indexOf%28%20%22%3A%22%20%29%20%3C%200%20%26%26%20%22on%22%20%2B%20type%3B%0A%0A%09%09//%20Caller%20can%20pass%20in%20a%20jQuery.Event%20object%2C%20Object%2C%20or%20just%20an%20event%20type%20string%0A%09%09event%20%3D%20event%5B%20jQuery.expando%20%5D%20%3F%0A%09%09%09event%20%3A%0A%09%09%09new%20jQuery.Event%28%20type%2C%20typeof%20event%20%3D%3D%3D%20%22object%22%20%26%26%20event%20%29%3B%0A%0A%09%09//%20Trigger%20bitmask%3A%20%26%201%20for%20native%20handlers%3B%20%26%202%20for%20jQuery%20%28always%20true%29%0A%09%09event.isTrigger%20%3D%20onlyHandlers%20%3F%202%20%3A%203%3B%0A%09%09event.namespace%20%3D%20namespaces.join%28%20%22.%22%20%29%3B%0A%09%09event.rnamespace%20%3D%20event.namespace%20%3F%0A%09%09%09new%20RegExp%28%20%22%28%5E%7C%5C%5C.%29%22%20%2B%20namespaces.join%28%20%22%5C%5C.%28%3F%3A.%2A%5C%5C.%7C%29%22%20%29%20%2B%20%22%28%5C%5C.%7C%24%29%22%20%29%20%3A%0A%09%09%09null%3B%0A%0A%09%09//%20Clean%20up%20the%20event%20in%20case%20it%20is%20being%20reused%0A%09%09event.result%20%3D%20undefined%3B%0A%09%09if%20%28%20%21event.target%20%29%20%7B%0A%09%09%09event.target%20%3D%20elem%3B%0A%09%09%7D%0A%0A%09%09//%20Clone%20any%20incoming%20data%20and%20prepend%20the%20event%2C%20creating%20the%20handler%20arg%20list%0A%09%09data%20%3D%20data%20%3D%3D%20null%20%3F%0A%09%09%09%5B%20event%20%5D%20%3A%0A%09%09%09jQuery.makeArray%28%20data%2C%20%5B%20event%20%5D%20%29%3B%0A%0A%09%09//%20Allow%20special%20events%20to%20draw%20outside%20the%20lines%0A%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20special.trigger%20%26%26%20special.trigger.apply%28%20elem%2C%20data%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Determine%20event%20propagation%20path%20in%20advance%2C%20per%20W3C%20events%20spec%20%28%239951%29%0A%09%09//%20Bubble%20up%20to%20document%2C%20then%20to%20window%3B%20watch%20for%20a%20global%20ownerDocument%20var%20%28%239724%29%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20%21special.noBubble%20%26%26%20%21isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09bubbleType%20%3D%20special.delegateType%20%7C%7C%20type%3B%0A%09%09%09if%20%28%20%21rfocusMorph.test%28%20bubbleType%20%2B%20type%20%29%20%29%20%7B%0A%09%09%09%09cur%20%3D%20cur.parentNode%3B%0A%09%09%09%7D%0A%09%09%09for%20%28%20%3B%20cur%3B%20cur%20%3D%20cur.parentNode%20%29%20%7B%0A%09%09%09%09eventPath.push%28%20cur%20%29%3B%0A%09%09%09%09tmp%20%3D%20cur%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Only%20add%20window%20if%20we%20got%20to%20document%20%28e.g.%2C%20not%20plain%20obj%20or%20detached%20DOM%29%0A%09%09%09if%20%28%20tmp%20%3D%3D%3D%20%28%20elem.ownerDocument%20%7C%7C%20document%20%29%20%29%20%7B%0A%09%09%09%09eventPath.push%28%20tmp.defaultView%20%7C%7C%20tmp.parentWindow%20%7C%7C%20window%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Fire%20handlers%20on%20the%20event%20path%0A%09%09i%20%3D%200%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20eventPath%5B%20i%2B%2B%20%5D%20%29%20%26%26%20%21event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09lastElement%20%3D%20cur%3B%0A%09%09%09event.type%20%3D%20i%20%3E%201%20%3F%0A%09%09%09%09bubbleType%20%3A%0A%09%09%09%09special.bindType%20%7C%7C%20type%3B%0A%0A%09%09%09//%20jQuery%20handler%0A%09%09%09handle%20%3D%20%28%0A%09%09%09%09%09dataPriv.get%28%20cur%2C%20%22events%22%20%29%20%7C%7C%20Object.create%28%20null%20%29%0A%09%09%09%09%29%5B%20event.type%20%5D%20%26%26%0A%09%09%09%09dataPriv.get%28%20cur%2C%20%22handle%22%20%29%3B%0A%09%09%09if%20%28%20handle%20%29%20%7B%0A%09%09%09%09handle.apply%28%20cur%2C%20data%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Native%20handler%0A%09%09%09handle%20%3D%20ontype%20%26%26%20cur%5B%20ontype%20%5D%3B%0A%09%09%09if%20%28%20handle%20%26%26%20handle.apply%20%26%26%20acceptData%28%20cur%20%29%20%29%20%7B%0A%09%09%09%09event.result%20%3D%20handle.apply%28%20cur%2C%20data%20%29%3B%0A%09%09%09%09if%20%28%20event.result%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09event.type%20%3D%20type%3B%0A%0A%09%09//%20If%20nobody%20prevented%20the%20default%20action%2C%20do%20it%20now%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20%21event.isDefaultPrevented%28%29%20%29%20%7B%0A%0A%09%09%09if%20%28%20%28%20%21special._default%20%7C%7C%0A%09%09%09%09special._default.apply%28%20eventPath.pop%28%29%2C%20data%20%29%20%3D%3D%3D%20false%20%29%20%26%26%0A%09%09%09%09acceptData%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Call%20a%20native%20DOM%20method%20on%20the%20target%20with%20the%20same%20name%20as%20the%20event.%0A%09%09%09%09//%20Don%27t%20do%20default%20actions%20on%20window%2C%20that%27s%20where%20global%20variables%20be%20%28%236170%29%0A%09%09%09%09if%20%28%20ontype%20%26%26%20isFunction%28%20elem%5B%20type%20%5D%20%29%20%26%26%20%21isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Don%27t%20re-trigger%20an%20onFOO%20event%20when%20we%20call%20its%20FOO%28%29%20method%0A%09%09%09%09%09tmp%20%3D%20elem%5B%20ontype%20%5D%3B%0A%0A%09%09%09%09%09if%20%28%20tmp%20%29%20%7B%0A%09%09%09%09%09%09elem%5B%20ontype%20%5D%20%3D%20null%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Prevent%20re-triggering%20of%20the%20same%20event%2C%20since%20we%20already%20bubbled%20it%20above%0A%09%09%09%09%09jQuery.event.triggered%20%3D%20type%3B%0A%0A%09%09%09%09%09if%20%28%20event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09%09%09%09lastElement.addEventListener%28%20type%2C%20stopPropagationCallback%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09elem%5B%20type%20%5D%28%29%3B%0A%0A%09%09%09%09%09if%20%28%20event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09%09%09%09lastElement.removeEventListener%28%20type%2C%20stopPropagationCallback%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09jQuery.event.triggered%20%3D%20undefined%3B%0A%0A%09%09%09%09%09if%20%28%20tmp%20%29%20%7B%0A%09%09%09%09%09%09elem%5B%20ontype%20%5D%20%3D%20tmp%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20event.result%3B%0A%09%7D%2C%0A%0A%09//%20Piggyback%20on%20a%20donor%20event%20to%20simulate%20a%20different%20one%0A%09//%20Used%20only%20for%20%60focus%28in%20%7C%20out%29%60%20events%0A%09simulate%3A%20function%28%20type%2C%20elem%2C%20event%20%29%20%7B%0A%09%09var%20e%20%3D%20jQuery.extend%28%0A%09%09%09new%20jQuery.Event%28%29%2C%0A%09%09%09event%2C%0A%09%09%09%7B%0A%09%09%09%09type%3A%20type%2C%0A%09%09%09%09isSimulated%3A%20true%0A%09%09%09%7D%0A%09%09%29%3B%0A%0A%09%09jQuery.event.trigger%28%20e%2C%20null%2C%20elem%20%29%3B%0A%09%7D%0A%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09trigger%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.event.trigger%28%20type%2C%20data%2C%20this%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09triggerHandler%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09var%20elem%20%3D%20this%5B%200%20%5D%3B%0A%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.event.trigger%28%20type%2C%20data%2C%20elem%2C%20true%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20Support%3A%20Firefox%20%3C%3D44%0A//%20Firefox%20doesn%27t%20have%20focus%28in%20%7C%20out%29%20events%0A//%20Related%20ticket%20-%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D687787%0A//%0A//%20Support%3A%20Chrome%20%3C%3D48%20-%2049%2C%20Safari%20%3C%3D9.0%20-%209.1%0A//%20focus%28in%20%7C%20out%29%20events%20fire%20after%20focus%20%26%20blur%20events%2C%0A//%20which%20is%20spec%20violation%20-%20http%3A//www.w3.org/TR/DOM-Level-3-Events/%23events-focusevent-event-order%0A//%20Related%20ticket%20-%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D449857%0Aif%20%28%20%21support.focusin%20%29%20%7B%0A%09jQuery.each%28%20%7B%20focus%3A%20%22focusin%22%2C%20blur%3A%20%22focusout%22%20%7D%2C%20function%28%20orig%2C%20fix%20%29%20%7B%0A%0A%09%09//%20Attach%20a%20single%20capturing%20handler%20on%20the%20document%20while%20someone%20wants%20focusin/focusout%0A%09%09var%20handler%20%3D%20function%28%20event%20%29%20%7B%0A%09%09%09jQuery.event.simulate%28%20fix%2C%20event.target%2C%20jQuery.event.fix%28%20event%20%29%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09jQuery.event.special%5B%20fix%20%5D%20%3D%20%7B%0A%09%09%09setup%3A%20function%28%29%20%7B%0A%0A%09%09%09%09//%20Handle%3A%20regular%20nodes%20%28via%20%60this.ownerDocument%60%29%2C%20window%0A%09%09%09%09//%20%28via%20%60this.document%60%29%20%26%20document%20%28via%20%60this%60%29.%0A%09%09%09%09var%20doc%20%3D%20this.ownerDocument%20%7C%7C%20this.document%20%7C%7C%20this%2C%0A%09%09%09%09%09attaches%20%3D%20dataPriv.access%28%20doc%2C%20fix%20%29%3B%0A%0A%09%09%09%09if%20%28%20%21attaches%20%29%20%7B%0A%09%09%09%09%09doc.addEventListener%28%20orig%2C%20handler%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09dataPriv.access%28%20doc%2C%20fix%2C%20%28%20attaches%20%7C%7C%200%20%29%20%2B%201%20%29%3B%0A%09%09%09%7D%2C%0A%09%09%09teardown%3A%20function%28%29%20%7B%0A%09%09%09%09var%20doc%20%3D%20this.ownerDocument%20%7C%7C%20this.document%20%7C%7C%20this%2C%0A%09%09%09%09%09attaches%20%3D%20dataPriv.access%28%20doc%2C%20fix%20%29%20-%201%3B%0A%0A%09%09%09%09if%20%28%20%21attaches%20%29%20%7B%0A%09%09%09%09%09doc.removeEventListener%28%20orig%2C%20handler%2C%20true%20%29%3B%0A%09%09%09%09%09dataPriv.remove%28%20doc%2C%20fix%20%29%3B%0A%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09dataPriv.access%28%20doc%2C%20fix%2C%20attaches%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%0Avar%20location%20%3D%20window.location%3B%0A%0Avar%20nonce%20%3D%20%7B%20guid%3A%20Date.now%28%29%20%7D%3B%0A%0Avar%20rquery%20%3D%20%28%20/%5C%3F/%20%29%3B%0A%0A%0A%0A//%20Cross-browser%20xml%20parsing%0AjQuery.parseXML%20%3D%20function%28%20data%20%29%20%7B%0A%09var%20xml%3B%0A%09if%20%28%20%21data%20%7C%7C%20typeof%20data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20null%3B%0A%09%7D%0A%0A%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09//%20IE%20throws%20on%20parseFromString%20with%20invalid%20input.%0A%09try%20%7B%0A%09%09xml%20%3D%20%28%20new%20window.DOMParser%28%29%20%29.parseFromString%28%20data%2C%20%22text/xml%22%20%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09xml%20%3D%20undefined%3B%0A%09%7D%0A%0A%09if%20%28%20%21xml%20%7C%7C%20xml.getElementsByTagName%28%20%22parsererror%22%20%29.length%20%29%20%7B%0A%09%09jQuery.error%28%20%22Invalid%20XML%3A%20%22%20%2B%20data%20%29%3B%0A%09%7D%0A%09return%20xml%3B%0A%7D%3B%0A%0A%0Avar%0A%09rbracket%20%3D%20/%5C%5B%5C%5D%24/%2C%0A%09rCRLF%20%3D%20/%5Cr%3F%5Cn/g%2C%0A%09rsubmitterTypes%20%3D%20/%5E%28%3F%3Asubmit%7Cbutton%7Cimage%7Creset%7Cfile%29%24/i%2C%0A%09rsubmittable%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Ckeygen%29/i%3B%0A%0Afunction%20buildParams%28%20prefix%2C%20obj%2C%20traditional%2C%20add%20%29%20%7B%0A%09var%20name%3B%0A%0A%09if%20%28%20Array.isArray%28%20obj%20%29%20%29%20%7B%0A%0A%09%09//%20Serialize%20array%20item.%0A%09%09jQuery.each%28%20obj%2C%20function%28%20i%2C%20v%20%29%20%7B%0A%09%09%09if%20%28%20traditional%20%7C%7C%20rbracket.test%28%20prefix%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Treat%20each%20array%20item%20as%20a%20scalar.%0A%09%09%09%09add%28%20prefix%2C%20v%20%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Item%20is%20non-scalar%20%28array%20or%20object%29%2C%20encode%20its%20numeric%20index.%0A%09%09%09%09buildParams%28%0A%09%09%09%09%09prefix%20%2B%20%22%5B%22%20%2B%20%28%20typeof%20v%20%3D%3D%3D%20%22object%22%20%26%26%20v%20%21%3D%20null%20%3F%20i%20%3A%20%22%22%20%29%20%2B%20%22%5D%22%2C%0A%09%09%09%09%09v%2C%0A%09%09%09%09%09traditional%2C%0A%09%09%09%09%09add%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%0A%09%7D%20else%20if%20%28%20%21traditional%20%26%26%20toType%28%20obj%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20Serialize%20object%20item.%0A%09%09for%20%28%20name%20in%20obj%20%29%20%7B%0A%09%09%09buildParams%28%20prefix%20%2B%20%22%5B%22%20%2B%20name%20%2B%20%22%5D%22%2C%20obj%5B%20name%20%5D%2C%20traditional%2C%20add%20%29%3B%0A%09%09%7D%0A%0A%09%7D%20else%20%7B%0A%0A%09%09//%20Serialize%20scalar%20item.%0A%09%09add%28%20prefix%2C%20obj%20%29%3B%0A%09%7D%0A%7D%0A%0A//%20Serialize%20an%20array%20of%20form%20elements%20or%20a%20set%20of%0A//%20key/values%20into%20a%20query%20string%0AjQuery.param%20%3D%20function%28%20a%2C%20traditional%20%29%20%7B%0A%09var%20prefix%2C%0A%09%09s%20%3D%20%5B%5D%2C%0A%09%09add%20%3D%20function%28%20key%2C%20valueOrFunction%20%29%20%7B%0A%0A%09%09%09//%20If%20value%20is%20a%20function%2C%20invoke%20it%20and%20use%20its%20return%20value%0A%09%09%09var%20value%20%3D%20isFunction%28%20valueOrFunction%20%29%20%3F%0A%09%09%09%09valueOrFunction%28%29%20%3A%0A%09%09%09%09valueOrFunction%3B%0A%0A%09%09%09s%5B%20s.length%20%5D%20%3D%20encodeURIComponent%28%20key%20%29%20%2B%20%22%3D%22%20%2B%0A%09%09%09%09encodeURIComponent%28%20value%20%3D%3D%20null%20%3F%20%22%22%20%3A%20value%20%29%3B%0A%09%09%7D%3B%0A%0A%09if%20%28%20a%20%3D%3D%20null%20%29%20%7B%0A%09%09return%20%22%22%3B%0A%09%7D%0A%0A%09//%20If%20an%20array%20was%20passed%20in%2C%20assume%20that%20it%20is%20an%20array%20of%20form%20elements.%0A%09if%20%28%20Array.isArray%28%20a%20%29%20%7C%7C%20%28%20a.jquery%20%26%26%20%21jQuery.isPlainObject%28%20a%20%29%20%29%20%29%20%7B%0A%0A%09%09//%20Serialize%20the%20form%20elements%0A%09%09jQuery.each%28%20a%2C%20function%28%29%20%7B%0A%09%09%09add%28%20this.name%2C%20this.value%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09%7D%20else%20%7B%0A%0A%09%09//%20If%20traditional%2C%20encode%20the%20%22old%22%20way%20%28the%20way%201.3.2%20or%20older%0A%09%09//%20did%20it%29%2C%20otherwise%20encode%20params%20recursively.%0A%09%09for%20%28%20prefix%20in%20a%20%29%20%7B%0A%09%09%09buildParams%28%20prefix%2C%20a%5B%20prefix%20%5D%2C%20traditional%2C%20add%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20resulting%20serialization%0A%09return%20s.join%28%20%22%26%22%20%29%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09serialize%3A%20function%28%29%20%7B%0A%09%09return%20jQuery.param%28%20this.serializeArray%28%29%20%29%3B%0A%09%7D%2C%0A%09serializeArray%3A%20function%28%29%20%7B%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Can%20add%20propHook%20for%20%22elements%22%20to%20filter%20or%20add%20form%20elements%0A%09%09%09var%20elements%20%3D%20jQuery.prop%28%20this%2C%20%22elements%22%20%29%3B%0A%09%09%09return%20elements%20%3F%20jQuery.makeArray%28%20elements%20%29%20%3A%20this%3B%0A%09%09%7D%20%29%0A%09%09.filter%28%20function%28%29%20%7B%0A%09%09%09var%20type%20%3D%20this.type%3B%0A%0A%09%09%09//%20Use%20.is%28%20%22%3Adisabled%22%20%29%20so%20that%20fieldset%5Bdisabled%5D%20works%0A%09%09%09return%20this.name%20%26%26%20%21jQuery%28%20this%20%29.is%28%20%22%3Adisabled%22%20%29%20%26%26%0A%09%09%09%09rsubmittable.test%28%20this.nodeName%20%29%20%26%26%20%21rsubmitterTypes.test%28%20type%20%29%20%26%26%0A%09%09%09%09%28%20this.checked%20%7C%7C%20%21rcheckableType.test%28%20type%20%29%20%29%3B%0A%09%09%7D%20%29%0A%09%09.map%28%20function%28%20_i%2C%20elem%20%29%20%7B%0A%09%09%09var%20val%20%3D%20jQuery%28%20this%20%29.val%28%29%3B%0A%0A%09%09%09if%20%28%20val%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09return%20null%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20Array.isArray%28%20val%20%29%20%29%20%7B%0A%09%09%09%09return%20jQuery.map%28%20val%2C%20function%28%20val%20%29%20%7B%0A%09%09%09%09%09return%20%7B%20name%3A%20elem.name%2C%20value%3A%20val.replace%28%20rCRLF%2C%20%22%5Cr%5Cn%22%20%29%20%7D%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20%7B%20name%3A%20elem.name%2C%20value%3A%20val.replace%28%20rCRLF%2C%20%22%5Cr%5Cn%22%20%29%20%7D%3B%0A%09%09%7D%20%29.get%28%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Avar%0A%09r20%20%3D%20/%2520/g%2C%0A%09rhash%20%3D%20/%23.%2A%24/%2C%0A%09rantiCache%20%3D%20/%28%5B%3F%26%5D%29_%3D%5B%5E%26%5D%2A/%2C%0A%09rheaders%20%3D%20/%5E%28.%2A%3F%29%3A%5B%20%5Ct%5D%2A%28%5B%5E%5Cr%5Cn%5D%2A%29%24/mg%2C%0A%0A%09//%20%237653%2C%20%238125%2C%20%238152%3A%20local%20protocol%20detection%0A%09rlocalProtocol%20%3D%20/%5E%28%3F%3Aabout%7Capp%7Capp-storage%7C.%2B-extension%7Cfile%7Cres%7Cwidget%29%3A%24/%2C%0A%09rnoContent%20%3D%20/%5E%28%3F%3AGET%7CHEAD%29%24/%2C%0A%09rprotocol%20%3D%20/%5E%5C/%5C//%2C%0A%0A%09/%2A%20Prefilters%0A%09%20%2A%201%29%20They%20are%20useful%20to%20introduce%20custom%20dataTypes%20%28see%20ajax/jsonp.js%20for%20an%20example%29%0A%09%20%2A%202%29%20These%20are%20called%3A%0A%09%20%2A%20%20%20%20-%20BEFORE%20asking%20for%20a%20transport%0A%09%20%2A%20%20%20%20-%20AFTER%20param%20serialization%20%28s.data%20is%20a%20string%20if%20s.processData%20is%20true%29%0A%09%20%2A%203%29%20key%20is%20the%20dataType%0A%09%20%2A%204%29%20the%20catchall%20symbol%20%22%2A%22%20can%20be%20used%0A%09%20%2A%205%29%20execution%20will%20start%20with%20transport%20dataType%20and%20THEN%20continue%20down%20to%20%22%2A%22%20if%20needed%0A%09%20%2A/%0A%09prefilters%20%3D%20%7B%7D%2C%0A%0A%09/%2A%20Transports%20bindings%0A%09%20%2A%201%29%20key%20is%20the%20dataType%0A%09%20%2A%202%29%20the%20catchall%20symbol%20%22%2A%22%20can%20be%20used%0A%09%20%2A%203%29%20selection%20will%20start%20with%20transport%20dataType%20and%20THEN%20go%20to%20%22%2A%22%20if%20needed%0A%09%20%2A/%0A%09transports%20%3D%20%7B%7D%2C%0A%0A%09//%20Avoid%20comment-prolog%20char%20sequence%20%28%2310098%29%3B%20must%20appease%20lint%20and%20evade%20compression%0A%09allTypes%20%3D%20%22%2A/%22.concat%28%20%22%2A%22%20%29%2C%0A%0A%09//%20Anchor%20tag%20for%20parsing%20the%20document%20origin%0A%09originAnchor%20%3D%20document.createElement%28%20%22a%22%20%29%3B%0A%09originAnchor.href%20%3D%20location.href%3B%0A%0A//%20Base%20%22constructor%22%20for%20jQuery.ajaxPrefilter%20and%20jQuery.ajaxTransport%0Afunction%20addToPrefiltersOrTransports%28%20structure%20%29%20%7B%0A%0A%09//%20dataTypeExpression%20is%20optional%20and%20defaults%20to%20%22%2A%22%0A%09return%20function%28%20dataTypeExpression%2C%20func%20%29%20%7B%0A%0A%09%09if%20%28%20typeof%20dataTypeExpression%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09func%20%3D%20dataTypeExpression%3B%0A%09%09%09dataTypeExpression%20%3D%20%22%2A%22%3B%0A%09%09%7D%0A%0A%09%09var%20dataType%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09dataTypes%20%3D%20dataTypeExpression.toLowerCase%28%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%0A%09%09if%20%28%20isFunction%28%20func%20%29%20%29%20%7B%0A%0A%09%09%09//%20For%20each%20dataType%20in%20the%20dataTypeExpression%0A%09%09%09while%20%28%20%28%20dataType%20%3D%20dataTypes%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Prepend%20if%20requested%0A%09%09%09%09if%20%28%20dataType%5B%200%20%5D%20%3D%3D%3D%20%22%2B%22%20%29%20%7B%0A%09%09%09%09%09dataType%20%3D%20dataType.slice%28%201%20%29%20%7C%7C%20%22%2A%22%3B%0A%09%09%09%09%09%28%20structure%5B%20dataType%20%5D%20%3D%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%20%29.unshift%28%20func%20%29%3B%0A%0A%09%09%09%09//%20Otherwise%20append%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%28%20structure%5B%20dataType%20%5D%20%3D%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%20%29.push%28%20func%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0A//%20Base%20inspection%20function%20for%20prefilters%20and%20transports%0Afunction%20inspectPrefiltersOrTransports%28%20structure%2C%20options%2C%20originalOptions%2C%20jqXHR%20%29%20%7B%0A%0A%09var%20inspected%20%3D%20%7B%7D%2C%0A%09%09seekingTransport%20%3D%20%28%20structure%20%3D%3D%3D%20transports%20%29%3B%0A%0A%09function%20inspect%28%20dataType%20%29%20%7B%0A%09%09var%20selected%3B%0A%09%09inspected%5B%20dataType%20%5D%20%3D%20true%3B%0A%09%09jQuery.each%28%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%2C%20function%28%20_%2C%20prefilterOrFactory%20%29%20%7B%0A%09%09%09var%20dataTypeOrTransport%20%3D%20prefilterOrFactory%28%20options%2C%20originalOptions%2C%20jqXHR%20%29%3B%0A%09%09%09if%20%28%20typeof%20dataTypeOrTransport%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%21seekingTransport%20%26%26%20%21inspected%5B%20dataTypeOrTransport%20%5D%20%29%20%7B%0A%0A%09%09%09%09options.dataTypes.unshift%28%20dataTypeOrTransport%20%29%3B%0A%09%09%09%09inspect%28%20dataTypeOrTransport%20%29%3B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%20else%20if%20%28%20seekingTransport%20%29%20%7B%0A%09%09%09%09return%20%21%28%20selected%20%3D%20dataTypeOrTransport%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%09return%20selected%3B%0A%09%7D%0A%0A%09return%20inspect%28%20options.dataTypes%5B%200%20%5D%20%29%20%7C%7C%20%21inspected%5B%20%22%2A%22%20%5D%20%26%26%20inspect%28%20%22%2A%22%20%29%3B%0A%7D%0A%0A//%20A%20special%20extend%20for%20ajax%20options%0A//%20that%20takes%20%22flat%22%20options%20%28not%20to%20be%20deep%20extended%29%0A//%20Fixes%20%239887%0Afunction%20ajaxExtend%28%20target%2C%20src%20%29%20%7B%0A%09var%20key%2C%20deep%2C%0A%09%09flatOptions%20%3D%20jQuery.ajaxSettings.flatOptions%20%7C%7C%20%7B%7D%3B%0A%0A%09for%20%28%20key%20in%20src%20%29%20%7B%0A%09%09if%20%28%20src%5B%20key%20%5D%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%28%20flatOptions%5B%20key%20%5D%20%3F%20target%20%3A%20%28%20deep%20%7C%7C%20%28%20deep%20%3D%20%7B%7D%20%29%20%29%20%29%5B%20key%20%5D%20%3D%20src%5B%20key%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%09if%20%28%20deep%20%29%20%7B%0A%09%09jQuery.extend%28%20true%2C%20target%2C%20deep%20%29%3B%0A%09%7D%0A%0A%09return%20target%3B%0A%7D%0A%0A/%2A%20Handles%20responses%20to%20an%20ajax%20request%3A%0A%20%2A%20-%20finds%20the%20right%20dataType%20%28mediates%20between%20content-type%20and%20expected%20dataType%29%0A%20%2A%20-%20returns%20the%20corresponding%20response%0A%20%2A/%0Afunction%20ajaxHandleResponses%28%20s%2C%20jqXHR%2C%20responses%20%29%20%7B%0A%0A%09var%20ct%2C%20type%2C%20finalDataType%2C%20firstDataType%2C%0A%09%09contents%20%3D%20s.contents%2C%0A%09%09dataTypes%20%3D%20s.dataTypes%3B%0A%0A%09//%20Remove%20auto%20dataType%20and%20get%20content-type%20in%20the%20process%0A%09while%20%28%20dataTypes%5B%200%20%5D%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%09%09dataTypes.shift%28%29%3B%0A%09%09if%20%28%20ct%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09ct%20%3D%20s.mimeType%20%7C%7C%20jqXHR.getResponseHeader%28%20%22Content-Type%22%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Check%20if%20we%27re%20dealing%20with%20a%20known%20content-type%0A%09if%20%28%20ct%20%29%20%7B%0A%09%09for%20%28%20type%20in%20contents%20%29%20%7B%0A%09%09%09if%20%28%20contents%5B%20type%20%5D%20%26%26%20contents%5B%20type%20%5D.test%28%20ct%20%29%20%29%20%7B%0A%09%09%09%09dataTypes.unshift%28%20type%20%29%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Check%20to%20see%20if%20we%20have%20a%20response%20for%20the%20expected%20dataType%0A%09if%20%28%20dataTypes%5B%200%20%5D%20in%20responses%20%29%20%7B%0A%09%09finalDataType%20%3D%20dataTypes%5B%200%20%5D%3B%0A%09%7D%20else%20%7B%0A%0A%09%09//%20Try%20convertible%20dataTypes%0A%09%09for%20%28%20type%20in%20responses%20%29%20%7B%0A%09%09%09if%20%28%20%21dataTypes%5B%200%20%5D%20%7C%7C%20s.converters%5B%20type%20%2B%20%22%20%22%20%2B%20dataTypes%5B%200%20%5D%20%5D%20%29%20%7B%0A%09%09%09%09finalDataType%20%3D%20type%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20%21firstDataType%20%29%20%7B%0A%09%09%09%09firstDataType%20%3D%20type%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Or%20just%20use%20first%20one%0A%09%09finalDataType%20%3D%20finalDataType%20%7C%7C%20firstDataType%3B%0A%09%7D%0A%0A%09//%20If%20we%20found%20a%20dataType%0A%09//%20We%20add%20the%20dataType%20to%20the%20list%20if%20needed%0A%09//%20and%20return%20the%20corresponding%20response%0A%09if%20%28%20finalDataType%20%29%20%7B%0A%09%09if%20%28%20finalDataType%20%21%3D%3D%20dataTypes%5B%200%20%5D%20%29%20%7B%0A%09%09%09dataTypes.unshift%28%20finalDataType%20%29%3B%0A%09%09%7D%0A%09%09return%20responses%5B%20finalDataType%20%5D%3B%0A%09%7D%0A%7D%0A%0A/%2A%20Chain%20conversions%20given%20the%20request%20and%20the%20original%20response%0A%20%2A%20Also%20sets%20the%20responseXXX%20fields%20on%20the%20jqXHR%20instance%0A%20%2A/%0Afunction%20ajaxConvert%28%20s%2C%20response%2C%20jqXHR%2C%20isSuccess%20%29%20%7B%0A%09var%20conv2%2C%20current%2C%20conv%2C%20tmp%2C%20prev%2C%0A%09%09converters%20%3D%20%7B%7D%2C%0A%0A%09%09//%20Work%20with%20a%20copy%20of%20dataTypes%20in%20case%20we%20need%20to%20modify%20it%20for%20conversion%0A%09%09dataTypes%20%3D%20s.dataTypes.slice%28%29%3B%0A%0A%09//%20Create%20converters%20map%20with%20lowercased%20keys%0A%09if%20%28%20dataTypes%5B%201%20%5D%20%29%20%7B%0A%09%09for%20%28%20conv%20in%20s.converters%20%29%20%7B%0A%09%09%09converters%5B%20conv.toLowerCase%28%29%20%5D%20%3D%20s.converters%5B%20conv%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09current%20%3D%20dataTypes.shift%28%29%3B%0A%0A%09//%20Convert%20to%20each%20sequential%20dataType%0A%09while%20%28%20current%20%29%20%7B%0A%0A%09%09if%20%28%20s.responseFields%5B%20current%20%5D%20%29%20%7B%0A%09%09%09jqXHR%5B%20s.responseFields%5B%20current%20%5D%20%5D%20%3D%20response%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20the%20dataFilter%20if%20provided%0A%09%09if%20%28%20%21prev%20%26%26%20isSuccess%20%26%26%20s.dataFilter%20%29%20%7B%0A%09%09%09response%20%3D%20s.dataFilter%28%20response%2C%20s.dataType%20%29%3B%0A%09%09%7D%0A%0A%09%09prev%20%3D%20current%3B%0A%09%09current%20%3D%20dataTypes.shift%28%29%3B%0A%0A%09%09if%20%28%20current%20%29%20%7B%0A%0A%09%09%09//%20There%27s%20only%20work%20to%20do%20if%20current%20dataType%20is%20non-auto%0A%09%09%09if%20%28%20current%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%0A%09%09%09%09current%20%3D%20prev%3B%0A%0A%09%09%09//%20Convert%20response%20if%20prev%20dataType%20is%20non-auto%20and%20differs%20from%20current%0A%09%09%09%7D%20else%20if%20%28%20prev%20%21%3D%3D%20%22%2A%22%20%26%26%20prev%20%21%3D%3D%20current%20%29%20%7B%0A%0A%09%09%09%09//%20Seek%20a%20direct%20converter%0A%09%09%09%09conv%20%3D%20converters%5B%20prev%20%2B%20%22%20%22%20%2B%20current%20%5D%20%7C%7C%20converters%5B%20%22%2A%20%22%20%2B%20current%20%5D%3B%0A%0A%09%09%09%09//%20If%20none%20found%2C%20seek%20a%20pair%0A%09%09%09%09if%20%28%20%21conv%20%29%20%7B%0A%09%09%09%09%09for%20%28%20conv2%20in%20converters%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20If%20conv2%20outputs%20current%0A%09%09%09%09%09%09tmp%20%3D%20conv2.split%28%20%22%20%22%20%29%3B%0A%09%09%09%09%09%09if%20%28%20tmp%5B%201%20%5D%20%3D%3D%3D%20current%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20If%20prev%20can%20be%20converted%20to%20accepted%20input%0A%09%09%09%09%09%09%09conv%20%3D%20converters%5B%20prev%20%2B%20%22%20%22%20%2B%20tmp%5B%200%20%5D%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09converters%5B%20%22%2A%20%22%20%2B%20tmp%5B%200%20%5D%20%5D%3B%0A%09%09%09%09%09%09%09if%20%28%20conv%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Condense%20equivalence%20converters%0A%09%09%09%09%09%09%09%09if%20%28%20conv%20%3D%3D%3D%20true%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09conv%20%3D%20converters%5B%20conv2%20%5D%3B%0A%0A%09%09%09%09%09%09%09%09//%20Otherwise%2C%20insert%20the%20intermediate%20dataType%0A%09%09%09%09%09%09%09%09%7D%20else%20if%20%28%20converters%5B%20conv2%20%5D%20%21%3D%3D%20true%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09current%20%3D%20tmp%5B%200%20%5D%3B%0A%09%09%09%09%09%09%09%09%09dataTypes.unshift%28%20tmp%5B%201%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Apply%20converter%20%28if%20not%20an%20equivalence%29%0A%09%09%09%09if%20%28%20conv%20%21%3D%3D%20true%20%29%20%7B%0A%0A%09%09%09%09%09//%20Unless%20errors%20are%20allowed%20to%20bubble%2C%20catch%20and%20return%20them%0A%09%09%09%09%09if%20%28%20conv%20%26%26%20s.throws%20%29%20%7B%0A%09%09%09%09%09%09response%20%3D%20conv%28%20response%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09response%20%3D%20conv%28%20response%20%29%3B%0A%09%09%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09%09%09%09%09%09return%20%7B%0A%09%09%09%09%09%09%09%09state%3A%20%22parsererror%22%2C%0A%09%09%09%09%09%09%09%09error%3A%20conv%20%3F%20e%20%3A%20%22No%20conversion%20from%20%22%20%2B%20prev%20%2B%20%22%20to%20%22%20%2B%20current%0A%09%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20%7B%20state%3A%20%22success%22%2C%20data%3A%20response%20%7D%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Counter%20for%20holding%20the%20number%20of%20active%20queries%0A%09active%3A%200%2C%0A%0A%09//%20Last-Modified%20header%20cache%20for%20next%20request%0A%09lastModified%3A%20%7B%7D%2C%0A%09etag%3A%20%7B%7D%2C%0A%0A%09ajaxSettings%3A%20%7B%0A%09%09url%3A%20location.href%2C%0A%09%09type%3A%20%22GET%22%2C%0A%09%09isLocal%3A%20rlocalProtocol.test%28%20location.protocol%20%29%2C%0A%09%09global%3A%20true%2C%0A%09%09processData%3A%20true%2C%0A%09%09async%3A%20true%2C%0A%09%09contentType%3A%20%22application/x-www-form-urlencoded%3B%20charset%3DUTF-8%22%2C%0A%0A%09%09/%2A%0A%09%09timeout%3A%200%2C%0A%09%09data%3A%20null%2C%0A%09%09dataType%3A%20null%2C%0A%09%09username%3A%20null%2C%0A%09%09password%3A%20null%2C%0A%09%09cache%3A%20null%2C%0A%09%09throws%3A%20false%2C%0A%09%09traditional%3A%20false%2C%0A%09%09headers%3A%20%7B%7D%2C%0A%09%09%2A/%0A%0A%09%09accepts%3A%20%7B%0A%09%09%09%22%2A%22%3A%20allTypes%2C%0A%09%09%09text%3A%20%22text/plain%22%2C%0A%09%09%09html%3A%20%22text/html%22%2C%0A%09%09%09xml%3A%20%22application/xml%2C%20text/xml%22%2C%0A%09%09%09json%3A%20%22application/json%2C%20text/javascript%22%0A%09%09%7D%2C%0A%0A%09%09contents%3A%20%7B%0A%09%09%09xml%3A%20/%5Cbxml%5Cb/%2C%0A%09%09%09html%3A%20/%5Cbhtml/%2C%0A%09%09%09json%3A%20/%5Cbjson%5Cb/%0A%09%09%7D%2C%0A%0A%09%09responseFields%3A%20%7B%0A%09%09%09xml%3A%20%22responseXML%22%2C%0A%09%09%09text%3A%20%22responseText%22%2C%0A%09%09%09json%3A%20%22responseJSON%22%0A%09%09%7D%2C%0A%0A%09%09//%20Data%20converters%0A%09%09//%20Keys%20separate%20source%20%28or%20catchall%20%22%2A%22%29%20and%20destination%20types%20with%20a%20single%20space%0A%09%09converters%3A%20%7B%0A%0A%09%09%09//%20Convert%20anything%20to%20text%0A%09%09%09%22%2A%20text%22%3A%20String%2C%0A%0A%09%09%09//%20Text%20to%20html%20%28true%20%3D%20no%20transformation%29%0A%09%09%09%22text%20html%22%3A%20true%2C%0A%0A%09%09%09//%20Evaluate%20text%20as%20a%20json%20expression%0A%09%09%09%22text%20json%22%3A%20JSON.parse%2C%0A%0A%09%09%09//%20Parse%20text%20as%20xml%0A%09%09%09%22text%20xml%22%3A%20jQuery.parseXML%0A%09%09%7D%2C%0A%0A%09%09//%20For%20options%20that%20shouldn%27t%20be%20deep%20extended%3A%0A%09%09//%20you%20can%20add%20your%20own%20custom%20options%20here%20if%0A%09%09//%20and%20when%20you%20create%20one%20that%20shouldn%27t%20be%0A%09%09//%20deep%20extended%20%28see%20ajaxExtend%29%0A%09%09flatOptions%3A%20%7B%0A%09%09%09url%3A%20true%2C%0A%09%09%09context%3A%20true%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Creates%20a%20full%20fledged%20settings%20object%20into%20target%0A%09//%20with%20both%20ajaxSettings%20and%20settings%20fields.%0A%09//%20If%20target%20is%20omitted%2C%20writes%20into%20ajaxSettings.%0A%09ajaxSetup%3A%20function%28%20target%2C%20settings%20%29%20%7B%0A%09%09return%20settings%20%3F%0A%0A%09%09%09//%20Building%20a%20settings%20object%0A%09%09%09ajaxExtend%28%20ajaxExtend%28%20target%2C%20jQuery.ajaxSettings%20%29%2C%20settings%20%29%20%3A%0A%0A%09%09%09//%20Extending%20ajaxSettings%0A%09%09%09ajaxExtend%28%20jQuery.ajaxSettings%2C%20target%20%29%3B%0A%09%7D%2C%0A%0A%09ajaxPrefilter%3A%20addToPrefiltersOrTransports%28%20prefilters%20%29%2C%0A%09ajaxTransport%3A%20addToPrefiltersOrTransports%28%20transports%20%29%2C%0A%0A%09//%20Main%20method%0A%09ajax%3A%20function%28%20url%2C%20options%20%29%20%7B%0A%0A%09%09//%20If%20url%20is%20an%20object%2C%20simulate%20pre-1.5%20signature%0A%09%09if%20%28%20typeof%20url%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09%09options%20%3D%20url%3B%0A%09%09%09url%20%3D%20undefined%3B%0A%09%09%7D%0A%0A%09%09//%20Force%20options%20to%20be%20an%20object%0A%09%09options%20%3D%20options%20%7C%7C%20%7B%7D%3B%0A%0A%09%09var%20transport%2C%0A%0A%09%09%09//%20URL%20without%20anti-cache%20param%0A%09%09%09cacheURL%2C%0A%0A%09%09%09//%20Response%20headers%0A%09%09%09responseHeadersString%2C%0A%09%09%09responseHeaders%2C%0A%0A%09%09%09//%20timeout%20handle%0A%09%09%09timeoutTimer%2C%0A%0A%09%09%09//%20Url%20cleanup%20var%0A%09%09%09urlAnchor%2C%0A%0A%09%09%09//%20Request%20state%20%28becomes%20false%20upon%20send%20and%20true%20upon%20completion%29%0A%09%09%09completed%2C%0A%0A%09%09%09//%20To%20know%20if%20global%20events%20are%20to%20be%20dispatched%0A%09%09%09fireGlobals%2C%0A%0A%09%09%09//%20Loop%20variable%0A%09%09%09i%2C%0A%0A%09%09%09//%20uncached%20part%20of%20the%20url%0A%09%09%09uncached%2C%0A%0A%09%09%09//%20Create%20the%20final%20options%20object%0A%09%09%09s%20%3D%20jQuery.ajaxSetup%28%20%7B%7D%2C%20options%20%29%2C%0A%0A%09%09%09//%20Callbacks%20context%0A%09%09%09callbackContext%20%3D%20s.context%20%7C%7C%20s%2C%0A%0A%09%09%09//%20Context%20for%20global%20events%20is%20callbackContext%20if%20it%20is%20a%20DOM%20node%20or%20jQuery%20collection%0A%09%09%09globalEventContext%20%3D%20s.context%20%26%26%0A%09%09%09%09%28%20callbackContext.nodeType%20%7C%7C%20callbackContext.jquery%20%29%20%3F%0A%09%09%09%09%09jQuery%28%20callbackContext%20%29%20%3A%0A%09%09%09%09%09jQuery.event%2C%0A%0A%09%09%09//%20Deferreds%0A%09%09%09deferred%20%3D%20jQuery.Deferred%28%29%2C%0A%09%09%09completeDeferred%20%3D%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%0A%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09statusCode%20%3D%20s.statusCode%20%7C%7C%20%7B%7D%2C%0A%0A%09%09%09//%20Headers%20%28they%20are%20sent%20all%20at%20once%29%0A%09%09%09requestHeaders%20%3D%20%7B%7D%2C%0A%09%09%09requestHeadersNames%20%3D%20%7B%7D%2C%0A%0A%09%09%09//%20Default%20abort%20message%0A%09%09%09strAbort%20%3D%20%22canceled%22%2C%0A%0A%09%09%09//%20Fake%20xhr%0A%09%09%09jqXHR%20%3D%20%7B%0A%09%09%09%09readyState%3A%200%2C%0A%0A%09%09%09%09//%20Builds%20headers%20hashtable%20if%20needed%0A%09%09%09%09getResponseHeader%3A%20function%28%20key%20%29%20%7B%0A%09%09%09%09%09var%20match%3B%0A%09%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%21responseHeaders%20%29%20%7B%0A%09%09%09%09%09%09%09responseHeaders%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%09%09while%20%28%20%28%20match%20%3D%20rheaders.exec%28%20responseHeadersString%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09responseHeaders%5B%20match%5B%201%20%5D.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%20%3D%0A%09%09%09%09%09%09%09%09%09%28%20responseHeaders%5B%20match%5B%201%20%5D.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%20%7C%7C%20%5B%5D%20%29%0A%09%09%09%09%09%09%09%09%09%09.concat%28%20match%5B%202%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09match%20%3D%20responseHeaders%5B%20key.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20match%20%3D%3D%20null%20%3F%20null%20%3A%20match.join%28%20%22%2C%20%22%20%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Raw%20string%0A%09%09%09%09getAllResponseHeaders%3A%20function%28%29%20%7B%0A%09%09%09%09%09return%20completed%20%3F%20responseHeadersString%20%3A%20null%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Caches%20the%20header%0A%09%09%09%09setRequestHeader%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09%09%09%09if%20%28%20completed%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09name%20%3D%20requestHeadersNames%5B%20name.toLowerCase%28%29%20%5D%20%3D%0A%09%09%09%09%09%09%09requestHeadersNames%5B%20name.toLowerCase%28%29%20%5D%20%7C%7C%20name%3B%0A%09%09%09%09%09%09requestHeaders%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Overrides%20response%20content-type%20header%0A%09%09%09%09overrideMimeType%3A%20function%28%20type%20%29%20%7B%0A%09%09%09%09%09if%20%28%20completed%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09s.mimeType%20%3D%20type%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09%09statusCode%3A%20function%28%20map%20%29%20%7B%0A%09%09%09%09%09var%20code%3B%0A%09%09%09%09%09if%20%28%20map%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Execute%20the%20appropriate%20callbacks%0A%09%09%09%09%09%09%09jqXHR.always%28%20map%5B%20jqXHR.status%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Lazy-add%20the%20new%20callbacks%20in%20a%20way%20that%20preserves%20old%20ones%0A%09%09%09%09%09%09%09for%20%28%20code%20in%20map%20%29%20%7B%0A%09%09%09%09%09%09%09%09statusCode%5B%20code%20%5D%20%3D%20%5B%20statusCode%5B%20code%20%5D%2C%20map%5B%20code%20%5D%20%5D%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Cancel%20the%20request%0A%09%09%09%09abort%3A%20function%28%20statusText%20%29%20%7B%0A%09%09%09%09%09var%20finalText%20%3D%20statusText%20%7C%7C%20strAbort%3B%0A%09%09%09%09%09if%20%28%20transport%20%29%20%7B%0A%09%09%09%09%09%09transport.abort%28%20finalText%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09done%28%200%2C%20finalText%20%29%3B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%0A%09%09//%20Attach%20deferreds%0A%09%09deferred.promise%28%20jqXHR%20%29%3B%0A%0A%09%09//%20Add%20protocol%20if%20not%20provided%20%28prefilters%20might%20expect%20it%29%0A%09%09//%20Handle%20falsy%20url%20in%20the%20settings%20object%20%28%2310093%3A%20consistency%20with%20old%20signature%29%0A%09%09//%20We%20also%20use%20the%20url%20parameter%20if%20available%0A%09%09s.url%20%3D%20%28%20%28%20url%20%7C%7C%20s.url%20%7C%7C%20location.href%20%29%20%2B%20%22%22%20%29%0A%09%09%09.replace%28%20rprotocol%2C%20location.protocol%20%2B%20%22//%22%20%29%3B%0A%0A%09%09//%20Alias%20method%20option%20to%20type%20as%20per%20ticket%20%2312004%0A%09%09s.type%20%3D%20options.method%20%7C%7C%20options.type%20%7C%7C%20s.method%20%7C%7C%20s.type%3B%0A%0A%09%09//%20Extract%20dataTypes%20list%0A%09%09s.dataTypes%20%3D%20%28%20s.dataType%20%7C%7C%20%22%2A%22%20%29.toLowerCase%28%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%0A%09%09//%20A%20cross-domain%20request%20is%20in%20order%20when%20the%20origin%20doesn%27t%20match%20the%20current%20origin.%0A%09%09if%20%28%20s.crossDomain%20%3D%3D%20null%20%29%20%7B%0A%09%09%09urlAnchor%20%3D%20document.createElement%28%20%22a%22%20%29%3B%0A%0A%09%09%09//%20Support%3A%20IE%20%3C%3D8%20-%2011%2C%20Edge%2012%20-%2015%0A%09%09%09//%20IE%20throws%20exception%20on%20accessing%20the%20href%20property%20if%20url%20is%20malformed%2C%0A%09%09%09//%20e.g.%20http%3A//example.com%3A80x/%0A%09%09%09try%20%7B%0A%09%09%09%09urlAnchor.href%20%3D%20s.url%3B%0A%0A%09%09%09%09//%20Support%3A%20IE%20%3C%3D8%20-%2011%20only%0A%09%09%09%09//%20Anchor%27s%20host%20property%20isn%27t%20correctly%20set%20when%20s.url%20is%20relative%0A%09%09%09%09urlAnchor.href%20%3D%20urlAnchor.href%3B%0A%09%09%09%09s.crossDomain%20%3D%20originAnchor.protocol%20%2B%20%22//%22%20%2B%20originAnchor.host%20%21%3D%3D%0A%09%09%09%09%09urlAnchor.protocol%20%2B%20%22//%22%20%2B%20urlAnchor.host%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20If%20there%20is%20an%20error%20parsing%20the%20URL%2C%20assume%20it%20is%20crossDomain%2C%0A%09%09%09%09//%20it%20can%20be%20rejected%20by%20the%20transport%20if%20it%20is%20invalid%0A%09%09%09%09s.crossDomain%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Convert%20data%20if%20not%20already%20a%20string%0A%09%09if%20%28%20s.data%20%26%26%20s.processData%20%26%26%20typeof%20s.data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09s.data%20%3D%20jQuery.param%28%20s.data%2C%20s.traditional%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20prefilters%0A%09%09inspectPrefiltersOrTransports%28%20prefilters%2C%20s%2C%20options%2C%20jqXHR%20%29%3B%0A%0A%09%09//%20If%20request%20was%20aborted%20inside%20a%20prefilter%2C%20stop%20there%0A%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09return%20jqXHR%3B%0A%09%09%7D%0A%0A%09%09//%20We%20can%20fire%20global%20events%20as%20of%20now%20if%20asked%20to%0A%09%09//%20Don%27t%20fire%20events%20if%20jQuery.event%20is%20undefined%20in%20an%20AMD-usage%20scenario%20%28%2315118%29%0A%09%09fireGlobals%20%3D%20jQuery.event%20%26%26%20s.global%3B%0A%0A%09%09//%20Watch%20for%20a%20new%20set%20of%20requests%0A%09%09if%20%28%20fireGlobals%20%26%26%20jQuery.active%2B%2B%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09jQuery.event.trigger%28%20%22ajaxStart%22%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Uppercase%20the%20type%0A%09%09s.type%20%3D%20s.type.toUpperCase%28%29%3B%0A%0A%09%09//%20Determine%20if%20request%20has%20content%0A%09%09s.hasContent%20%3D%20%21rnoContent.test%28%20s.type%20%29%3B%0A%0A%09%09//%20Save%20the%20URL%20in%20case%20we%27re%20toying%20with%20the%20If-Modified-Since%0A%09%09//%20and/or%20If-None-Match%20header%20later%20on%0A%09%09//%20Remove%20hash%20to%20simplify%20url%20manipulation%0A%09%09cacheURL%20%3D%20s.url.replace%28%20rhash%2C%20%22%22%20%29%3B%0A%0A%09%09//%20More%20options%20handling%20for%20requests%20with%20no%20content%0A%09%09if%20%28%20%21s.hasContent%20%29%20%7B%0A%0A%09%09%09//%20Remember%20the%20hash%20so%20we%20can%20put%20it%20back%0A%09%09%09uncached%20%3D%20s.url.slice%28%20cacheURL.length%20%29%3B%0A%0A%09%09%09//%20If%20data%20is%20available%20and%20should%20be%20processed%2C%20append%20data%20to%20url%0A%09%09%09if%20%28%20s.data%20%26%26%20%28%20s.processData%20%7C%7C%20typeof%20s.data%20%3D%3D%3D%20%22string%22%20%29%20%29%20%7B%0A%09%09%09%09cacheURL%20%2B%3D%20%28%20rquery.test%28%20cacheURL%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20s.data%3B%0A%0A%09%09%09%09//%20%239682%3A%20remove%20data%20so%20that%20it%27s%20not%20used%20in%20an%20eventual%20retry%0A%09%09%09%09delete%20s.data%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20or%20update%20anti-cache%20param%20if%20needed%0A%09%09%09if%20%28%20s.cache%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09cacheURL%20%3D%20cacheURL.replace%28%20rantiCache%2C%20%22%241%22%20%29%3B%0A%09%09%09%09uncached%20%3D%20%28%20rquery.test%28%20cacheURL%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20%22_%3D%22%20%2B%20%28%20nonce.guid%2B%2B%20%29%20%2B%0A%09%09%09%09%09uncached%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Put%20hash%20and%20anti-cache%20on%20the%20URL%20that%20will%20be%20requested%20%28gh-1732%29%0A%09%09%09s.url%20%3D%20cacheURL%20%2B%20uncached%3B%0A%0A%09%09//%20Change%20%27%2520%27%20to%20%27%2B%27%20if%20this%20is%20encoded%20form%20body%20content%20%28gh-2658%29%0A%09%09%7D%20else%20if%20%28%20s.data%20%26%26%20s.processData%20%26%26%0A%09%09%09%28%20s.contentType%20%7C%7C%20%22%22%20%29.indexOf%28%20%22application/x-www-form-urlencoded%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09s.data%20%3D%20s.data.replace%28%20r20%2C%20%22%2B%22%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20If-Modified-Since%20and/or%20If-None-Match%20header%2C%20if%20in%20ifModified%20mode.%0A%09%09if%20%28%20s.ifModified%20%29%20%7B%0A%09%09%09if%20%28%20jQuery.lastModified%5B%20cacheURL%20%5D%20%29%20%7B%0A%09%09%09%09jqXHR.setRequestHeader%28%20%22If-Modified-Since%22%2C%20jQuery.lastModified%5B%20cacheURL%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20jQuery.etag%5B%20cacheURL%20%5D%20%29%20%7B%0A%09%09%09%09jqXHR.setRequestHeader%28%20%22If-None-Match%22%2C%20jQuery.etag%5B%20cacheURL%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20correct%20header%2C%20if%20data%20is%20being%20sent%0A%09%09if%20%28%20s.data%20%26%26%20s.hasContent%20%26%26%20s.contentType%20%21%3D%3D%20false%20%7C%7C%20options.contentType%20%29%20%7B%0A%09%09%09jqXHR.setRequestHeader%28%20%22Content-Type%22%2C%20s.contentType%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20Accepts%20header%20for%20the%20server%2C%20depending%20on%20the%20dataType%0A%09%09jqXHR.setRequestHeader%28%0A%09%09%09%22Accept%22%2C%0A%09%09%09s.dataTypes%5B%200%20%5D%20%26%26%20s.accepts%5B%20s.dataTypes%5B%200%20%5D%20%5D%20%3F%0A%09%09%09%09s.accepts%5B%20s.dataTypes%5B%200%20%5D%20%5D%20%2B%0A%09%09%09%09%09%28%20s.dataTypes%5B%200%20%5D%20%21%3D%3D%20%22%2A%22%20%3F%20%22%2C%20%22%20%2B%20allTypes%20%2B%20%22%3B%20q%3D0.01%22%20%3A%20%22%22%20%29%20%3A%0A%09%09%09%09s.accepts%5B%20%22%2A%22%20%5D%0A%09%09%29%3B%0A%0A%09%09//%20Check%20for%20headers%20option%0A%09%09for%20%28%20i%20in%20s.headers%20%29%20%7B%0A%09%09%09jqXHR.setRequestHeader%28%20i%2C%20s.headers%5B%20i%20%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Allow%20custom%20headers/mimetypes%20and%20early%20abort%0A%09%09if%20%28%20s.beforeSend%20%26%26%0A%09%09%09%28%20s.beforeSend.call%28%20callbackContext%2C%20jqXHR%2C%20s%20%29%20%3D%3D%3D%20false%20%7C%7C%20completed%20%29%20%29%20%7B%0A%0A%09%09%09//%20Abort%20if%20not%20done%20already%20and%20return%0A%09%09%09return%20jqXHR.abort%28%29%3B%0A%09%09%7D%0A%0A%09%09//%20Aborting%20is%20no%20longer%20a%20cancellation%0A%09%09strAbort%20%3D%20%22abort%22%3B%0A%0A%09%09//%20Install%20callbacks%20on%20deferreds%0A%09%09completeDeferred.add%28%20s.complete%20%29%3B%0A%09%09jqXHR.done%28%20s.success%20%29%3B%0A%09%09jqXHR.fail%28%20s.error%20%29%3B%0A%0A%09%09//%20Get%20transport%0A%09%09transport%20%3D%20inspectPrefiltersOrTransports%28%20transports%2C%20s%2C%20options%2C%20jqXHR%20%29%3B%0A%0A%09%09//%20If%20no%20transport%2C%20we%20auto-abort%0A%09%09if%20%28%20%21transport%20%29%20%7B%0A%09%09%09done%28%20-1%2C%20%22No%20Transport%22%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09jqXHR.readyState%20%3D%201%3B%0A%0A%09%09%09//%20Send%20global%20event%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20%22ajaxSend%22%2C%20%5B%20jqXHR%2C%20s%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20request%20was%20aborted%20inside%20ajaxSend%2C%20stop%20there%0A%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09return%20jqXHR%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Timeout%0A%09%09%09if%20%28%20s.async%20%26%26%20s.timeout%20%3E%200%20%29%20%7B%0A%09%09%09%09timeoutTimer%20%3D%20window.setTimeout%28%20function%28%29%20%7B%0A%09%09%09%09%09jqXHR.abort%28%20%22timeout%22%20%29%3B%0A%09%09%09%09%7D%2C%20s.timeout%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09try%20%7B%0A%09%09%09%09completed%20%3D%20false%3B%0A%09%09%09%09transport.send%28%20requestHeaders%2C%20done%20%29%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20Rethrow%20post-completion%20exceptions%0A%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09%09throw%20e%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Propagate%20others%20as%20results%0A%09%09%09%09done%28%20-1%2C%20e%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Callback%20for%20when%20everything%20is%20done%0A%09%09function%20done%28%20status%2C%20nativeStatusText%2C%20responses%2C%20headers%20%29%20%7B%0A%09%09%09var%20isSuccess%2C%20success%2C%20error%2C%20response%2C%20modified%2C%0A%09%09%09%09statusText%20%3D%20nativeStatusText%3B%0A%0A%09%09%09//%20Ignore%20repeat%20invocations%0A%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09completed%20%3D%20true%3B%0A%0A%09%09%09//%20Clear%20timeout%20if%20it%20exists%0A%09%09%09if%20%28%20timeoutTimer%20%29%20%7B%0A%09%09%09%09window.clearTimeout%28%20timeoutTimer%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Dereference%20transport%20for%20early%20garbage%20collection%0A%09%09%09//%20%28no%20matter%20how%20long%20the%20jqXHR%20object%20will%20be%20used%29%0A%09%09%09transport%20%3D%20undefined%3B%0A%0A%09%09%09//%20Cache%20response%20headers%0A%09%09%09responseHeadersString%20%3D%20headers%20%7C%7C%20%22%22%3B%0A%0A%09%09%09//%20Set%20readyState%0A%09%09%09jqXHR.readyState%20%3D%20status%20%3E%200%20%3F%204%20%3A%200%3B%0A%0A%09%09%09//%20Determine%20if%20successful%0A%09%09%09isSuccess%20%3D%20status%20%3E%3D%20200%20%26%26%20status%20%3C%20300%20%7C%7C%20status%20%3D%3D%3D%20304%3B%0A%0A%09%09%09//%20Get%20response%20data%0A%09%09%09if%20%28%20responses%20%29%20%7B%0A%09%09%09%09response%20%3D%20ajaxHandleResponses%28%20s%2C%20jqXHR%2C%20responses%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Use%20a%20noop%20converter%20for%20missing%20script%0A%09%09%09if%20%28%20%21isSuccess%20%26%26%20jQuery.inArray%28%20%22script%22%2C%20s.dataTypes%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09s.converters%5B%20%22text%20script%22%20%5D%20%3D%20function%28%29%20%7B%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Convert%20no%20matter%20what%20%28that%20way%20responseXXX%20fields%20are%20always%20set%29%0A%09%09%09response%20%3D%20ajaxConvert%28%20s%2C%20response%2C%20jqXHR%2C%20isSuccess%20%29%3B%0A%0A%09%09%09//%20If%20successful%2C%20handle%20type%20chaining%0A%09%09%09if%20%28%20isSuccess%20%29%20%7B%0A%0A%09%09%09%09//%20Set%20the%20If-Modified-Since%20and/or%20If-None-Match%20header%2C%20if%20in%20ifModified%20mode.%0A%09%09%09%09if%20%28%20s.ifModified%20%29%20%7B%0A%09%09%09%09%09modified%20%3D%20jqXHR.getResponseHeader%28%20%22Last-Modified%22%20%29%3B%0A%09%09%09%09%09if%20%28%20modified%20%29%20%7B%0A%09%09%09%09%09%09jQuery.lastModified%5B%20cacheURL%20%5D%20%3D%20modified%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09modified%20%3D%20jqXHR.getResponseHeader%28%20%22etag%22%20%29%3B%0A%09%09%09%09%09if%20%28%20modified%20%29%20%7B%0A%09%09%09%09%09%09jQuery.etag%5B%20cacheURL%20%5D%20%3D%20modified%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20if%20no%20content%0A%09%09%09%09if%20%28%20status%20%3D%3D%3D%20204%20%7C%7C%20s.type%20%3D%3D%3D%20%22HEAD%22%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22nocontent%22%3B%0A%0A%09%09%09%09//%20if%20not%20modified%0A%09%09%09%09%7D%20else%20if%20%28%20status%20%3D%3D%3D%20304%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22notmodified%22%3B%0A%0A%09%09%09%09//%20If%20we%20have%20data%2C%20let%27s%20convert%20it%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09statusText%20%3D%20response.state%3B%0A%09%09%09%09%09success%20%3D%20response.data%3B%0A%09%09%09%09%09error%20%3D%20response.error%3B%0A%09%09%09%09%09isSuccess%20%3D%20%21error%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Extract%20error%20from%20statusText%20and%20normalize%20for%20non-aborts%0A%09%09%09%09error%20%3D%20statusText%3B%0A%09%09%09%09if%20%28%20status%20%7C%7C%20%21statusText%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22error%22%3B%0A%09%09%09%09%09if%20%28%20status%20%3C%200%20%29%20%7B%0A%09%09%09%09%09%09status%20%3D%200%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Set%20data%20for%20the%20fake%20xhr%20object%0A%09%09%09jqXHR.status%20%3D%20status%3B%0A%09%09%09jqXHR.statusText%20%3D%20%28%20nativeStatusText%20%7C%7C%20statusText%20%29%20%2B%20%22%22%3B%0A%0A%09%09%09//%20Success/Error%0A%09%09%09if%20%28%20isSuccess%20%29%20%7B%0A%09%09%09%09deferred.resolveWith%28%20callbackContext%2C%20%5B%20success%2C%20statusText%2C%20jqXHR%20%5D%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09deferred.rejectWith%28%20callbackContext%2C%20%5B%20jqXHR%2C%20statusText%2C%20error%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09jqXHR.statusCode%28%20statusCode%20%29%3B%0A%09%09%09statusCode%20%3D%20undefined%3B%0A%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20isSuccess%20%3F%20%22ajaxSuccess%22%20%3A%20%22ajaxError%22%2C%0A%09%09%09%09%09%5B%20jqXHR%2C%20s%2C%20isSuccess%20%3F%20success%20%3A%20error%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Complete%0A%09%09%09completeDeferred.fireWith%28%20callbackContext%2C%20%5B%20jqXHR%2C%20statusText%20%5D%20%29%3B%0A%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20%22ajaxComplete%22%2C%20%5B%20jqXHR%2C%20s%20%5D%20%29%3B%0A%0A%09%09%09%09//%20Handle%20the%20global%20AJAX%20counter%0A%09%09%09%09if%20%28%20%21%28%20--jQuery.active%20%29%20%29%20%7B%0A%09%09%09%09%09jQuery.event.trigger%28%20%22ajaxStop%22%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20jqXHR%3B%0A%09%7D%2C%0A%0A%09getJSON%3A%20function%28%20url%2C%20data%2C%20callback%20%29%20%7B%0A%09%09return%20jQuery.get%28%20url%2C%20data%2C%20callback%2C%20%22json%22%20%29%3B%0A%09%7D%2C%0A%0A%09getScript%3A%20function%28%20url%2C%20callback%20%29%20%7B%0A%09%09return%20jQuery.get%28%20url%2C%20undefined%2C%20callback%2C%20%22script%22%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22get%22%2C%20%22post%22%20%5D%2C%20function%28%20_i%2C%20method%20%29%20%7B%0A%09jQuery%5B%20method%20%5D%20%3D%20function%28%20url%2C%20data%2C%20callback%2C%20type%20%29%20%7B%0A%0A%09%09//%20Shift%20arguments%20if%20data%20argument%20was%20omitted%0A%09%09if%20%28%20isFunction%28%20data%20%29%20%29%20%7B%0A%09%09%09type%20%3D%20type%20%7C%7C%20callback%3B%0A%09%09%09callback%20%3D%20data%3B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%0A%0A%09%09//%20The%20url%20can%20be%20an%20options%20object%20%28which%20then%20must%20have%20.url%29%0A%09%09return%20jQuery.ajax%28%20jQuery.extend%28%20%7B%0A%09%09%09url%3A%20url%2C%0A%09%09%09type%3A%20method%2C%0A%09%09%09dataType%3A%20type%2C%0A%09%09%09data%3A%20data%2C%0A%09%09%09success%3A%20callback%0A%09%09%7D%2C%20jQuery.isPlainObject%28%20url%20%29%20%26%26%20url%20%29%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.ajaxPrefilter%28%20function%28%20s%20%29%20%7B%0A%09var%20i%3B%0A%09for%20%28%20i%20in%20s.headers%20%29%20%7B%0A%09%09if%20%28%20i.toLowerCase%28%29%20%3D%3D%3D%20%22content-type%22%20%29%20%7B%0A%09%09%09s.contentType%20%3D%20s.headers%5B%20i%20%5D%20%7C%7C%20%22%22%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery._evalUrl%20%3D%20function%28%20url%2C%20options%2C%20doc%20%29%20%7B%0A%09return%20jQuery.ajax%28%20%7B%0A%09%09url%3A%20url%2C%0A%0A%09%09//%20Make%20this%20explicit%2C%20since%20user%20can%20override%20this%20through%20ajaxSetup%20%28%2311264%29%0A%09%09type%3A%20%22GET%22%2C%0A%09%09dataType%3A%20%22script%22%2C%0A%09%09cache%3A%20true%2C%0A%09%09async%3A%20false%2C%0A%09%09global%3A%20false%2C%0A%0A%09%09//%20Only%20evaluate%20the%20response%20if%20it%20is%20successful%20%28gh-4126%29%0A%09%09//%20dataFilter%20is%20not%20invoked%20for%20failure%20responses%2C%20so%20using%20it%20instead%0A%09%09//%20of%20the%20default%20converter%20is%20kludgy%20but%20it%20works.%0A%09%09converters%3A%20%7B%0A%09%09%09%22text%20script%22%3A%20function%28%29%20%7B%7D%0A%09%09%7D%2C%0A%09%09dataFilter%3A%20function%28%20response%20%29%20%7B%0A%09%09%09jQuery.globalEval%28%20response%2C%20options%2C%20doc%20%29%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0AjQuery.fn.extend%28%20%7B%0A%09wrapAll%3A%20function%28%20html%20%29%20%7B%0A%09%09var%20wrap%3B%0A%0A%09%09if%20%28%20this%5B%200%20%5D%20%29%20%7B%0A%09%09%09if%20%28%20isFunction%28%20html%20%29%20%29%20%7B%0A%09%09%09%09html%20%3D%20html.call%28%20this%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20The%20elements%20to%20wrap%20the%20target%20around%0A%09%09%09wrap%20%3D%20jQuery%28%20html%2C%20this%5B%200%20%5D.ownerDocument%20%29.eq%28%200%20%29.clone%28%20true%20%29%3B%0A%0A%09%09%09if%20%28%20this%5B%200%20%5D.parentNode%20%29%20%7B%0A%09%09%09%09wrap.insertBefore%28%20this%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09wrap.map%28%20function%28%29%20%7B%0A%09%09%09%09var%20elem%20%3D%20this%3B%0A%0A%09%09%09%09while%20%28%20elem.firstElementChild%20%29%20%7B%0A%09%09%09%09%09elem%20%3D%20elem.firstElementChild%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20elem%3B%0A%09%09%09%7D%20%29.append%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09wrapInner%3A%20function%28%20html%20%29%20%7B%0A%09%09if%20%28%20isFunction%28%20html%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.wrapInner%28%20html.call%28%20this%2C%20i%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20self%20%3D%20jQuery%28%20this%20%29%2C%0A%09%09%09%09contents%20%3D%20self.contents%28%29%3B%0A%0A%09%09%09if%20%28%20contents.length%20%29%20%7B%0A%09%09%09%09contents.wrapAll%28%20html%20%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09self.append%28%20html%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09wrap%3A%20function%28%20html%20%29%20%7B%0A%09%09var%20htmlIsFunction%20%3D%20isFunction%28%20html%20%29%3B%0A%0A%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09jQuery%28%20this%20%29.wrapAll%28%20htmlIsFunction%20%3F%20html.call%28%20this%2C%20i%20%29%20%3A%20html%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09unwrap%3A%20function%28%20selector%20%29%20%7B%0A%09%09this.parent%28%20selector%20%29.not%28%20%22body%22%20%29.each%28%20function%28%29%20%7B%0A%09%09%09jQuery%28%20this%20%29.replaceWith%28%20this.childNodes%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%09return%20this%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery.expr.pseudos.hidden%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20%21jQuery.expr.pseudos.visible%28%20elem%20%29%3B%0A%7D%3B%0AjQuery.expr.pseudos.visible%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20%21%21%28%20elem.offsetWidth%20%7C%7C%20elem.offsetHeight%20%7C%7C%20elem.getClientRects%28%29.length%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.ajaxSettings.xhr%20%3D%20function%28%29%20%7B%0A%09try%20%7B%0A%09%09return%20new%20window.XMLHttpRequest%28%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%7D%3B%0A%0Avar%20xhrSuccessStatus%20%3D%20%7B%0A%0A%09%09//%20File%20protocol%20always%20yields%20status%20code%200%2C%20assume%20200%0A%09%090%3A%20200%2C%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09//%20%231450%3A%20sometimes%20IE%20returns%201223%20when%20it%20should%20be%20204%0A%09%091223%3A%20204%0A%09%7D%2C%0A%09xhrSupported%20%3D%20jQuery.ajaxSettings.xhr%28%29%3B%0A%0Asupport.cors%20%3D%20%21%21xhrSupported%20%26%26%20%28%20%22withCredentials%22%20in%20xhrSupported%20%29%3B%0Asupport.ajax%20%3D%20xhrSupported%20%3D%20%21%21xhrSupported%3B%0A%0AjQuery.ajaxTransport%28%20function%28%20options%20%29%20%7B%0A%09var%20callback%2C%20errorCallback%3B%0A%0A%09//%20Cross%20domain%20only%20allowed%20if%20supported%20through%20XMLHttpRequest%0A%09if%20%28%20support.cors%20%7C%7C%20xhrSupported%20%26%26%20%21options.crossDomain%20%29%20%7B%0A%09%09return%20%7B%0A%09%09%09send%3A%20function%28%20headers%2C%20complete%20%29%20%7B%0A%09%09%09%09var%20i%2C%0A%09%09%09%09%09xhr%20%3D%20options.xhr%28%29%3B%0A%0A%09%09%09%09xhr.open%28%0A%09%09%09%09%09options.type%2C%0A%09%09%09%09%09options.url%2C%0A%09%09%09%09%09options.async%2C%0A%09%09%09%09%09options.username%2C%0A%09%09%09%09%09options.password%0A%09%09%09%09%29%3B%0A%0A%09%09%09%09//%20Apply%20custom%20fields%20if%20provided%0A%09%09%09%09if%20%28%20options.xhrFields%20%29%20%7B%0A%09%09%09%09%09for%20%28%20i%20in%20options.xhrFields%20%29%20%7B%0A%09%09%09%09%09%09xhr%5B%20i%20%5D%20%3D%20options.xhrFields%5B%20i%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Override%20mime%20type%20if%20needed%0A%09%09%09%09if%20%28%20options.mimeType%20%26%26%20xhr.overrideMimeType%20%29%20%7B%0A%09%09%09%09%09xhr.overrideMimeType%28%20options.mimeType%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20X-Requested-With%20header%0A%09%09%09%09//%20For%20cross-domain%20requests%2C%20seeing%20as%20conditions%20for%20a%20preflight%20are%0A%09%09%09%09//%20akin%20to%20a%20jigsaw%20puzzle%2C%20we%20simply%20never%20set%20it%20to%20be%20sure.%0A%09%09%09%09//%20%28it%20can%20always%20be%20set%20on%20a%20per-request%20basis%20or%20even%20using%20ajaxSetup%29%0A%09%09%09%09//%20For%20same-domain%20requests%2C%20won%27t%20change%20header%20if%20already%20provided.%0A%09%09%09%09if%20%28%20%21options.crossDomain%20%26%26%20%21headers%5B%20%22X-Requested-With%22%20%5D%20%29%20%7B%0A%09%09%09%09%09headers%5B%20%22X-Requested-With%22%20%5D%20%3D%20%22XMLHttpRequest%22%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Set%20headers%0A%09%09%09%09for%20%28%20i%20in%20headers%20%29%20%7B%0A%09%09%09%09%09xhr.setRequestHeader%28%20i%2C%20headers%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Callback%0A%09%09%09%09callback%20%3D%20function%28%20type%20%29%20%7B%0A%09%09%09%09%09return%20function%28%29%20%7B%0A%09%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09%09callback%20%3D%20errorCallback%20%3D%20xhr.onload%20%3D%0A%09%09%09%09%09%09%09%09xhr.onerror%20%3D%20xhr.onabort%20%3D%20xhr.ontimeout%20%3D%0A%09%09%09%09%09%09%09%09%09xhr.onreadystatechange%20%3D%20null%3B%0A%0A%09%09%09%09%09%09%09if%20%28%20type%20%3D%3D%3D%20%22abort%22%20%29%20%7B%0A%09%09%09%09%09%09%09%09xhr.abort%28%29%3B%0A%09%09%09%09%09%09%09%7D%20else%20if%20%28%20type%20%3D%3D%3D%20%22error%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09%09%09%09//%20On%20a%20manual%20native%20abort%2C%20IE9%20throws%0A%09%09%09%09%09%09%09%09//%20errors%20on%20any%20property%20access%20that%20is%20not%20readyState%0A%09%09%09%09%09%09%09%09if%20%28%20typeof%20xhr.status%20%21%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09complete%28%200%2C%20%22error%22%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09%09complete%28%0A%0A%09%09%09%09%09%09%09%09%09%09//%20File%3A%20protocol%20always%20yields%20status%200%3B%20see%20%238605%2C%20%2314207%0A%09%09%09%09%09%09%09%09%09%09xhr.status%2C%0A%09%09%09%09%09%09%09%09%09%09xhr.statusText%0A%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09complete%28%0A%09%09%09%09%09%09%09%09%09xhrSuccessStatus%5B%20xhr.status%20%5D%20%7C%7C%20xhr.status%2C%0A%09%09%09%09%09%09%09%09%09xhr.statusText%2C%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09%09%09%09%09//%20IE9%20has%20no%20XHR2%20but%20throws%20on%20binary%20%28trac-11426%29%0A%09%09%09%09%09%09%09%09%09//%20For%20XHR2%20non-text%2C%20let%20the%20caller%20handle%20it%20%28gh-2498%29%0A%09%09%09%09%09%09%09%09%09%28%20xhr.responseType%20%7C%7C%20%22text%22%20%29%20%21%3D%3D%20%22text%22%20%20%7C%7C%0A%09%09%09%09%09%09%09%09%09typeof%20xhr.responseText%20%21%3D%3D%20%22string%22%20%3F%0A%09%09%09%09%09%09%09%09%09%09%7B%20binary%3A%20xhr.response%20%7D%20%3A%0A%09%09%09%09%09%09%09%09%09%09%7B%20text%3A%20xhr.responseText%20%7D%2C%0A%09%09%09%09%09%09%09%09%09xhr.getAllResponseHeaders%28%29%0A%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%7D%3B%0A%0A%09%09%09%09//%20Listen%20to%20events%0A%09%09%09%09xhr.onload%20%3D%20callback%28%29%3B%0A%09%09%09%09errorCallback%20%3D%20xhr.onerror%20%3D%20xhr.ontimeout%20%3D%20callback%28%20%22error%22%20%29%3B%0A%0A%09%09%09%09//%20Support%3A%20IE%209%20only%0A%09%09%09%09//%20Use%20onreadystatechange%20to%20replace%20onabort%0A%09%09%09%09//%20to%20handle%20uncaught%20aborts%0A%09%09%09%09if%20%28%20xhr.onabort%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09xhr.onabort%20%3D%20errorCallback%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09xhr.onreadystatechange%20%3D%20function%28%29%20%7B%0A%0A%09%09%09%09%09%09//%20Check%20readyState%20before%20timeout%20as%20it%20changes%0A%09%09%09%09%09%09if%20%28%20xhr.readyState%20%3D%3D%3D%204%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Allow%20onerror%20to%20be%20called%20first%2C%0A%09%09%09%09%09%09%09//%20but%20that%20will%20not%20handle%20a%20native%20abort%0A%09%09%09%09%09%09%09//%20Also%2C%20save%20errorCallback%20to%20a%20variable%0A%09%09%09%09%09%09%09//%20as%20xhr.onerror%20cannot%20be%20accessed%0A%09%09%09%09%09%09%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09errorCallback%28%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Create%20the%20abort%20callback%0A%09%09%09%09callback%20%3D%20callback%28%20%22abort%22%20%29%3B%0A%0A%09%09%09%09try%20%7B%0A%0A%09%09%09%09%09//%20Do%20send%20the%20request%20%28this%20may%20raise%20an%20exception%29%0A%09%09%09%09%09xhr.send%28%20options.hasContent%20%26%26%20options.data%20%7C%7C%20null%20%29%3B%0A%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09%09//%20%2314683%3A%20Only%20rethrow%20if%20this%20hasn%27t%20been%20notified%20as%20an%20error%20yet%0A%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09throw%20e%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%0A%09%09%09abort%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09callback%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Prevent%20auto-execution%20of%20scripts%20when%20no%20explicit%20dataType%20was%20provided%20%28See%20gh-2432%29%0AjQuery.ajaxPrefilter%28%20function%28%20s%20%29%20%7B%0A%09if%20%28%20s.crossDomain%20%29%20%7B%0A%09%09s.contents.script%20%3D%20false%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Install%20script%20dataType%0AjQuery.ajaxSetup%28%20%7B%0A%09accepts%3A%20%7B%0A%09%09script%3A%20%22text/javascript%2C%20application/javascript%2C%20%22%20%2B%0A%09%09%09%22application/ecmascript%2C%20application/x-ecmascript%22%0A%09%7D%2C%0A%09contents%3A%20%7B%0A%09%09script%3A%20/%5Cb%28%3F%3Ajava%7Cecma%29script%5Cb/%0A%09%7D%2C%0A%09converters%3A%20%7B%0A%09%09%22text%20script%22%3A%20function%28%20text%20%29%20%7B%0A%09%09%09jQuery.globalEval%28%20text%20%29%3B%0A%09%09%09return%20text%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Handle%20cache%27s%20special%20case%20and%20crossDomain%0AjQuery.ajaxPrefilter%28%20%22script%22%2C%20function%28%20s%20%29%20%7B%0A%09if%20%28%20s.cache%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09s.cache%20%3D%20false%3B%0A%09%7D%0A%09if%20%28%20s.crossDomain%20%29%20%7B%0A%09%09s.type%20%3D%20%22GET%22%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Bind%20script%20tag%20hack%20transport%0AjQuery.ajaxTransport%28%20%22script%22%2C%20function%28%20s%20%29%20%7B%0A%0A%09//%20This%20transport%20only%20deals%20with%20cross%20domain%20or%20forced-by-attrs%20requests%0A%09if%20%28%20s.crossDomain%20%7C%7C%20s.scriptAttrs%20%29%20%7B%0A%09%09var%20script%2C%20callback%3B%0A%09%09return%20%7B%0A%09%09%09send%3A%20function%28%20_%2C%20complete%20%29%20%7B%0A%09%09%09%09script%20%3D%20jQuery%28%20%22%3Cscript%3E%22%20%29%0A%09%09%09%09%09.attr%28%20s.scriptAttrs%20%7C%7C%20%7B%7D%20%29%0A%09%09%09%09%09.prop%28%20%7B%20charset%3A%20s.scriptCharset%2C%20src%3A%20s.url%20%7D%20%29%0A%09%09%09%09%09.on%28%20%22load%20error%22%2C%20callback%20%3D%20function%28%20evt%20%29%20%7B%0A%09%09%09%09%09%09script.remove%28%29%3B%0A%09%09%09%09%09%09callback%20%3D%20null%3B%0A%09%09%09%09%09%09if%20%28%20evt%20%29%20%7B%0A%09%09%09%09%09%09%09complete%28%20evt.type%20%3D%3D%3D%20%22error%22%20%3F%20404%20%3A%20200%2C%20evt.type%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%20%29%3B%0A%0A%09%09%09%09//%20Use%20native%20DOM%20manipulation%20to%20avoid%20our%20domManip%20AJAX%20trickery%0A%09%09%09%09document.head.appendChild%28%20script%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%2C%0A%09%09%09abort%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09callback%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20oldCallbacks%20%3D%20%5B%5D%2C%0A%09rjsonp%20%3D%20/%28%3D%29%5C%3F%28%3F%3D%26%7C%24%29%7C%5C%3F%5C%3F/%3B%0A%0A//%20Default%20jsonp%20settings%0AjQuery.ajaxSetup%28%20%7B%0A%09jsonp%3A%20%22callback%22%2C%0A%09jsonpCallback%3A%20function%28%29%20%7B%0A%09%09var%20callback%20%3D%20oldCallbacks.pop%28%29%20%7C%7C%20%28%20jQuery.expando%20%2B%20%22_%22%20%2B%20%28%20nonce.guid%2B%2B%20%29%20%29%3B%0A%09%09this%5B%20callback%20%5D%20%3D%20true%3B%0A%09%09return%20callback%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Detect%2C%20normalize%20options%20and%20install%20callbacks%20for%20jsonp%20requests%0AjQuery.ajaxPrefilter%28%20%22json%20jsonp%22%2C%20function%28%20s%2C%20originalSettings%2C%20jqXHR%20%29%20%7B%0A%0A%09var%20callbackName%2C%20overwritten%2C%20responseContainer%2C%0A%09%09jsonProp%20%3D%20s.jsonp%20%21%3D%3D%20false%20%26%26%20%28%20rjsonp.test%28%20s.url%20%29%20%3F%0A%09%09%09%22url%22%20%3A%0A%09%09%09typeof%20s.data%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%28%20s.contentType%20%7C%7C%20%22%22%20%29%0A%09%09%09%09%09.indexOf%28%20%22application/x-www-form-urlencoded%22%20%29%20%3D%3D%3D%200%20%26%26%0A%09%09%09%09rjsonp.test%28%20s.data%20%29%20%26%26%20%22data%22%0A%09%09%29%3B%0A%0A%09//%20Handle%20iff%20the%20expected%20data%20type%20is%20%22jsonp%22%20or%20we%20have%20a%20parameter%20to%20set%0A%09if%20%28%20jsonProp%20%7C%7C%20s.dataTypes%5B%200%20%5D%20%3D%3D%3D%20%22jsonp%22%20%29%20%7B%0A%0A%09%09//%20Get%20callback%20name%2C%20remembering%20preexisting%20value%20associated%20with%20it%0A%09%09callbackName%20%3D%20s.jsonpCallback%20%3D%20isFunction%28%20s.jsonpCallback%20%29%20%3F%0A%09%09%09s.jsonpCallback%28%29%20%3A%0A%09%09%09s.jsonpCallback%3B%0A%0A%09%09//%20Insert%20callback%20into%20url%20or%20form%20data%0A%09%09if%20%28%20jsonProp%20%29%20%7B%0A%09%09%09s%5B%20jsonProp%20%5D%20%3D%20s%5B%20jsonProp%20%5D.replace%28%20rjsonp%2C%20%22%241%22%20%2B%20callbackName%20%29%3B%0A%09%09%7D%20else%20if%20%28%20s.jsonp%20%21%3D%3D%20false%20%29%20%7B%0A%09%09%09s.url%20%2B%3D%20%28%20rquery.test%28%20s.url%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20s.jsonp%20%2B%20%22%3D%22%20%2B%20callbackName%3B%0A%09%09%7D%0A%0A%09%09//%20Use%20data%20converter%20to%20retrieve%20json%20after%20script%20execution%0A%09%09s.converters%5B%20%22script%20json%22%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09if%20%28%20%21responseContainer%20%29%20%7B%0A%09%09%09%09jQuery.error%28%20callbackName%20%2B%20%22%20was%20not%20called%22%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20responseContainer%5B%200%20%5D%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Force%20json%20dataType%0A%09%09s.dataTypes%5B%200%20%5D%20%3D%20%22json%22%3B%0A%0A%09%09//%20Install%20callback%0A%09%09overwritten%20%3D%20window%5B%20callbackName%20%5D%3B%0A%09%09window%5B%20callbackName%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09responseContainer%20%3D%20arguments%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Clean-up%20function%20%28fires%20after%20converters%29%0A%09%09jqXHR.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20If%20previous%20value%20didn%27t%20exist%20-%20remove%20it%0A%09%09%09if%20%28%20overwritten%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09jQuery%28%20window%20%29.removeProp%28%20callbackName%20%29%3B%0A%0A%09%09%09//%20Otherwise%20restore%20preexisting%20value%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09window%5B%20callbackName%20%5D%20%3D%20overwritten%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Save%20back%20as%20free%0A%09%09%09if%20%28%20s%5B%20callbackName%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Make%20sure%20that%20re-using%20the%20options%20doesn%27t%20screw%20things%20around%0A%09%09%09%09s.jsonpCallback%20%3D%20originalSettings.jsonpCallback%3B%0A%0A%09%09%09%09//%20Save%20the%20callback%20name%20for%20future%20use%0A%09%09%09%09oldCallbacks.push%28%20callbackName%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Call%20if%20it%20was%20a%20function%20and%20we%20have%20a%20response%0A%09%09%09if%20%28%20responseContainer%20%26%26%20isFunction%28%20overwritten%20%29%20%29%20%7B%0A%09%09%09%09overwritten%28%20responseContainer%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09responseContainer%20%3D%20overwritten%20%3D%20undefined%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09//%20Delegate%20to%20script%0A%09%09return%20%22script%22%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Support%3A%20Safari%208%20only%0A//%20In%20Safari%208%20documents%20created%20via%20document.implementation.createHTMLDocument%0A//%20collapse%20sibling%20forms%3A%20the%20second%20one%20becomes%20a%20child%20of%20the%20first%20one.%0A//%20Because%20of%20that%2C%20this%20security%20measure%20has%20to%20be%20disabled%20in%20Safari%208.%0A//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D137337%0Asupport.createHTMLDocument%20%3D%20%28%20function%28%29%20%7B%0A%09var%20body%20%3D%20document.implementation.createHTMLDocument%28%20%22%22%20%29.body%3B%0A%09body.innerHTML%20%3D%20%22%3Cform%3E%3C/form%3E%3Cform%3E%3C/form%3E%22%3B%0A%09return%20body.childNodes.length%20%3D%3D%3D%202%3B%0A%7D%20%29%28%29%3B%0A%0A%0A//%20Argument%20%22data%22%20should%20be%20string%20of%20html%0A//%20context%20%28optional%29%3A%20If%20specified%2C%20the%20fragment%20will%20be%20created%20in%20this%20context%2C%0A//%20defaults%20to%20document%0A//%20keepScripts%20%28optional%29%3A%20If%20true%2C%20will%20include%20scripts%20passed%20in%20the%20html%20string%0AjQuery.parseHTML%20%3D%20function%28%20data%2C%20context%2C%20keepScripts%20%29%20%7B%0A%09if%20%28%20typeof%20data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20%5B%5D%3B%0A%09%7D%0A%09if%20%28%20typeof%20context%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09keepScripts%20%3D%20context%3B%0A%09%09context%20%3D%20false%3B%0A%09%7D%0A%0A%09var%20base%2C%20parsed%2C%20scripts%3B%0A%0A%09if%20%28%20%21context%20%29%20%7B%0A%0A%09%09//%20Stop%20scripts%20or%20inline%20event%20handlers%20from%20being%20executed%20immediately%0A%09%09//%20by%20using%20document.implementation%0A%09%09if%20%28%20support.createHTMLDocument%20%29%20%7B%0A%09%09%09context%20%3D%20document.implementation.createHTMLDocument%28%20%22%22%20%29%3B%0A%0A%09%09%09//%20Set%20the%20base%20href%20for%20the%20created%20document%0A%09%09%09//%20so%20any%20parsed%20elements%20with%20URLs%0A%09%09%09//%20are%20based%20on%20the%20document%27s%20URL%20%28gh-2965%29%0A%09%09%09base%20%3D%20context.createElement%28%20%22base%22%20%29%3B%0A%09%09%09base.href%20%3D%20document.location.href%3B%0A%09%09%09context.head.appendChild%28%20base%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09context%20%3D%20document%3B%0A%09%09%7D%0A%09%7D%0A%0A%09parsed%20%3D%20rsingleTag.exec%28%20data%20%29%3B%0A%09scripts%20%3D%20%21keepScripts%20%26%26%20%5B%5D%3B%0A%0A%09//%20Single%20tag%0A%09if%20%28%20parsed%20%29%20%7B%0A%09%09return%20%5B%20context.createElement%28%20parsed%5B%201%20%5D%20%29%20%5D%3B%0A%09%7D%0A%0A%09parsed%20%3D%20buildFragment%28%20%5B%20data%20%5D%2C%20context%2C%20scripts%20%29%3B%0A%0A%09if%20%28%20scripts%20%26%26%20scripts.length%20%29%20%7B%0A%09%09jQuery%28%20scripts%20%29.remove%28%29%3B%0A%09%7D%0A%0A%09return%20jQuery.merge%28%20%5B%5D%2C%20parsed.childNodes%20%29%3B%0A%7D%3B%0A%0A%0A/%2A%2A%0A%20%2A%20Load%20a%20url%20into%20a%20page%0A%20%2A/%0AjQuery.fn.load%20%3D%20function%28%20url%2C%20params%2C%20callback%20%29%20%7B%0A%09var%20selector%2C%20type%2C%20response%2C%0A%09%09self%20%3D%20this%2C%0A%09%09off%20%3D%20url.indexOf%28%20%22%20%22%20%29%3B%0A%0A%09if%20%28%20off%20%3E%20-1%20%29%20%7B%0A%09%09selector%20%3D%20stripAndCollapse%28%20url.slice%28%20off%20%29%20%29%3B%0A%09%09url%20%3D%20url.slice%28%200%2C%20off%20%29%3B%0A%09%7D%0A%0A%09//%20If%20it%27s%20a%20function%0A%09if%20%28%20isFunction%28%20params%20%29%20%29%20%7B%0A%0A%09%09//%20We%20assume%20that%20it%27s%20the%20callback%0A%09%09callback%20%3D%20params%3B%0A%09%09params%20%3D%20undefined%3B%0A%0A%09//%20Otherwise%2C%20build%20a%20param%20string%0A%09%7D%20else%20if%20%28%20params%20%26%26%20typeof%20params%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09type%20%3D%20%22POST%22%3B%0A%09%7D%0A%0A%09//%20If%20we%20have%20elements%20to%20modify%2C%20make%20the%20request%0A%09if%20%28%20self.length%20%3E%200%20%29%20%7B%0A%09%09jQuery.ajax%28%20%7B%0A%09%09%09url%3A%20url%2C%0A%0A%09%09%09//%20If%20%22type%22%20variable%20is%20undefined%2C%20then%20%22GET%22%20method%20will%20be%20used.%0A%09%09%09//%20Make%20value%20of%20this%20field%20explicit%20since%0A%09%09%09//%20user%20can%20override%20it%20through%20ajaxSetup%20method%0A%09%09%09type%3A%20type%20%7C%7C%20%22GET%22%2C%0A%09%09%09dataType%3A%20%22html%22%2C%0A%09%09%09data%3A%20params%0A%09%09%7D%20%29.done%28%20function%28%20responseText%20%29%20%7B%0A%0A%09%09%09//%20Save%20response%20for%20use%20in%20complete%20callback%0A%09%09%09response%20%3D%20arguments%3B%0A%0A%09%09%09self.html%28%20selector%20%3F%0A%0A%09%09%09%09//%20If%20a%20selector%20was%20specified%2C%20locate%20the%20right%20elements%20in%20a%20dummy%20div%0A%09%09%09%09//%20Exclude%20scripts%20to%20avoid%20IE%20%27Permission%20Denied%27%20errors%0A%09%09%09%09jQuery%28%20%22%3Cdiv%3E%22%20%29.append%28%20jQuery.parseHTML%28%20responseText%20%29%20%29.find%28%20selector%20%29%20%3A%0A%0A%09%09%09%09//%20Otherwise%20use%20the%20full%20result%0A%09%09%09%09responseText%20%29%3B%0A%0A%09%09//%20If%20the%20request%20succeeds%2C%20this%20function%20gets%20%22data%22%2C%20%22status%22%2C%20%22jqXHR%22%0A%09%09//%20but%20they%20are%20ignored%20because%20response%20was%20set%20above.%0A%09%09//%20If%20it%20fails%2C%20this%20function%20gets%20%22jqXHR%22%2C%20%22status%22%2C%20%22error%22%0A%09%09%7D%20%29.always%28%20callback%20%26%26%20function%28%20jqXHR%2C%20status%20%29%20%7B%0A%09%09%09self.each%28%20function%28%29%20%7B%0A%09%09%09%09callback.apply%28%20this%2C%20response%20%7C%7C%20%5B%20jqXHR.responseText%2C%20status%2C%20jqXHR%20%5D%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09return%20this%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.expr.pseudos.animated%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20jQuery.grep%28%20jQuery.timers%2C%20function%28%20fn%20%29%20%7B%0A%09%09return%20elem%20%3D%3D%3D%20fn.elem%3B%0A%09%7D%20%29.length%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.offset%20%3D%20%7B%0A%09setOffset%3A%20function%28%20elem%2C%20options%2C%20i%20%29%20%7B%0A%09%09var%20curPosition%2C%20curLeft%2C%20curCSSTop%2C%20curTop%2C%20curOffset%2C%20curCSSLeft%2C%20calculatePosition%2C%0A%09%09%09position%20%3D%20jQuery.css%28%20elem%2C%20%22position%22%20%29%2C%0A%09%09%09curElem%20%3D%20jQuery%28%20elem%20%29%2C%0A%09%09%09props%20%3D%20%7B%7D%3B%0A%0A%09%09//%20Set%20position%20first%2C%20in-case%20top/left%20are%20set%20even%20on%20static%20elem%0A%09%09if%20%28%20position%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%09%09%09elem.style.position%20%3D%20%22relative%22%3B%0A%09%09%7D%0A%0A%09%09curOffset%20%3D%20curElem.offset%28%29%3B%0A%09%09curCSSTop%20%3D%20jQuery.css%28%20elem%2C%20%22top%22%20%29%3B%0A%09%09curCSSLeft%20%3D%20jQuery.css%28%20elem%2C%20%22left%22%20%29%3B%0A%09%09calculatePosition%20%3D%20%28%20position%20%3D%3D%3D%20%22absolute%22%20%7C%7C%20position%20%3D%3D%3D%20%22fixed%22%20%29%20%26%26%0A%09%09%09%28%20curCSSTop%20%2B%20curCSSLeft%20%29.indexOf%28%20%22auto%22%20%29%20%3E%20-1%3B%0A%0A%09%09//%20Need%20to%20be%20able%20to%20calculate%20position%20if%20either%0A%09%09//%20top%20or%20left%20is%20auto%20and%20position%20is%20either%20absolute%20or%20fixed%0A%09%09if%20%28%20calculatePosition%20%29%20%7B%0A%09%09%09curPosition%20%3D%20curElem.position%28%29%3B%0A%09%09%09curTop%20%3D%20curPosition.top%3B%0A%09%09%09curLeft%20%3D%20curPosition.left%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09curTop%20%3D%20parseFloat%28%20curCSSTop%20%29%20%7C%7C%200%3B%0A%09%09%09curLeft%20%3D%20parseFloat%28%20curCSSLeft%20%29%20%7C%7C%200%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20isFunction%28%20options%20%29%20%29%20%7B%0A%0A%09%09%09//%20Use%20jQuery.extend%20here%20to%20allow%20modification%20of%20coordinates%20argument%20%28gh-1848%29%0A%09%09%09options%20%3D%20options.call%28%20elem%2C%20i%2C%20jQuery.extend%28%20%7B%7D%2C%20curOffset%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20options.top%20%21%3D%20null%20%29%20%7B%0A%09%09%09props.top%20%3D%20%28%20options.top%20-%20curOffset.top%20%29%20%2B%20curTop%3B%0A%09%09%7D%0A%09%09if%20%28%20options.left%20%21%3D%20null%20%29%20%7B%0A%09%09%09props.left%20%3D%20%28%20options.left%20-%20curOffset.left%20%29%20%2B%20curLeft%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%22using%22%20in%20options%20%29%20%7B%0A%09%09%09options.using.call%28%20elem%2C%20props%20%29%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28%20typeof%20props.top%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09props.top%20%2B%3D%20%22px%22%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20typeof%20props.left%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09props.left%20%2B%3D%20%22px%22%3B%0A%09%09%09%7D%0A%09%09%09curElem.css%28%20props%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09//%20offset%28%29%20relates%20an%20element%27s%20border%20box%20to%20the%20document%20origin%0A%09offset%3A%20function%28%20options%20%29%20%7B%0A%0A%09%09//%20Preserve%20chaining%20for%20setter%0A%09%09if%20%28%20arguments.length%20%29%20%7B%0A%09%09%09return%20options%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09%09this%20%3A%0A%09%09%09%09this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09%09jQuery.offset.setOffset%28%20this%2C%20options%2C%20i%20%29%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09var%20rect%2C%20win%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%3B%0A%0A%09%09if%20%28%20%21elem%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20zeros%20for%20disconnected%20and%20hidden%20%28display%3A%20none%29%20elements%20%28gh-2310%29%0A%09%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09%09//%20Running%20getBoundingClientRect%20on%20a%0A%09%09//%20disconnected%20node%20in%20IE%20throws%20an%20error%0A%09%09if%20%28%20%21elem.getClientRects%28%29.length%20%29%20%7B%0A%09%09%09return%20%7B%20top%3A%200%2C%20left%3A%200%20%7D%3B%0A%09%09%7D%0A%0A%09%09//%20Get%20document-relative%20position%20by%20adding%20viewport%20scroll%20to%20viewport-relative%20gBCR%0A%09%09rect%20%3D%20elem.getBoundingClientRect%28%29%3B%0A%09%09win%20%3D%20elem.ownerDocument.defaultView%3B%0A%09%09return%20%7B%0A%09%09%09top%3A%20rect.top%20%2B%20win.pageYOffset%2C%0A%09%09%09left%3A%20rect.left%20%2B%20win.pageXOffset%0A%09%09%7D%3B%0A%09%7D%2C%0A%0A%09//%20position%28%29%20relates%20an%20element%27s%20margin%20box%20to%20its%20offset%20parent%27s%20padding%20box%0A%09//%20This%20corresponds%20to%20the%20behavior%20of%20CSS%20absolute%20positioning%0A%09position%3A%20function%28%29%20%7B%0A%09%09if%20%28%20%21this%5B%200%20%5D%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09var%20offsetParent%2C%20offset%2C%20doc%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%2C%0A%09%09%09parentOffset%20%3D%20%7B%20top%3A%200%2C%20left%3A%200%20%7D%3B%0A%0A%09%09//%20position%3Afixed%20elements%20are%20offset%20from%20the%20viewport%2C%20which%20itself%20always%20has%20zero%20offset%0A%09%09if%20%28%20jQuery.css%28%20elem%2C%20%22position%22%20%29%20%3D%3D%3D%20%22fixed%22%20%29%20%7B%0A%0A%09%09%09//%20Assume%20position%3Afixed%20implies%20availability%20of%20getBoundingClientRect%0A%09%09%09offset%20%3D%20elem.getBoundingClientRect%28%29%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09offset%20%3D%20this.offset%28%29%3B%0A%0A%09%09%09//%20Account%20for%20the%20%2Areal%2A%20offset%20parent%2C%20which%20can%20be%20the%20document%20or%20its%20root%20element%0A%09%09%09//%20when%20a%20statically%20positioned%20element%20is%20identified%0A%09%09%09doc%20%3D%20elem.ownerDocument%3B%0A%09%09%09offsetParent%20%3D%20elem.offsetParent%20%7C%7C%20doc.documentElement%3B%0A%09%09%09while%20%28%20offsetParent%20%26%26%0A%09%09%09%09%28%20offsetParent%20%3D%3D%3D%20doc.body%20%7C%7C%20offsetParent%20%3D%3D%3D%20doc.documentElement%20%29%20%26%26%0A%09%09%09%09jQuery.css%28%20offsetParent%2C%20%22position%22%20%29%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%0A%09%09%09%09offsetParent%20%3D%20offsetParent.parentNode%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20offsetParent%20%26%26%20offsetParent%20%21%3D%3D%20elem%20%26%26%20offsetParent.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09//%20Incorporate%20borders%20into%20its%20offset%2C%20since%20they%20are%20outside%20its%20content%20origin%0A%09%09%09%09parentOffset%20%3D%20jQuery%28%20offsetParent%20%29.offset%28%29%3B%0A%09%09%09%09parentOffset.top%20%2B%3D%20jQuery.css%28%20offsetParent%2C%20%22borderTopWidth%22%2C%20true%20%29%3B%0A%09%09%09%09parentOffset.left%20%2B%3D%20jQuery.css%28%20offsetParent%2C%20%22borderLeftWidth%22%2C%20true%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Subtract%20parent%20offsets%20and%20element%20margins%0A%09%09return%20%7B%0A%09%09%09top%3A%20offset.top%20-%20parentOffset.top%20-%20jQuery.css%28%20elem%2C%20%22marginTop%22%2C%20true%20%29%2C%0A%09%09%09left%3A%20offset.left%20-%20parentOffset.left%20-%20jQuery.css%28%20elem%2C%20%22marginLeft%22%2C%20true%20%29%0A%09%09%7D%3B%0A%09%7D%2C%0A%0A%09//%20This%20method%20will%20return%20documentElement%20in%20the%20following%20cases%3A%0A%09//%201%29%20For%20the%20element%20inside%20the%20iframe%20without%20offsetParent%2C%20this%20method%20will%20return%0A%09//%20%20%20%20documentElement%20of%20the%20parent%20window%0A%09//%202%29%20For%20the%20hidden%20or%20detached%20element%0A%09//%203%29%20For%20body%20or%20html%20element%2C%20i.e.%20in%20case%20of%20the%20html%20node%20-%20it%20will%20return%20itself%0A%09//%0A%09//%20but%20those%20exceptions%20were%20never%20presented%20as%20a%20real%20life%20use-cases%0A%09//%20and%20might%20be%20considered%20as%20more%20preferable%20results.%0A%09//%0A%09//%20This%20logic%2C%20however%2C%20is%20not%20guaranteed%20and%20can%20change%20at%20any%20point%20in%20the%20future%0A%09offsetParent%3A%20function%28%29%20%7B%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%09%09%09var%20offsetParent%20%3D%20this.offsetParent%3B%0A%0A%09%09%09while%20%28%20offsetParent%20%26%26%20jQuery.css%28%20offsetParent%2C%20%22position%22%20%29%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%09%09%09%09offsetParent%20%3D%20offsetParent.offsetParent%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20offsetParent%20%7C%7C%20documentElement%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Create%20scrollLeft%20and%20scrollTop%20methods%0AjQuery.each%28%20%7B%20scrollLeft%3A%20%22pageXOffset%22%2C%20scrollTop%3A%20%22pageYOffset%22%20%7D%2C%20function%28%20method%2C%20prop%20%29%20%7B%0A%09var%20top%20%3D%20%22pageYOffset%22%20%3D%3D%3D%20prop%3B%0A%0A%09jQuery.fn%5B%20method%20%5D%20%3D%20function%28%20val%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20method%2C%20val%20%29%20%7B%0A%0A%09%09%09//%20Coalesce%20documents%20and%20windows%0A%09%09%09var%20win%3B%0A%09%09%09if%20%28%20isWindow%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09win%20%3D%20elem%3B%0A%09%09%09%7D%20else%20if%20%28%20elem.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09win%20%3D%20elem.defaultView%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20val%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20win%20%3F%20win%5B%20prop%20%5D%20%3A%20elem%5B%20method%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20win%20%29%20%7B%0A%09%09%09%09win.scrollTo%28%0A%09%09%09%09%09%21top%20%3F%20val%20%3A%20win.pageXOffset%2C%0A%09%09%09%09%09top%20%3F%20val%20%3A%20win.pageYOffset%0A%09%09%09%09%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09elem%5B%20method%20%5D%20%3D%20val%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20method%2C%20val%2C%20arguments.length%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Support%3A%20Safari%20%3C%3D7%20-%209.1%2C%20Chrome%20%3C%3D37%20-%2049%0A//%20Add%20the%20top/left%20cssHooks%20using%20jQuery.fn.position%0A//%20Webkit%20bug%3A%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D29084%0A//%20Blink%20bug%3A%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D589347%0A//%20getComputedStyle%20returns%20percent%20when%20specified%20for%20top/left/bottom/right%3B%0A//%20rather%20than%20make%20the%20css%20module%20depend%20on%20the%20offset%20module%2C%20just%20check%20for%20it%20here%0AjQuery.each%28%20%5B%20%22top%22%2C%20%22left%22%20%5D%2C%20function%28%20_i%2C%20prop%20%29%20%7B%0A%09jQuery.cssHooks%5B%20prop%20%5D%20%3D%20addGetHookIf%28%20support.pixelPosition%2C%0A%09%09function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09%09if%20%28%20computed%20%29%20%7B%0A%09%09%09%09computed%20%3D%20curCSS%28%20elem%2C%20prop%20%29%3B%0A%0A%09%09%09%09//%20If%20curCSS%20returns%20percentage%2C%20fallback%20to%20offset%0A%09%09%09%09return%20rnumnonpx.test%28%20computed%20%29%20%3F%0A%09%09%09%09%09jQuery%28%20elem%20%29.position%28%29%5B%20prop%20%5D%20%2B%20%22px%22%20%3A%0A%09%09%09%09%09computed%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%29%3B%0A%7D%20%29%3B%0A%0A%0A//%20Create%20innerHeight%2C%20innerWidth%2C%20height%2C%20width%2C%20outerHeight%20and%20outerWidth%20methods%0AjQuery.each%28%20%7B%20Height%3A%20%22height%22%2C%20Width%3A%20%22width%22%20%7D%2C%20function%28%20name%2C%20type%20%29%20%7B%0A%09jQuery.each%28%20%7B%20padding%3A%20%22inner%22%20%2B%20name%2C%20content%3A%20type%2C%20%22%22%3A%20%22outer%22%20%2B%20name%20%7D%2C%0A%09%09function%28%20defaultExtra%2C%20funcName%20%29%20%7B%0A%0A%09%09//%20Margin%20is%20only%20for%20outerHeight%2C%20outerWidth%0A%09%09jQuery.fn%5B%20funcName%20%5D%20%3D%20function%28%20margin%2C%20value%20%29%20%7B%0A%09%09%09var%20chainable%20%3D%20arguments.length%20%26%26%20%28%20defaultExtra%20%7C%7C%20typeof%20margin%20%21%3D%3D%20%22boolean%22%20%29%2C%0A%09%09%09%09extra%20%3D%20defaultExtra%20%7C%7C%20%28%20margin%20%3D%3D%3D%20true%20%7C%7C%20value%20%3D%3D%3D%20true%20%3F%20%22margin%22%20%3A%20%22border%22%20%29%3B%0A%0A%09%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20type%2C%20value%20%29%20%7B%0A%09%09%09%09var%20doc%3B%0A%0A%09%09%09%09if%20%28%20isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20%24%28%20window%20%29.outerWidth/Height%20return%20w/h%20including%20scrollbars%20%28gh-1729%29%0A%09%09%09%09%09return%20funcName.indexOf%28%20%22outer%22%20%29%20%3D%3D%3D%200%20%3F%0A%09%09%09%09%09%09elem%5B%20%22inner%22%20%2B%20name%20%5D%20%3A%0A%09%09%09%09%09%09elem.document.documentElement%5B%20%22client%22%20%2B%20name%20%5D%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Get%20document%20width%20or%20height%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09doc%20%3D%20elem.documentElement%3B%0A%0A%09%09%09%09%09//%20Either%20scroll%5BWidth/Height%5D%20or%20offset%5BWidth/Height%5D%20or%20client%5BWidth/Height%5D%2C%0A%09%09%09%09%09//%20whichever%20is%20greatest%0A%09%09%09%09%09return%20Math.max%28%0A%09%09%09%09%09%09elem.body%5B%20%22scroll%22%20%2B%20name%20%5D%2C%20doc%5B%20%22scroll%22%20%2B%20name%20%5D%2C%0A%09%09%09%09%09%09elem.body%5B%20%22offset%22%20%2B%20name%20%5D%2C%20doc%5B%20%22offset%22%20%2B%20name%20%5D%2C%0A%09%09%09%09%09%09doc%5B%20%22client%22%20%2B%20name%20%5D%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20value%20%3D%3D%3D%20undefined%20%3F%0A%0A%09%09%09%09%09//%20Get%20width%20or%20height%20on%20the%20element%2C%20requesting%20but%20not%20forcing%20parseFloat%0A%09%09%09%09%09jQuery.css%28%20elem%2C%20type%2C%20extra%20%29%20%3A%0A%0A%09%09%09%09%09//%20Set%20width%20or%20height%20on%20the%20element%0A%09%09%09%09%09jQuery.style%28%20elem%2C%20type%2C%20value%2C%20extra%20%29%3B%0A%09%09%09%7D%2C%20type%2C%20chainable%20%3F%20margin%20%3A%20undefined%2C%20chainable%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%20%29%3B%0A%0A%0AjQuery.each%28%20%5B%0A%09%22ajaxStart%22%2C%0A%09%22ajaxStop%22%2C%0A%09%22ajaxComplete%22%2C%0A%09%22ajaxError%22%2C%0A%09%22ajaxSuccess%22%2C%0A%09%22ajaxSend%22%0A%5D%2C%20function%28%20_i%2C%20type%20%29%20%7B%0A%09jQuery.fn%5B%20type%20%5D%20%3D%20function%28%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20type%2C%20fn%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09bind%3A%20function%28%20types%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20types%2C%20null%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09unbind%3A%20function%28%20types%2C%20fn%20%29%20%7B%0A%09%09return%20this.off%28%20types%2C%20null%2C%20fn%20%29%3B%0A%09%7D%2C%0A%0A%09delegate%3A%20function%28%20selector%2C%20types%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09undelegate%3A%20function%28%20selector%2C%20types%2C%20fn%20%29%20%7B%0A%0A%09%09//%20%28%20namespace%20%29%20or%20%28%20selector%2C%20types%20%5B%2C%20fn%5D%20%29%0A%09%09return%20arguments.length%20%3D%3D%3D%201%20%3F%0A%09%09%09this.off%28%20selector%2C%20%22%2A%2A%22%20%29%20%3A%0A%09%09%09this.off%28%20types%2C%20selector%20%7C%7C%20%22%2A%2A%22%2C%20fn%20%29%3B%0A%09%7D%2C%0A%0A%09hover%3A%20function%28%20fnOver%2C%20fnOut%20%29%20%7B%0A%09%09return%20this.mouseenter%28%20fnOver%20%29.mouseleave%28%20fnOut%20%7C%7C%20fnOver%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%28%20%22blur%20focus%20focusin%20focusout%20resize%20scroll%20click%20dblclick%20%22%20%2B%0A%09%22mousedown%20mouseup%20mousemove%20mouseover%20mouseout%20mouseenter%20mouseleave%20%22%20%2B%0A%09%22change%20select%20submit%20keydown%20keypress%20keyup%20contextmenu%22%20%29.split%28%20%22%20%22%20%29%2C%0A%09function%28%20_i%2C%20name%20%29%20%7B%0A%0A%09%09//%20Handle%20event%20binding%0A%09%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20data%2C%20fn%20%29%20%7B%0A%09%09%09return%20arguments.length%20%3E%200%20%3F%0A%09%09%09%09this.on%28%20name%2C%20null%2C%20data%2C%20fn%20%29%20%3A%0A%09%09%09%09this.trigger%28%20name%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%0A%0A%0A%0A//%20Support%3A%20Android%20%3C%3D4.0%20only%0A//%20Make%20sure%20we%20trim%20BOM%20and%20NBSP%0Avar%20rtrim%20%3D%20/%5E%5B%5Cs%5CuFEFF%5CxA0%5D%2B%7C%5B%5Cs%5CuFEFF%5CxA0%5D%2B%24/g%3B%0A%0A//%20Bind%20a%20function%20to%20a%20context%2C%20optionally%20partially%20applying%20any%0A//%20arguments.%0A//%20jQuery.proxy%20is%20deprecated%20to%20promote%20standards%20%28specifically%20Function%23bind%29%0A//%20However%2C%20it%20is%20not%20slated%20for%20removal%20any%20time%20soon%0AjQuery.proxy%20%3D%20function%28%20fn%2C%20context%20%29%20%7B%0A%09var%20tmp%2C%20args%2C%20proxy%3B%0A%0A%09if%20%28%20typeof%20context%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09tmp%20%3D%20fn%5B%20context%20%5D%3B%0A%09%09context%20%3D%20fn%3B%0A%09%09fn%20%3D%20tmp%3B%0A%09%7D%0A%0A%09//%20Quick%20check%20to%20determine%20if%20target%20is%20callable%2C%20in%20the%20spec%0A%09//%20this%20throws%20a%20TypeError%2C%20but%20we%20will%20just%20return%20undefined.%0A%09if%20%28%20%21isFunction%28%20fn%20%29%20%29%20%7B%0A%09%09return%20undefined%3B%0A%09%7D%0A%0A%09//%20Simulated%20bind%0A%09args%20%3D%20slice.call%28%20arguments%2C%202%20%29%3B%0A%09proxy%20%3D%20function%28%29%20%7B%0A%09%09return%20fn.apply%28%20context%20%7C%7C%20this%2C%20args.concat%28%20slice.call%28%20arguments%20%29%20%29%20%29%3B%0A%09%7D%3B%0A%0A%09//%20Set%20the%20guid%20of%20unique%20handler%20to%20the%20same%20of%20original%20handler%2C%20so%20it%20can%20be%20removed%0A%09proxy.guid%20%3D%20fn.guid%20%3D%20fn.guid%20%7C%7C%20jQuery.guid%2B%2B%3B%0A%0A%09return%20proxy%3B%0A%7D%3B%0A%0AjQuery.holdReady%20%3D%20function%28%20hold%20%29%20%7B%0A%09if%20%28%20hold%20%29%20%7B%0A%09%09jQuery.readyWait%2B%2B%3B%0A%09%7D%20else%20%7B%0A%09%09jQuery.ready%28%20true%20%29%3B%0A%09%7D%0A%7D%3B%0AjQuery.isArray%20%3D%20Array.isArray%3B%0AjQuery.parseJSON%20%3D%20JSON.parse%3B%0AjQuery.nodeName%20%3D%20nodeName%3B%0AjQuery.isFunction%20%3D%20isFunction%3B%0AjQuery.isWindow%20%3D%20isWindow%3B%0AjQuery.camelCase%20%3D%20camelCase%3B%0AjQuery.type%20%3D%20toType%3B%0A%0AjQuery.now%20%3D%20Date.now%3B%0A%0AjQuery.isNumeric%20%3D%20function%28%20obj%20%29%20%7B%0A%0A%09//%20As%20of%20jQuery%203.0%2C%20isNumeric%20is%20limited%20to%0A%09//%20strings%20and%20numbers%20%28primitives%20or%20objects%29%0A%09//%20that%20can%20be%20coerced%20to%20finite%20numbers%20%28gh-2662%29%0A%09var%20type%20%3D%20jQuery.type%28%20obj%20%29%3B%0A%09return%20%28%20type%20%3D%3D%3D%20%22number%22%20%7C%7C%20type%20%3D%3D%3D%20%22string%22%20%29%20%26%26%0A%0A%09%09//%20parseFloat%20NaNs%20numeric-cast%20false%20positives%20%28%22%22%29%0A%09%09//%20...but%20misinterprets%20leading-number%20strings%2C%20particularly%20hex%20literals%20%28%220x...%22%29%0A%09%09//%20subtraction%20forces%20infinities%20to%20NaN%0A%09%09%21isNaN%28%20obj%20-%20parseFloat%28%20obj%20%29%20%29%3B%0A%7D%3B%0A%0AjQuery.trim%20%3D%20function%28%20text%20%29%20%7B%0A%09return%20text%20%3D%3D%20null%20%3F%0A%09%09%22%22%20%3A%0A%09%09%28%20text%20%2B%20%22%22%20%29.replace%28%20rtrim%2C%20%22%22%20%29%3B%0A%7D%3B%0A%0A%0A%0A//%20Register%20as%20a%20named%20AMD%20module%2C%20since%20jQuery%20can%20be%20concatenated%20with%20other%0A//%20files%20that%20may%20use%20define%2C%20but%20not%20via%20a%20proper%20concatenation%20script%20that%0A//%20understands%20anonymous%20AMD%20modules.%20A%20named%20AMD%20is%20safest%20and%20most%20robust%0A//%20way%20to%20register.%20Lowercase%20jquery%20is%20used%20because%20AMD%20module%20names%20are%0A//%20derived%20from%20file%20names%2C%20and%20jQuery%20is%20normally%20delivered%20in%20a%20lowercase%0A//%20file%20name.%20Do%20this%20after%20creating%20the%20global%20so%20that%20if%20an%20AMD%20module%20wants%0A//%20to%20call%20noConflict%20to%20hide%20this%20version%20of%20jQuery%2C%20it%20will%20work.%0A%0A//%20Note%20that%20for%20maximum%20portability%2C%20libraries%20that%20are%20not%20jQuery%20should%0A//%20declare%20themselves%20as%20anonymous%20modules%2C%20and%20avoid%20setting%20a%20global%20if%20an%0A//%20AMD%20loader%20is%20present.%20jQuery%20is%20a%20special%20case.%20For%20more%20information%2C%20see%0A//%20https%3A//github.com/jrburke/requirejs/wiki/Updating-existing-libraries%23wiki-anon%0A%0Aif%20%28%20typeof%20define%20%3D%3D%3D%20%22function%22%20%26%26%20define.amd%20%29%20%7B%0A%09define%28%20%22jquery%22%2C%20%5B%5D%2C%20function%28%29%20%7B%0A%09%09return%20jQuery%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A%0A%0A%0Avar%0A%0A%09//%20Map%20over%20jQuery%20in%20case%20of%20overwrite%0A%09_jQuery%20%3D%20window.jQuery%2C%0A%0A%09//%20Map%20over%20the%20%24%20in%20case%20of%20overwrite%0A%09_%24%20%3D%20window.%24%3B%0A%0AjQuery.noConflict%20%3D%20function%28%20deep%20%29%20%7B%0A%09if%20%28%20window.%24%20%3D%3D%3D%20jQuery%20%29%20%7B%0A%09%09window.%24%20%3D%20_%24%3B%0A%09%7D%0A%0A%09if%20%28%20deep%20%26%26%20window.jQuery%20%3D%3D%3D%20jQuery%20%29%20%7B%0A%09%09window.jQuery%20%3D%20_jQuery%3B%0A%09%7D%0A%0A%09return%20jQuery%3B%0A%7D%3B%0A%0A//%20Expose%20jQuery%20and%20%24%20identifiers%2C%20even%20in%20AMD%0A//%20%28%237102%23comment%3A10%2C%20https%3A//github.com/jquery/jquery/pull/557%29%0A//%20and%20CommonJS%20for%20browser%20emulators%20%28%2313566%29%0Aif%20%28%20typeof%20noGlobal%20%3D%3D%3D%20%22undefined%22%20%29%20%7B%0A%09window.jQuery%20%3D%20window.%24%20%3D%20jQuery%3B%0A%7D%0A%0A%0A%0A%0Areturn%20jQuery%3B%0A%7D%20%29%3B%0A"></script><!--URL:_static/jquery.js-->
-<script src="data:application/javascript,//%20%20%20%20%20Underscore.js%201.9.1%0A//%20%20%20%20%20http%3A//underscorejs.org%0A//%20%20%20%20%20%28c%29%202009-2018%20Jeremy%20Ashkenas%2C%20DocumentCloud%20and%20Investigative%20Reporters%20%26%20Editors%0A//%20%20%20%20%20Underscore%20may%20be%20freely%20distributed%20under%20the%20MIT%20license.%0A%0A%28function%28%29%20%7B%0A%0A%20%20//%20Baseline%20setup%0A%20%20//%20--------------%0A%0A%20%20//%20Establish%20the%20root%20object%2C%20%60window%60%20%28%60self%60%29%20in%20the%20browser%2C%20%60global%60%0A%20%20//%20on%20the%20server%2C%20or%20%60this%60%20in%20some%20virtual%20machines.%20We%20use%20%60self%60%0A%20%20//%20instead%20of%20%60window%60%20for%20%60WebWorker%60%20support.%0A%20%20var%20root%20%3D%20typeof%20self%20%3D%3D%20%27object%27%20%26%26%20self.self%20%3D%3D%3D%20self%20%26%26%20self%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20typeof%20global%20%3D%3D%20%27object%27%20%26%26%20global.global%20%3D%3D%3D%20global%20%26%26%20global%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20this%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%7D%3B%0A%0A%20%20//%20Save%20the%20previous%20value%20of%20the%20%60_%60%20variable.%0A%20%20var%20previousUnderscore%20%3D%20root._%3B%0A%0A%20%20//%20Save%20bytes%20in%20the%20minified%20%28but%20not%20gzipped%29%20version%3A%0A%20%20var%20ArrayProto%20%3D%20Array.prototype%2C%20ObjProto%20%3D%20Object.prototype%3B%0A%20%20var%20SymbolProto%20%3D%20typeof%20Symbol%20%21%3D%3D%20%27undefined%27%20%3F%20Symbol.prototype%20%3A%20null%3B%0A%0A%20%20//%20Create%20quick%20reference%20variables%20for%20speed%20access%20to%20core%20prototypes.%0A%20%20var%20push%20%3D%20ArrayProto.push%2C%0A%20%20%20%20%20%20slice%20%3D%20ArrayProto.slice%2C%0A%20%20%20%20%20%20toString%20%3D%20ObjProto.toString%2C%0A%20%20%20%20%20%20hasOwnProperty%20%3D%20ObjProto.hasOwnProperty%3B%0A%0A%20%20//%20All%20%2A%2AECMAScript%205%2A%2A%20native%20function%20implementations%20that%20we%20hope%20to%20use%0A%20%20//%20are%20declared%20here.%0A%20%20var%20nativeIsArray%20%3D%20Array.isArray%2C%0A%20%20%20%20%20%20nativeKeys%20%3D%20Object.keys%2C%0A%20%20%20%20%20%20nativeCreate%20%3D%20Object.create%3B%0A%0A%20%20//%20Naked%20function%20reference%20for%20surrogate-prototype-swapping.%0A%20%20var%20Ctor%20%3D%20function%28%29%7B%7D%3B%0A%0A%20%20//%20Create%20a%20safe%20reference%20to%20the%20Underscore%20object%20for%20use%20below.%0A%20%20var%20_%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20instanceof%20_%29%20return%20obj%3B%0A%20%20%20%20if%20%28%21%28this%20instanceof%20_%29%29%20return%20new%20_%28obj%29%3B%0A%20%20%20%20this._wrapped%20%3D%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Export%20the%20Underscore%20object%20for%20%2A%2ANode.js%2A%2A%2C%20with%0A%20%20//%20backwards-compatibility%20for%20their%20old%20module%20API.%20If%20we%27re%20in%0A%20%20//%20the%20browser%2C%20add%20%60_%60%20as%20a%20global%20object.%0A%20%20//%20%28%60nodeType%60%20is%20checked%20to%20ensure%20that%20%60module%60%0A%20%20//%20and%20%60exports%60%20are%20not%20HTML%20elements.%29%0A%20%20if%20%28typeof%20exports%20%21%3D%20%27undefined%27%20%26%26%20%21exports.nodeType%29%20%7B%0A%20%20%20%20if%20%28typeof%20module%20%21%3D%20%27undefined%27%20%26%26%20%21module.nodeType%20%26%26%20module.exports%29%20%7B%0A%20%20%20%20%20%20exports%20%3D%20module.exports%20%3D%20_%3B%0A%20%20%20%20%7D%0A%20%20%20%20exports._%20%3D%20_%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20root._%20%3D%20_%3B%0A%20%20%7D%0A%0A%20%20//%20Current%20version.%0A%20%20_.VERSION%20%3D%20%271.9.1%27%3B%0A%0A%20%20//%20Internal%20function%20that%20returns%20an%20efficient%20%28for%20current%20engines%29%20version%0A%20%20//%20of%20the%20passed-in%20callback%2C%20to%20be%20repeatedly%20applied%20in%20other%20Underscore%0A%20%20//%20functions.%0A%20%20var%20optimizeCb%20%3D%20function%28func%2C%20context%2C%20argCount%29%20%7B%0A%20%20%20%20if%20%28context%20%3D%3D%3D%20void%200%29%20return%20func%3B%0A%20%20%20%20switch%20%28argCount%20%3D%3D%20null%20%3F%203%20%3A%20argCount%29%20%7B%0A%20%20%20%20%20%20case%201%3A%20return%20function%28value%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20value%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20//%20The%202-argument%20case%20is%20omitted%20because%20we%E2%80%99re%20not%20using%20it.%0A%20%20%20%20%20%20case%203%3A%20return%20function%28value%2C%20index%2C%20collection%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20value%2C%20index%2C%20collection%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20case%204%3A%20return%20function%28accumulator%2C%20value%2C%20index%2C%20collection%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20accumulator%2C%20value%2C%20index%2C%20collection%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20func.apply%28context%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20var%20builtinIteratee%3B%0A%0A%20%20//%20An%20internal%20function%20to%20generate%20callbacks%20that%20can%20be%20applied%20to%20each%0A%20%20//%20element%20in%20a%20collection%2C%20returning%20the%20desired%20result%20%E2%80%94%20either%20%60identity%60%2C%0A%20%20//%20an%20arbitrary%20callback%2C%20a%20property%20matcher%2C%20or%20a%20property%20accessor.%0A%20%20var%20cb%20%3D%20function%28value%2C%20context%2C%20argCount%29%20%7B%0A%20%20%20%20if%20%28_.iteratee%20%21%3D%3D%20builtinIteratee%29%20return%20_.iteratee%28value%2C%20context%29%3B%0A%20%20%20%20if%20%28value%20%3D%3D%20null%29%20return%20_.identity%3B%0A%20%20%20%20if%20%28_.isFunction%28value%29%29%20return%20optimizeCb%28value%2C%20context%2C%20argCount%29%3B%0A%20%20%20%20if%20%28_.isObject%28value%29%20%26%26%20%21_.isArray%28value%29%29%20return%20_.matcher%28value%29%3B%0A%20%20%20%20return%20_.property%28value%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20External%20wrapper%20for%20our%20callback%20generator.%20Users%20may%20customize%0A%20%20//%20%60_.iteratee%60%20if%20they%20want%20additional%20predicate/iteratee%20shorthand%20styles.%0A%20%20//%20This%20abstraction%20hides%20the%20internal-only%20argCount%20argument.%0A%20%20_.iteratee%20%3D%20builtinIteratee%20%3D%20function%28value%2C%20context%29%20%7B%0A%20%20%20%20return%20cb%28value%2C%20context%2C%20Infinity%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Some%20functions%20take%20a%20variable%20number%20of%20arguments%2C%20or%20a%20few%20expected%0A%20%20//%20arguments%20at%20the%20beginning%20and%20then%20a%20variable%20number%20of%20values%20to%20operate%0A%20%20//%20on.%20This%20helper%20accumulates%20all%20remaining%20arguments%20past%20the%20function%E2%80%99s%0A%20%20//%20argument%20length%20%28or%20an%20explicit%20%60startIndex%60%29%2C%20into%20an%20array%20that%20becomes%0A%20%20//%20the%20last%20argument.%20Similar%20to%20ES6%E2%80%99s%20%22rest%20parameter%22.%0A%20%20var%20restArguments%20%3D%20function%28func%2C%20startIndex%29%20%7B%0A%20%20%20%20startIndex%20%3D%20startIndex%20%3D%3D%20null%20%3F%20func.length%20-%201%20%3A%20%2BstartIndex%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20length%20%3D%20Math.max%28arguments.length%20-%20startIndex%2C%200%29%2C%0A%20%20%20%20%20%20%20%20%20%20rest%20%3D%20Array%28length%29%2C%0A%20%20%20%20%20%20%20%20%20%20index%20%3D%200%3B%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20rest%5Bindex%5D%20%3D%20arguments%5Bindex%20%2B%20startIndex%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20switch%20%28startIndex%29%20%7B%0A%20%20%20%20%20%20%20%20case%200%3A%20return%20func.call%28this%2C%20rest%29%3B%0A%20%20%20%20%20%20%20%20case%201%3A%20return%20func.call%28this%2C%20arguments%5B0%5D%2C%20rest%29%3B%0A%20%20%20%20%20%20%20%20case%202%3A%20return%20func.call%28this%2C%20arguments%5B0%5D%2C%20arguments%5B1%5D%2C%20rest%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20args%20%3D%20Array%28startIndex%20%2B%201%29%3B%0A%20%20%20%20%20%20for%20%28index%20%3D%200%3B%20index%20%3C%20startIndex%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20args%5Bindex%5D%20%3D%20arguments%5Bindex%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20args%5BstartIndex%5D%20%3D%20rest%3B%0A%20%20%20%20%20%20return%20func.apply%28this%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20for%20creating%20a%20new%20object%20that%20inherits%20from%20another.%0A%20%20var%20baseCreate%20%3D%20function%28prototype%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28prototype%29%29%20return%20%7B%7D%3B%0A%20%20%20%20if%20%28nativeCreate%29%20return%20nativeCreate%28prototype%29%3B%0A%20%20%20%20Ctor.prototype%20%3D%20prototype%3B%0A%20%20%20%20var%20result%20%3D%20new%20Ctor%3B%0A%20%20%20%20Ctor.prototype%20%3D%20null%3B%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20var%20shallowProperty%20%3D%20function%28key%29%20%7B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20obj%20%3D%3D%20null%20%3F%20void%200%20%3A%20obj%5Bkey%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20var%20has%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20return%20obj%20%21%3D%20null%20%26%26%20hasOwnProperty.call%28obj%2C%20path%29%3B%0A%20%20%7D%0A%0A%20%20var%20deepGet%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20void%200%3B%0A%20%20%20%20%20%20obj%20%3D%20obj%5Bpath%5Bi%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20length%20%3F%20obj%20%3A%20void%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Helper%20for%20collection%20methods%20to%20determine%20whether%20a%20collection%0A%20%20//%20should%20be%20iterated%20as%20an%20array%20or%20as%20an%20object.%0A%20%20//%20Related%3A%20http%3A//people.mozilla.org/~jorendorff/es6-draft.html%23sec-tolength%0A%20%20//%20Avoids%20a%20very%20nasty%20iOS%208%20JIT%20bug%20on%20ARM-64.%20%232094%0A%20%20var%20MAX_ARRAY_INDEX%20%3D%20Math.pow%282%2C%2053%29%20-%201%3B%0A%20%20var%20getLength%20%3D%20shallowProperty%28%27length%27%29%3B%0A%20%20var%20isArrayLike%20%3D%20function%28collection%29%20%7B%0A%20%20%20%20var%20length%20%3D%20getLength%28collection%29%3B%0A%20%20%20%20return%20typeof%20length%20%3D%3D%20%27number%27%20%26%26%20length%20%3E%3D%200%20%26%26%20length%20%3C%3D%20MAX_ARRAY_INDEX%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Collection%20Functions%0A%20%20//%20--------------------%0A%0A%20%20//%20The%20cornerstone%2C%20an%20%60each%60%20implementation%2C%20aka%20%60forEach%60.%0A%20%20//%20Handles%20raw%20objects%20in%20addition%20to%20array-likes.%20Treats%20all%0A%20%20//%20sparse%20array-likes%20as%20if%20they%20were%20dense.%0A%20%20_.each%20%3D%20_.forEach%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20i%2C%20length%3B%0A%20%20%20%20if%20%28isArrayLike%28obj%29%29%20%7B%0A%20%20%20%20%20%20for%20%28i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20iteratee%28obj%5Bi%5D%2C%20i%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20%20%20for%20%28i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20iteratee%28obj%5Bkeys%5Bi%5D%5D%2C%20keys%5Bi%5D%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20results%20of%20applying%20the%20iteratee%20to%20each%20element.%0A%20%20_.map%20%3D%20_.collect%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%2C%0A%20%20%20%20%20%20%20%20results%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20results%5Bindex%5D%20%3D%20iteratee%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20reducing%20function%20iterating%20left%20or%20right.%0A%20%20var%20createReduce%20%3D%20function%28dir%29%20%7B%0A%20%20%20%20//%20Wrap%20code%20that%20reassigns%20argument%20variables%20in%20a%20separate%20function%20than%0A%20%20%20%20//%20the%20one%20that%20accesses%20%60arguments.length%60%20to%20avoid%20a%20perf%20hit.%20%28%231991%29%0A%20%20%20%20var%20reducer%20%3D%20function%28obj%2C%20iteratee%2C%20memo%2C%20initial%29%20%7B%0A%20%20%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%2C%0A%20%20%20%20%20%20%20%20%20%20index%20%3D%20dir%20%3E%200%20%3F%200%20%3A%20length%20-%201%3B%0A%20%20%20%20%20%20if%20%28%21initial%29%20%7B%0A%20%20%20%20%20%20%20%20memo%20%3D%20obj%5Bkeys%20%3F%20keys%5Bindex%5D%20%3A%20index%5D%3B%0A%20%20%20%20%20%20%20%20index%20%2B%3D%20dir%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3E%3D%200%20%26%26%20index%20%3C%20length%3B%20index%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20%20%20memo%20%3D%20iteratee%28memo%2C%20obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20memo%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20function%28obj%2C%20iteratee%2C%20memo%2C%20context%29%20%7B%0A%20%20%20%20%20%20var%20initial%20%3D%20arguments.length%20%3E%3D%203%3B%0A%20%20%20%20%20%20return%20reducer%28obj%2C%20optimizeCb%28iteratee%2C%20context%2C%204%29%2C%20memo%2C%20initial%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20%2A%2AReduce%2A%2A%20builds%20up%20a%20single%20result%20from%20a%20list%20of%20values%2C%20aka%20%60inject%60%2C%0A%20%20//%20or%20%60foldl%60.%0A%20%20_.reduce%20%3D%20_.foldl%20%3D%20_.inject%20%3D%20createReduce%281%29%3B%0A%0A%20%20//%20The%20right-associative%20version%20of%20reduce%2C%20also%20known%20as%20%60foldr%60.%0A%20%20_.reduceRight%20%3D%20_.foldr%20%3D%20createReduce%28-1%29%3B%0A%0A%20%20//%20Return%20the%20first%20value%20which%20passes%20a%20truth%20test.%20Aliased%20as%20%60detect%60.%0A%20%20_.find%20%3D%20_.detect%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20var%20keyFinder%20%3D%20isArrayLike%28obj%29%20%3F%20_.findIndex%20%3A%20_.findKey%3B%0A%20%20%20%20var%20key%20%3D%20keyFinder%28obj%2C%20predicate%2C%20context%29%3B%0A%20%20%20%20if%20%28key%20%21%3D%3D%20void%200%20%26%26%20key%20%21%3D%3D%20-1%29%20return%20obj%5Bkey%5D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20all%20the%20elements%20that%20pass%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60select%60.%0A%20%20_.filter%20%3D%20_.select%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20_.each%28obj%2C%20function%28value%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20if%20%28predicate%28value%2C%20index%2C%20list%29%29%20results.push%28value%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20all%20the%20elements%20for%20which%20a%20truth%20test%20fails.%0A%20%20_.reject%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20return%20_.filter%28obj%2C%20_.negate%28cb%28predicate%29%29%2C%20context%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20whether%20all%20of%20the%20elements%20match%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60all%60.%0A%20%20_.every%20%3D%20_.all%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20if%20%28%21predicate%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%29%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20if%20at%20least%20one%20element%20in%20the%20object%20matches%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60any%60.%0A%20%20_.some%20%3D%20_.any%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20if%20%28predicate%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%29%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20if%20the%20array%20or%20object%20contains%20a%20given%20item%20%28using%20%60%3D%3D%3D%60%29.%0A%20%20//%20Aliased%20as%20%60includes%60%20and%20%60include%60.%0A%20%20_.contains%20%3D%20_.includes%20%3D%20_.include%20%3D%20function%28obj%2C%20item%2C%20fromIndex%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28%21isArrayLike%28obj%29%29%20obj%20%3D%20_.values%28obj%29%3B%0A%20%20%20%20if%20%28typeof%20fromIndex%20%21%3D%20%27number%27%20%7C%7C%20guard%29%20fromIndex%20%3D%200%3B%0A%20%20%20%20return%20_.indexOf%28obj%2C%20item%2C%20fromIndex%29%20%3E%3D%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invoke%20a%20method%20%28with%20arguments%29%20on%20every%20item%20in%20a%20collection.%0A%20%20_.invoke%20%3D%20restArguments%28function%28obj%2C%20path%2C%20args%29%20%7B%0A%20%20%20%20var%20contextPath%2C%20func%3B%0A%20%20%20%20if%20%28_.isFunction%28path%29%29%20%7B%0A%20%20%20%20%20%20func%20%3D%20path%3B%0A%20%20%20%20%7D%20else%20if%20%28_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20contextPath%20%3D%20path.slice%280%2C%20-1%29%3B%0A%20%20%20%20%20%20path%20%3D%20path%5Bpath.length%20-%201%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20_.map%28obj%2C%20function%28context%29%20%7B%0A%20%20%20%20%20%20var%20method%20%3D%20func%3B%0A%20%20%20%20%20%20if%20%28%21method%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28contextPath%20%26%26%20contextPath.length%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20context%20%3D%20deepGet%28context%2C%20contextPath%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28context%20%3D%3D%20null%29%20return%20void%200%3B%0A%20%20%20%20%20%20%20%20method%20%3D%20context%5Bpath%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20method%20%3D%3D%20null%20%3F%20method%20%3A%20method.apply%28context%2C%20args%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60map%60%3A%20fetching%20a%20property.%0A%20%20_.pluck%20%3D%20function%28obj%2C%20key%29%20%7B%0A%20%20%20%20return%20_.map%28obj%2C%20_.property%28key%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60filter%60%3A%20selecting%20only%20objects%0A%20%20//%20containing%20specific%20%60key%3Avalue%60%20pairs.%0A%20%20_.where%20%3D%20function%28obj%2C%20attrs%29%20%7B%0A%20%20%20%20return%20_.filter%28obj%2C%20_.matcher%28attrs%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60find%60%3A%20getting%20the%20first%20object%0A%20%20//%20containing%20specific%20%60key%3Avalue%60%20pairs.%0A%20%20_.findWhere%20%3D%20function%28obj%2C%20attrs%29%20%7B%0A%20%20%20%20return%20_.find%28obj%2C%20_.matcher%28attrs%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20maximum%20element%20%28or%20element-based%20computation%29.%0A%20%20_.max%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20result%20%3D%20-Infinity%2C%20lastComputed%20%3D%20-Infinity%2C%0A%20%20%20%20%20%20%20%20value%2C%20computed%3B%0A%20%20%20%20if%20%28iteratee%20%3D%3D%20null%20%7C%7C%20typeof%20iteratee%20%3D%3D%20%27number%27%20%26%26%20typeof%20obj%5B0%5D%20%21%3D%20%27object%27%20%26%26%20obj%20%21%3D%20null%29%20%7B%0A%20%20%20%20%20%20obj%20%3D%20isArrayLike%28obj%29%20%3F%20obj%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20obj%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28value%20%21%3D%20null%20%26%26%20value%20%3E%20result%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28v%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%28v%2C%20index%2C%20list%29%3B%0A%20%20%20%20%20%20%20%20if%20%28computed%20%3E%20lastComputed%20%7C%7C%20computed%20%3D%3D%3D%20-Infinity%20%26%26%20result%20%3D%3D%3D%20-Infinity%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20v%3B%0A%20%20%20%20%20%20%20%20%20%20lastComputed%20%3D%20computed%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20minimum%20element%20%28or%20element-based%20computation%29.%0A%20%20_.min%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20result%20%3D%20Infinity%2C%20lastComputed%20%3D%20Infinity%2C%0A%20%20%20%20%20%20%20%20value%2C%20computed%3B%0A%20%20%20%20if%20%28iteratee%20%3D%3D%20null%20%7C%7C%20typeof%20iteratee%20%3D%3D%20%27number%27%20%26%26%20typeof%20obj%5B0%5D%20%21%3D%20%27object%27%20%26%26%20obj%20%21%3D%20null%29%20%7B%0A%20%20%20%20%20%20obj%20%3D%20isArrayLike%28obj%29%20%3F%20obj%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20obj%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28value%20%21%3D%20null%20%26%26%20value%20%3C%20result%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28v%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%28v%2C%20index%2C%20list%29%3B%0A%20%20%20%20%20%20%20%20if%20%28computed%20%3C%20lastComputed%20%7C%7C%20computed%20%3D%3D%3D%20Infinity%20%26%26%20result%20%3D%3D%3D%20Infinity%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20v%3B%0A%20%20%20%20%20%20%20%20%20%20lastComputed%20%3D%20computed%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Shuffle%20a%20collection.%0A%20%20_.shuffle%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20_.sample%28obj%2C%20Infinity%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Sample%20%2A%2An%2A%2A%20random%20values%20from%20a%20collection%20using%20the%20modern%20version%20of%20the%0A%20%20//%20%5BFisher-Yates%20shuffle%5D%28http%3A//en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle%29.%0A%20%20//%20If%20%2A%2An%2A%2A%20is%20not%20specified%2C%20returns%20a%20single%20random%20element.%0A%20%20//%20The%20internal%20%60guard%60%20argument%20allows%20it%20to%20work%20with%20%60map%60.%0A%20%20_.sample%20%3D%20function%28obj%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20%7B%0A%20%20%20%20%20%20if%20%28%21isArrayLike%28obj%29%29%20obj%20%3D%20_.values%28obj%29%3B%0A%20%20%20%20%20%20return%20obj%5B_.random%28obj.length%20-%201%29%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20sample%20%3D%20isArrayLike%28obj%29%20%3F%20_.clone%28obj%29%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20getLength%28sample%29%3B%0A%20%20%20%20n%20%3D%20Math.max%28Math.min%28n%2C%20length%29%2C%200%29%3B%0A%20%20%20%20var%20last%20%3D%20length%20-%201%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20n%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20rand%20%3D%20_.random%28index%2C%20last%29%3B%0A%20%20%20%20%20%20var%20temp%20%3D%20sample%5Bindex%5D%3B%0A%20%20%20%20%20%20sample%5Bindex%5D%20%3D%20sample%5Brand%5D%3B%0A%20%20%20%20%20%20sample%5Brand%5D%20%3D%20temp%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20sample.slice%280%2C%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Sort%20the%20object%27s%20values%20by%20a%20criterion%20produced%20by%20an%20iteratee.%0A%20%20_.sortBy%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20index%20%3D%200%3B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20return%20_.pluck%28_.map%28obj%2C%20function%28value%2C%20key%2C%20list%29%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20value%3A%20value%2C%0A%20%20%20%20%20%20%20%20index%3A%20index%2B%2B%2C%0A%20%20%20%20%20%20%20%20criteria%3A%20iteratee%28value%2C%20key%2C%20list%29%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29.sort%28function%28left%2C%20right%29%20%7B%0A%20%20%20%20%20%20var%20a%20%3D%20left.criteria%3B%0A%20%20%20%20%20%20var%20b%20%3D%20right.criteria%3B%0A%20%20%20%20%20%20if%20%28a%20%21%3D%3D%20b%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28a%20%3E%20b%20%7C%7C%20a%20%3D%3D%3D%20void%200%29%20return%201%3B%0A%20%20%20%20%20%20%20%20if%20%28a%20%3C%20b%20%7C%7C%20b%20%3D%3D%3D%20void%200%29%20return%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20left.index%20-%20right.index%3B%0A%20%20%20%20%7D%29%2C%20%27value%27%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20used%20for%20aggregate%20%22group%20by%22%20operations.%0A%20%20var%20group%20%3D%20function%28behavior%2C%20partition%29%20%7B%0A%20%20%20%20return%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20%20%20var%20result%20%3D%20partition%20%3F%20%5B%5B%5D%2C%20%5B%5D%5D%20%3A%20%7B%7D%3B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28value%2C%20index%29%20%7B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20iteratee%28value%2C%20index%2C%20obj%29%3B%0A%20%20%20%20%20%20%20%20behavior%28result%2C%20value%2C%20key%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Groups%20the%20object%27s%20values%20by%20a%20criterion.%20Pass%20either%20a%20string%20attribute%0A%20%20//%20to%20group%20by%2C%20or%20a%20function%20that%20returns%20the%20criterion.%0A%20%20_.groupBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20if%20%28has%28result%2C%20key%29%29%20result%5Bkey%5D.push%28value%29%3B%20else%20result%5Bkey%5D%20%3D%20%5Bvalue%5D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Indexes%20the%20object%27s%20values%20by%20a%20criterion%2C%20similar%20to%20%60groupBy%60%2C%20but%20for%0A%20%20//%20when%20you%20know%20that%20your%20index%20values%20will%20be%20unique.%0A%20%20_.indexBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20result%5Bkey%5D%20%3D%20value%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Counts%20instances%20of%20an%20object%20that%20group%20by%20a%20certain%20criterion.%20Pass%0A%20%20//%20either%20a%20string%20attribute%20to%20count%20by%2C%20or%20a%20function%20that%20returns%20the%0A%20%20//%20criterion.%0A%20%20_.countBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20if%20%28has%28result%2C%20key%29%29%20result%5Bkey%5D%2B%2B%3B%20else%20result%5Bkey%5D%20%3D%201%3B%0A%20%20%7D%29%3B%0A%0A%20%20var%20reStrSymbol%20%3D%20/%5B%5E%5Cud800-%5Cudfff%5D%7C%5B%5Cud800-%5Cudbff%5D%5B%5Cudc00-%5Cudfff%5D%7C%5B%5Cud800-%5Cudfff%5D/g%3B%0A%20%20//%20Safely%20create%20a%20real%2C%20live%20array%20from%20anything%20iterable.%0A%20%20_.toArray%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21obj%29%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28_.isArray%28obj%29%29%20return%20slice.call%28obj%29%3B%0A%20%20%20%20if%20%28_.isString%28obj%29%29%20%7B%0A%20%20%20%20%20%20//%20Keep%20surrogate%20pair%20characters%20together%0A%20%20%20%20%20%20return%20obj.match%28reStrSymbol%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28isArrayLike%28obj%29%29%20return%20_.map%28obj%2C%20_.identity%29%3B%0A%20%20%20%20return%20_.values%28obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20number%20of%20elements%20in%20an%20object.%0A%20%20_.size%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%200%3B%0A%20%20%20%20return%20isArrayLike%28obj%29%20%3F%20obj.length%20%3A%20_.keys%28obj%29.length%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Split%20a%20collection%20into%20two%20arrays%3A%20one%20whose%20elements%20all%20satisfy%20the%20given%0A%20%20//%20predicate%2C%20and%20one%20whose%20elements%20all%20do%20not%20satisfy%20the%20predicate.%0A%20%20_.partition%20%3D%20group%28function%28result%2C%20value%2C%20pass%29%20%7B%0A%20%20%20%20result%5Bpass%20%3F%200%20%3A%201%5D.push%28value%29%3B%0A%20%20%7D%2C%20true%29%3B%0A%0A%20%20//%20Array%20Functions%0A%20%20//%20---------------%0A%0A%20%20//%20Get%20the%20first%20element%20of%20an%20array.%20Passing%20%2A%2An%2A%2A%20will%20return%20the%20first%20N%0A%20%20//%20values%20in%20the%20array.%20Aliased%20as%20%60head%60%20and%20%60take%60.%20The%20%2A%2Aguard%2A%2A%20check%0A%20%20//%20allows%20it%20to%20work%20with%20%60_.map%60.%0A%20%20_.first%20%3D%20_.head%20%3D%20_.take%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28array%20%3D%3D%20null%20%7C%7C%20array.length%20%3C%201%29%20return%20n%20%3D%3D%20null%20%3F%20void%200%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20return%20array%5B0%5D%3B%0A%20%20%20%20return%20_.initial%28array%2C%20array.length%20-%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20everything%20but%20the%20last%20entry%20of%20the%20array.%20Especially%20useful%20on%0A%20%20//%20the%20arguments%20object.%20Passing%20%2A%2An%2A%2A%20will%20return%20all%20the%20values%20in%0A%20%20//%20the%20array%2C%20excluding%20the%20last%20N.%0A%20%20_.initial%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20return%20slice.call%28array%2C%200%2C%20Math.max%280%2C%20array.length%20-%20%28n%20%3D%3D%20null%20%7C%7C%20guard%20%3F%201%20%3A%20n%29%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Get%20the%20last%20element%20of%20an%20array.%20Passing%20%2A%2An%2A%2A%20will%20return%20the%20last%20N%0A%20%20//%20values%20in%20the%20array.%0A%20%20_.last%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28array%20%3D%3D%20null%20%7C%7C%20array.length%20%3C%201%29%20return%20n%20%3D%3D%20null%20%3F%20void%200%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20return%20array%5Barray.length%20-%201%5D%3B%0A%20%20%20%20return%20_.rest%28array%2C%20Math.max%280%2C%20array.length%20-%20n%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20everything%20but%20the%20first%20entry%20of%20the%20array.%20Aliased%20as%20%60tail%60%20and%20%60drop%60.%0A%20%20//%20Especially%20useful%20on%20the%20arguments%20object.%20Passing%20an%20%2A%2An%2A%2A%20will%20return%0A%20%20//%20the%20rest%20N%20values%20in%20the%20array.%0A%20%20_.rest%20%3D%20_.tail%20%3D%20_.drop%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20return%20slice.call%28array%2C%20n%20%3D%3D%20null%20%7C%7C%20guard%20%3F%201%20%3A%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Trim%20out%20all%20falsy%20values%20from%20an%20array.%0A%20%20_.compact%20%3D%20function%28array%29%20%7B%0A%20%20%20%20return%20_.filter%28array%2C%20Boolean%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20implementation%20of%20a%20recursive%20%60flatten%60%20function.%0A%20%20var%20flatten%20%3D%20function%28input%2C%20shallow%2C%20strict%2C%20output%29%20%7B%0A%20%20%20%20output%20%3D%20output%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20idx%20%3D%20output.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28input%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20input%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28isArrayLike%28value%29%20%26%26%20%28_.isArray%28value%29%20%7C%7C%20_.isArguments%28value%29%29%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Flatten%20current%20level%20of%20array%20or%20arguments%20object.%0A%20%20%20%20%20%20%20%20if%20%28shallow%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20j%20%3D%200%2C%20len%20%3D%20value.length%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28j%20%3C%20len%29%20output%5Bidx%2B%2B%5D%20%3D%20value%5Bj%2B%2B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20flatten%28value%2C%20shallow%2C%20strict%2C%20output%29%3B%0A%20%20%20%20%20%20%20%20%20%20idx%20%3D%20output.length%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21strict%29%20%7B%0A%20%20%20%20%20%20%20%20output%5Bidx%2B%2B%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20output%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Flatten%20out%20an%20array%2C%20either%20recursively%20%28by%20default%29%2C%20or%20just%20one%20level.%0A%20%20_.flatten%20%3D%20function%28array%2C%20shallow%29%20%7B%0A%20%20%20%20return%20flatten%28array%2C%20shallow%2C%20false%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20version%20of%20the%20array%20that%20does%20not%20contain%20the%20specified%20value%28s%29.%0A%20%20_.without%20%3D%20restArguments%28function%28array%2C%20otherArrays%29%20%7B%0A%20%20%20%20return%20_.difference%28array%2C%20otherArrays%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Produce%20a%20duplicate-free%20version%20of%20the%20array.%20If%20the%20array%20has%20already%0A%20%20//%20been%20sorted%2C%20you%20have%20the%20option%20of%20using%20a%20faster%20algorithm.%0A%20%20//%20The%20faster%20algorithm%20will%20not%20work%20with%20an%20iteratee%20if%20the%20iteratee%0A%20%20//%20is%20not%20a%20one-to-one%20function%2C%20so%20providing%20an%20iteratee%20will%20disable%0A%20%20//%20the%20faster%20algorithm.%0A%20%20//%20Aliased%20as%20%60unique%60.%0A%20%20_.uniq%20%3D%20_.unique%20%3D%20function%28array%2C%20isSorted%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20if%20%28%21_.isBoolean%28isSorted%29%29%20%7B%0A%20%20%20%20%20%20context%20%3D%20iteratee%3B%0A%20%20%20%20%20%20iteratee%20%3D%20isSorted%3B%0A%20%20%20%20%20%20isSorted%20%3D%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28iteratee%20%21%3D%20null%29%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20seen%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20array%5Bi%5D%2C%0A%20%20%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%20%3F%20iteratee%28value%2C%20i%2C%20array%29%20%3A%20value%3B%0A%20%20%20%20%20%20if%20%28isSorted%20%26%26%20%21iteratee%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21i%20%7C%7C%20seen%20%21%3D%3D%20computed%29%20result.push%28value%29%3B%0A%20%20%20%20%20%20%20%20seen%20%3D%20computed%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28iteratee%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21_.contains%28seen%2C%20computed%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20seen.push%28computed%29%3B%0A%20%20%20%20%20%20%20%20%20%20result.push%28value%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21_.contains%28result%2C%20value%29%29%20%7B%0A%20%20%20%20%20%20%20%20result.push%28value%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Produce%20an%20array%20that%20contains%20the%20union%3A%20each%20distinct%20element%20from%20all%20of%0A%20%20//%20the%20passed-in%20arrays.%0A%20%20_.union%20%3D%20restArguments%28function%28arrays%29%20%7B%0A%20%20%20%20return%20_.uniq%28flatten%28arrays%2C%20true%2C%20true%29%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Produce%20an%20array%20that%20contains%20every%20item%20shared%20between%20all%20the%0A%20%20//%20passed-in%20arrays.%0A%20%20_.intersection%20%3D%20function%28array%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20argsLength%20%3D%20arguments.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20item%20%3D%20array%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28_.contains%28result%2C%20item%29%29%20continue%3B%0A%20%20%20%20%20%20var%20j%3B%0A%20%20%20%20%20%20for%20%28j%20%3D%201%3B%20j%20%3C%20argsLength%3B%20j%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21_.contains%28arguments%5Bj%5D%2C%20item%29%29%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28j%20%3D%3D%3D%20argsLength%29%20result.push%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Take%20the%20difference%20between%20one%20array%20and%20a%20number%20of%20other%20arrays.%0A%20%20//%20Only%20the%20elements%20present%20in%20just%20the%20first%20array%20will%20remain.%0A%20%20_.difference%20%3D%20restArguments%28function%28array%2C%20rest%29%20%7B%0A%20%20%20%20rest%20%3D%20flatten%28rest%2C%20true%2C%20true%29%3B%0A%20%20%20%20return%20_.filter%28array%2C%20function%28value%29%7B%0A%20%20%20%20%20%20return%20%21_.contains%28rest%2C%20value%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Complement%20of%20_.zip.%20Unzip%20accepts%20an%20array%20of%20arrays%20and%20groups%0A%20%20//%20each%20array%27s%20elements%20on%20shared%20indices.%0A%20%20_.unzip%20%3D%20function%28array%29%20%7B%0A%20%20%20%20var%20length%20%3D%20array%20%26%26%20_.max%28array%2C%20getLength%29.length%20%7C%7C%200%3B%0A%20%20%20%20var%20result%20%3D%20Array%28length%29%3B%0A%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20result%5Bindex%5D%20%3D%20_.pluck%28array%2C%20index%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Zip%20together%20multiple%20lists%20into%20a%20single%20array%20--%20elements%20that%20share%0A%20%20//%20an%20index%20go%20together.%0A%20%20_.zip%20%3D%20restArguments%28_.unzip%29%3B%0A%0A%20%20//%20Converts%20lists%20into%20objects.%20Pass%20either%20a%20single%20array%20of%20%60%5Bkey%2C%20value%5D%60%0A%20%20//%20pairs%2C%20or%20two%20parallel%20arrays%20of%20the%20same%20length%20--%20one%20of%20keys%2C%20and%20one%20of%0A%20%20//%20the%20corresponding%20values.%20Passing%20by%20pairs%20is%20the%20reverse%20of%20_.pairs.%0A%20%20_.object%20%3D%20function%28list%2C%20values%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28list%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28values%29%20%7B%0A%20%20%20%20%20%20%20%20result%5Blist%5Bi%5D%5D%20%3D%20values%5Bi%5D%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20result%5Blist%5Bi%5D%5B0%5D%5D%20%3D%20list%5Bi%5D%5B1%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generator%20function%20to%20create%20the%20findIndex%20and%20findLastIndex%20functions.%0A%20%20var%20createPredicateIndexFinder%20%3D%20function%28dir%29%20%7B%0A%20%20%20%20return%20function%28array%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20%20%20var%20length%20%3D%20getLength%28array%29%3B%0A%20%20%20%20%20%20var%20index%20%3D%20dir%20%3E%200%20%3F%200%20%3A%20length%20-%201%3B%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3E%3D%200%20%26%26%20index%20%3C%20length%3B%20index%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28predicate%28array%5Bindex%5D%2C%20index%2C%20array%29%29%20return%20index%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20-1%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20first%20index%20on%20an%20array-like%20that%20passes%20a%20predicate%20test.%0A%20%20_.findIndex%20%3D%20createPredicateIndexFinder%281%29%3B%0A%20%20_.findLastIndex%20%3D%20createPredicateIndexFinder%28-1%29%3B%0A%0A%20%20//%20Use%20a%20comparator%20function%20to%20figure%20out%20the%20smallest%20index%20at%20which%0A%20%20//%20an%20object%20should%20be%20inserted%20so%20as%20to%20maintain%20order.%20Uses%20binary%20search.%0A%20%20_.sortedIndex%20%3D%20function%28array%2C%20obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%2C%201%29%3B%0A%20%20%20%20var%20value%20%3D%20iteratee%28obj%29%3B%0A%20%20%20%20var%20low%20%3D%200%2C%20high%20%3D%20getLength%28array%29%3B%0A%20%20%20%20while%20%28low%20%3C%20high%29%20%7B%0A%20%20%20%20%20%20var%20mid%20%3D%20Math.floor%28%28low%20%2B%20high%29%20/%202%29%3B%0A%20%20%20%20%20%20if%20%28iteratee%28array%5Bmid%5D%29%20%3C%20value%29%20low%20%3D%20mid%20%2B%201%3B%20else%20high%20%3D%20mid%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20low%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generator%20function%20to%20create%20the%20indexOf%20and%20lastIndexOf%20functions.%0A%20%20var%20createIndexFinder%20%3D%20function%28dir%2C%20predicateFind%2C%20sortedIndex%29%20%7B%0A%20%20%20%20return%20function%28array%2C%20item%2C%20idx%29%20%7B%0A%20%20%20%20%20%20var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%0A%20%20%20%20%20%20if%20%28typeof%20idx%20%3D%3D%20%27number%27%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28dir%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20i%20%3D%20idx%20%3E%3D%200%20%3F%20idx%20%3A%20Math.max%28idx%20%2B%20length%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20length%20%3D%20idx%20%3E%3D%200%20%3F%20Math.min%28idx%20%2B%201%2C%20length%29%20%3A%20idx%20%2B%20length%20%2B%201%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28sortedIndex%20%26%26%20idx%20%26%26%20length%29%20%7B%0A%20%20%20%20%20%20%20%20idx%20%3D%20sortedIndex%28array%2C%20item%29%3B%0A%20%20%20%20%20%20%20%20return%20array%5Bidx%5D%20%3D%3D%3D%20item%20%3F%20idx%20%3A%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28item%20%21%3D%3D%20item%29%20%7B%0A%20%20%20%20%20%20%20%20idx%20%3D%20predicateFind%28slice.call%28array%2C%20i%2C%20length%29%2C%20_.isNaN%29%3B%0A%20%20%20%20%20%20%20%20return%20idx%20%3E%3D%200%20%3F%20idx%20%2B%20i%20%3A%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20for%20%28idx%20%3D%20dir%20%3E%200%20%3F%20i%20%3A%20length%20-%201%3B%20idx%20%3E%3D%200%20%26%26%20idx%20%3C%20length%3B%20idx%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28array%5Bidx%5D%20%3D%3D%3D%20item%29%20return%20idx%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20-1%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20position%20of%20the%20first%20occurrence%20of%20an%20item%20in%20an%20array%2C%0A%20%20//%20or%20-1%20if%20the%20item%20is%20not%20included%20in%20the%20array.%0A%20%20//%20If%20the%20array%20is%20large%20and%20already%20in%20sort%20order%2C%20pass%20%60true%60%0A%20%20//%20for%20%2A%2AisSorted%2A%2A%20to%20use%20binary%20search.%0A%20%20_.indexOf%20%3D%20createIndexFinder%281%2C%20_.findIndex%2C%20_.sortedIndex%29%3B%0A%20%20_.lastIndexOf%20%3D%20createIndexFinder%28-1%2C%20_.findLastIndex%29%3B%0A%0A%20%20//%20Generate%20an%20integer%20Array%20containing%20an%20arithmetic%20progression.%20A%20port%20of%0A%20%20//%20the%20native%20Python%20%60range%28%29%60%20function.%20See%0A%20%20//%20%5Bthe%20Python%20documentation%5D%28http%3A//docs.python.org/library/functions.html%23range%29.%0A%20%20_.range%20%3D%20function%28start%2C%20stop%2C%20step%29%20%7B%0A%20%20%20%20if%20%28stop%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20stop%20%3D%20start%20%7C%7C%200%3B%0A%20%20%20%20%20%20start%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21step%29%20%7B%0A%20%20%20%20%20%20step%20%3D%20stop%20%3C%20start%20%3F%20-1%20%3A%201%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20length%20%3D%20Math.max%28Math.ceil%28%28stop%20-%20start%29%20/%20step%29%2C%200%29%3B%0A%20%20%20%20var%20range%20%3D%20Array%28length%29%3B%0A%0A%20%20%20%20for%20%28var%20idx%20%3D%200%3B%20idx%20%3C%20length%3B%20idx%2B%2B%2C%20start%20%2B%3D%20step%29%20%7B%0A%20%20%20%20%20%20range%5Bidx%5D%20%3D%20start%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20range%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Chunk%20a%20single%20array%20into%20multiple%20arrays%2C%20each%20containing%20%60count%60%20or%20fewer%0A%20%20//%20items.%0A%20%20_.chunk%20%3D%20function%28array%2C%20count%29%20%7B%0A%20%20%20%20if%20%28count%20%3D%3D%20null%20%7C%7C%20count%20%3C%201%29%20return%20%5B%5D%3B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20i%20%3D%200%2C%20length%20%3D%20array.length%3B%0A%20%20%20%20while%20%28i%20%3C%20length%29%20%7B%0A%20%20%20%20%20%20result.push%28slice.call%28array%2C%20i%2C%20i%20%2B%3D%20count%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Function%20%28ahem%29%20Functions%0A%20%20//%20------------------%0A%0A%20%20//%20Determines%20whether%20to%20execute%20a%20function%20as%20a%20constructor%0A%20%20//%20or%20a%20normal%20function%20with%20the%20provided%20arguments.%0A%20%20var%20executeBound%20%3D%20function%28sourceFunc%2C%20boundFunc%2C%20context%2C%20callingContext%2C%20args%29%20%7B%0A%20%20%20%20if%20%28%21%28callingContext%20instanceof%20boundFunc%29%29%20return%20sourceFunc.apply%28context%2C%20args%29%3B%0A%20%20%20%20var%20self%20%3D%20baseCreate%28sourceFunc.prototype%29%3B%0A%20%20%20%20var%20result%20%3D%20sourceFunc.apply%28self%2C%20args%29%3B%0A%20%20%20%20if%20%28_.isObject%28result%29%29%20return%20result%3B%0A%20%20%20%20return%20self%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20function%20bound%20to%20a%20given%20object%20%28assigning%20%60this%60%2C%20and%20arguments%2C%0A%20%20//%20optionally%29.%20Delegates%20to%20%2A%2AECMAScript%205%2A%2A%27s%20native%20%60Function.bind%60%20if%0A%20%20//%20available.%0A%20%20_.bind%20%3D%20restArguments%28function%28func%2C%20context%2C%20args%29%20%7B%0A%20%20%20%20if%20%28%21_.isFunction%28func%29%29%20throw%20new%20TypeError%28%27Bind%20must%20be%20called%20on%20a%20function%27%29%3B%0A%20%20%20%20var%20bound%20%3D%20restArguments%28function%28callArgs%29%20%7B%0A%20%20%20%20%20%20return%20executeBound%28func%2C%20bound%2C%20context%2C%20this%2C%20args.concat%28callArgs%29%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20bound%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Partially%20apply%20a%20function%20by%20creating%20a%20version%20that%20has%20had%20some%20of%20its%0A%20%20//%20arguments%20pre-filled%2C%20without%20changing%20its%20dynamic%20%60this%60%20context.%20_%20acts%0A%20%20//%20as%20a%20placeholder%20by%20default%2C%20allowing%20any%20combination%20of%20arguments%20to%20be%0A%20%20//%20pre-filled.%20Set%20%60_.partial.placeholder%60%20for%20a%20custom%20placeholder%20argument.%0A%20%20_.partial%20%3D%20restArguments%28function%28func%2C%20boundArgs%29%20%7B%0A%20%20%20%20var%20placeholder%20%3D%20_.partial.placeholder%3B%0A%20%20%20%20var%20bound%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20position%20%3D%200%2C%20length%20%3D%20boundArgs.length%3B%0A%20%20%20%20%20%20var%20args%20%3D%20Array%28length%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20args%5Bi%5D%20%3D%20boundArgs%5Bi%5D%20%3D%3D%3D%20placeholder%20%3F%20arguments%5Bposition%2B%2B%5D%20%3A%20boundArgs%5Bi%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20while%20%28position%20%3C%20arguments.length%29%20args.push%28arguments%5Bposition%2B%2B%5D%29%3B%0A%20%20%20%20%20%20return%20executeBound%28func%2C%20bound%2C%20this%2C%20this%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20bound%3B%0A%20%20%7D%29%3B%0A%0A%20%20_.partial.placeholder%20%3D%20_%3B%0A%0A%20%20//%20Bind%20a%20number%20of%20an%20object%27s%20methods%20to%20that%20object.%20Remaining%20arguments%0A%20%20//%20are%20the%20method%20names%20to%20be%20bound.%20Useful%20for%20ensuring%20that%20all%20callbacks%0A%20%20//%20defined%20on%20an%20object%20belong%20to%20it.%0A%20%20_.bindAll%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20keys%20%3D%20flatten%28keys%2C%20false%2C%20false%29%3B%0A%20%20%20%20var%20index%20%3D%20keys.length%3B%0A%20%20%20%20if%20%28index%20%3C%201%29%20throw%20new%20Error%28%27bindAll%20must%20be%20passed%20function%20names%27%29%3B%0A%20%20%20%20while%20%28index--%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bindex%5D%3B%0A%20%20%20%20%20%20obj%5Bkey%5D%20%3D%20_.bind%28obj%5Bkey%5D%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%3B%0A%0A%20%20//%20Memoize%20an%20expensive%20function%20by%20storing%20its%20results.%0A%20%20_.memoize%20%3D%20function%28func%2C%20hasher%29%20%7B%0A%20%20%20%20var%20memoize%20%3D%20function%28key%29%20%7B%0A%20%20%20%20%20%20var%20cache%20%3D%20memoize.cache%3B%0A%20%20%20%20%20%20var%20address%20%3D%20%27%27%20%2B%20%28hasher%20%3F%20hasher.apply%28this%2C%20arguments%29%20%3A%20key%29%3B%0A%20%20%20%20%20%20if%20%28%21has%28cache%2C%20address%29%29%20cache%5Baddress%5D%20%3D%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20return%20cache%5Baddress%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20memoize.cache%20%3D%20%7B%7D%3B%0A%20%20%20%20return%20memoize%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Delays%20a%20function%20for%20the%20given%20number%20of%20milliseconds%2C%20and%20then%20calls%0A%20%20//%20it%20with%20the%20arguments%20supplied.%0A%20%20_.delay%20%3D%20restArguments%28function%28func%2C%20wait%2C%20args%29%20%7B%0A%20%20%20%20return%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20return%20func.apply%28null%2C%20args%29%3B%0A%20%20%20%20%7D%2C%20wait%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Defers%20a%20function%2C%20scheduling%20it%20to%20run%20after%20the%20current%20call%20stack%20has%0A%20%20//%20cleared.%0A%20%20_.defer%20%3D%20_.partial%28_.delay%2C%20_%2C%201%29%3B%0A%0A%20%20//%20Returns%20a%20function%2C%20that%2C%20when%20invoked%2C%20will%20only%20be%20triggered%20at%20most%20once%0A%20%20//%20during%20a%20given%20window%20of%20time.%20Normally%2C%20the%20throttled%20function%20will%20run%0A%20%20//%20as%20much%20as%20it%20can%2C%20without%20ever%20going%20more%20than%20once%20per%20%60wait%60%20duration%3B%0A%20%20//%20but%20if%20you%27d%20like%20to%20disable%20the%20execution%20on%20the%20leading%20edge%2C%20pass%0A%20%20//%20%60%7Bleading%3A%20false%7D%60.%20To%20disable%20execution%20on%20the%20trailing%20edge%2C%20ditto.%0A%20%20_.throttle%20%3D%20function%28func%2C%20wait%2C%20options%29%20%7B%0A%20%20%20%20var%20timeout%2C%20context%2C%20args%2C%20result%3B%0A%20%20%20%20var%20previous%20%3D%200%3B%0A%20%20%20%20if%20%28%21options%29%20options%20%3D%20%7B%7D%3B%0A%0A%20%20%20%20var%20later%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20previous%20%3D%20options.leading%20%3D%3D%3D%20false%20%3F%200%20%3A%20_.now%28%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20throttled%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20now%20%3D%20_.now%28%29%3B%0A%20%20%20%20%20%20if%20%28%21previous%20%26%26%20options.leading%20%3D%3D%3D%20false%29%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20var%20remaining%20%3D%20wait%20-%20%28now%20-%20previous%29%3B%0A%20%20%20%20%20%20context%20%3D%20this%3B%0A%20%20%20%20%20%20args%20%3D%20arguments%3B%0A%20%20%20%20%20%20if%20%28remaining%20%3C%3D%200%20%7C%7C%20remaining%20%3E%20wait%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28timeout%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20%20%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21timeout%20%26%26%20options.trailing%20%21%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20remaining%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20throttled.cancel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20previous%20%3D%200%3B%0A%20%20%20%20%20%20timeout%20%3D%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20throttled%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%2C%20that%2C%20as%20long%20as%20it%20continues%20to%20be%20invoked%2C%20will%20not%0A%20%20//%20be%20triggered.%20The%20function%20will%20be%20called%20after%20it%20stops%20being%20called%20for%0A%20%20//%20N%20milliseconds.%20If%20%60immediate%60%20is%20passed%2C%20trigger%20the%20function%20on%20the%0A%20%20//%20leading%20edge%2C%20instead%20of%20the%20trailing.%0A%20%20_.debounce%20%3D%20function%28func%2C%20wait%2C%20immediate%29%20%7B%0A%20%20%20%20var%20timeout%2C%20result%3B%0A%0A%20%20%20%20var%20later%20%3D%20function%28context%2C%20args%29%20%7B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20if%20%28args%29%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20debounced%20%3D%20restArguments%28function%28args%29%20%7B%0A%20%20%20%20%20%20if%20%28timeout%29%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20if%20%28immediate%29%20%7B%0A%20%20%20%20%20%20%20%20var%20callNow%20%3D%20%21timeout%3B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20wait%29%3B%0A%20%20%20%20%20%20%20%20if%20%28callNow%29%20result%20%3D%20func.apply%28this%2C%20args%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20_.delay%28later%2C%20wait%2C%20this%2C%20args%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20debounced.cancel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20debounced%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20first%20function%20passed%20as%20an%20argument%20to%20the%20second%2C%0A%20%20//%20allowing%20you%20to%20adjust%20arguments%2C%20run%20code%20before%20and%20after%2C%20and%0A%20%20//%20conditionally%20execute%20the%20original%20function.%0A%20%20_.wrap%20%3D%20function%28func%2C%20wrapper%29%20%7B%0A%20%20%20%20return%20_.partial%28wrapper%2C%20func%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20negated%20version%20of%20the%20passed-in%20predicate.%0A%20%20_.negate%20%3D%20function%28predicate%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20%21predicate.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20is%20the%20composition%20of%20a%20list%20of%20functions%2C%20each%0A%20%20//%20consuming%20the%20return%20value%20of%20the%20function%20that%20follows.%0A%20%20_.compose%20%3D%20function%28%29%20%7B%0A%20%20%20%20var%20args%20%3D%20arguments%3B%0A%20%20%20%20var%20start%20%3D%20args.length%20-%201%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20i%20%3D%20start%3B%0A%20%20%20%20%20%20var%20result%20%3D%20args%5Bstart%5D.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20while%20%28i--%29%20result%20%3D%20args%5Bi%5D.call%28this%2C%20result%29%3B%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20only%20be%20executed%20on%20and%20after%20the%20Nth%20call.%0A%20%20_.after%20%3D%20function%28times%2C%20func%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28--times%20%3C%201%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20only%20be%20executed%20up%20to%20%28but%20not%20including%29%20the%20Nth%20call.%0A%20%20_.before%20%3D%20function%28times%2C%20func%29%20%7B%0A%20%20%20%20var%20memo%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28--times%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20memo%20%3D%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28times%20%3C%3D%201%29%20func%20%3D%20null%3B%0A%20%20%20%20%20%20return%20memo%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20be%20executed%20at%20most%20one%20time%2C%20no%20matter%20how%0A%20%20//%20often%20you%20call%20it.%20Useful%20for%20lazy%20initialization.%0A%20%20_.once%20%3D%20_.partial%28_.before%2C%202%29%3B%0A%0A%20%20_.restArguments%20%3D%20restArguments%3B%0A%0A%20%20//%20Object%20Functions%0A%20%20//%20----------------%0A%0A%20%20//%20Keys%20in%20IE%20%3C%209%20that%20won%27t%20be%20iterated%20by%20%60for%20key%20in%20...%60%20and%20thus%20missed.%0A%20%20var%20hasEnumBug%20%3D%20%21%7BtoString%3A%20null%7D.propertyIsEnumerable%28%27toString%27%29%3B%0A%20%20var%20nonEnumerableProps%20%3D%20%5B%27valueOf%27%2C%20%27isPrototypeOf%27%2C%20%27toString%27%2C%0A%20%20%20%20%27propertyIsEnumerable%27%2C%20%27hasOwnProperty%27%2C%20%27toLocaleString%27%5D%3B%0A%0A%20%20var%20collectNonEnumProps%20%3D%20function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20nonEnumIdx%20%3D%20nonEnumerableProps.length%3B%0A%20%20%20%20var%20constructor%20%3D%20obj.constructor%3B%0A%20%20%20%20var%20proto%20%3D%20_.isFunction%28constructor%29%20%26%26%20constructor.prototype%20%7C%7C%20ObjProto%3B%0A%0A%20%20%20%20//%20Constructor%20is%20a%20special%20case.%0A%20%20%20%20var%20prop%20%3D%20%27constructor%27%3B%0A%20%20%20%20if%20%28has%28obj%2C%20prop%29%20%26%26%20%21_.contains%28keys%2C%20prop%29%29%20keys.push%28prop%29%3B%0A%0A%20%20%20%20while%20%28nonEnumIdx--%29%20%7B%0A%20%20%20%20%20%20prop%20%3D%20nonEnumerableProps%5BnonEnumIdx%5D%3B%0A%20%20%20%20%20%20if%20%28prop%20in%20obj%20%26%26%20obj%5Bprop%5D%20%21%3D%3D%20proto%5Bprop%5D%20%26%26%20%21_.contains%28keys%2C%20prop%29%29%20%7B%0A%20%20%20%20%20%20%20%20keys.push%28prop%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20the%20names%20of%20an%20object%27s%20own%20properties.%0A%20%20//%20Delegates%20to%20%2A%2AECMAScript%205%2A%2A%27s%20native%20%60Object.keys%60.%0A%20%20_.keys%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28nativeKeys%29%20return%20nativeKeys%28obj%29%3B%0A%20%20%20%20var%20keys%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20if%20%28has%28obj%2C%20key%29%29%20keys.push%28key%29%3B%0A%20%20%20%20//%20Ahem%2C%20IE%20%3C%209.%0A%20%20%20%20if%20%28hasEnumBug%29%20collectNonEnumProps%28obj%2C%20keys%29%3B%0A%20%20%20%20return%20keys%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20all%20the%20property%20names%20of%20an%20object.%0A%20%20_.allKeys%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20%5B%5D%3B%0A%20%20%20%20var%20keys%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20keys.push%28key%29%3B%0A%20%20%20%20//%20Ahem%2C%20IE%20%3C%209.%0A%20%20%20%20if%20%28hasEnumBug%29%20collectNonEnumProps%28obj%2C%20keys%29%3B%0A%20%20%20%20return%20keys%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20the%20values%20of%20an%20object%27s%20properties.%0A%20%20_.values%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20keys.length%3B%0A%20%20%20%20var%20values%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20values%5Bi%5D%20%3D%20obj%5Bkeys%5Bi%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20values%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20results%20of%20applying%20the%20iteratee%20to%20each%20element%20of%20the%20object.%0A%20%20//%20In%20contrast%20to%20_.map%20it%20returns%20an%20object.%0A%20%20_.mapObject%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20keys.length%2C%0A%20%20%20%20%20%20%20%20results%20%3D%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%5Bindex%5D%3B%0A%20%20%20%20%20%20results%5BcurrentKey%5D%20%3D%20iteratee%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convert%20an%20object%20into%20a%20list%20of%20%60%5Bkey%2C%20value%5D%60%20pairs.%0A%20%20//%20The%20opposite%20of%20_.object.%0A%20%20_.pairs%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20keys.length%3B%0A%20%20%20%20var%20pairs%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20pairs%5Bi%5D%20%3D%20%5Bkeys%5Bi%5D%2C%20obj%5Bkeys%5Bi%5D%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20pairs%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invert%20the%20keys%20and%20values%20of%20an%20object.%20The%20values%20must%20be%20serializable.%0A%20%20_.invert%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20result%5Bobj%5Bkeys%5Bi%5D%5D%5D%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20sorted%20list%20of%20the%20function%20names%20available%20on%20the%20object.%0A%20%20//%20Aliased%20as%20%60methods%60.%0A%20%20_.functions%20%3D%20_.methods%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20names%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20%7B%0A%20%20%20%20%20%20if%20%28_.isFunction%28obj%5Bkey%5D%29%29%20names.push%28key%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20names.sort%28%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20for%20creating%20assigner%20functions.%0A%20%20var%20createAssigner%20%3D%20function%28keysFunc%2C%20defaults%29%20%7B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20var%20length%20%3D%20arguments.length%3B%0A%20%20%20%20%20%20if%20%28defaults%29%20obj%20%3D%20Object%28obj%29%3B%0A%20%20%20%20%20%20if%20%28length%20%3C%202%20%7C%7C%20obj%20%3D%3D%20null%29%20return%20obj%3B%0A%20%20%20%20%20%20for%20%28var%20index%20%3D%201%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20var%20source%20%3D%20arguments%5Bindex%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20keys%20%3D%20keysFunc%28source%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20l%20%3D%20keys.length%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20l%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21defaults%20%7C%7C%20obj%5Bkey%5D%20%3D%3D%3D%20void%200%29%20obj%5Bkey%5D%20%3D%20source%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20obj%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Extend%20a%20given%20object%20with%20all%20the%20properties%20in%20passed-in%20object%28s%29.%0A%20%20_.extend%20%3D%20createAssigner%28_.allKeys%29%3B%0A%0A%20%20//%20Assigns%20a%20given%20object%20with%20all%20the%20own%20properties%20in%20the%20passed-in%20object%28s%29.%0A%20%20//%20%28https%3A//developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign%29%0A%20%20_.extendOwn%20%3D%20_.assign%20%3D%20createAssigner%28_.keys%29%3B%0A%0A%20%20//%20Returns%20the%20first%20key%20on%20an%20object%20that%20passes%20a%20predicate%20test.%0A%20%20_.findKey%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%2C%20key%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28predicate%28obj%5Bkey%5D%2C%20key%2C%20obj%29%29%20return%20key%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20pick%20helper%20function%20to%20determine%20if%20%60obj%60%20has%20key%20%60key%60.%0A%20%20var%20keyInObj%20%3D%20function%28value%2C%20key%2C%20obj%29%20%7B%0A%20%20%20%20return%20key%20in%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20copy%20of%20the%20object%20only%20containing%20the%20whitelisted%20properties.%0A%20%20_.pick%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%2C%20iteratee%20%3D%20keys%5B0%5D%3B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20result%3B%0A%20%20%20%20if%20%28_.isFunction%28iteratee%29%29%20%7B%0A%20%20%20%20%20%20if%20%28keys.length%20%3E%201%29%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20keys%5B1%5D%29%3B%0A%20%20%20%20%20%20keys%20%3D%20_.allKeys%28obj%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20keyInObj%3B%0A%20%20%20%20%20%20keys%20%3D%20flatten%28keys%2C%20false%2C%20false%29%3B%0A%20%20%20%20%20%20obj%20%3D%20Object%28obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20var%20value%20%3D%20obj%5Bkey%5D%3B%0A%20%20%20%20%20%20if%20%28iteratee%28value%2C%20key%2C%20obj%29%29%20result%5Bkey%5D%20%3D%20value%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Return%20a%20copy%20of%20the%20object%20without%20the%20blacklisted%20properties.%0A%20%20_.omit%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20iteratee%20%3D%20keys%5B0%5D%2C%20context%3B%0A%20%20%20%20if%20%28_.isFunction%28iteratee%29%29%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20_.negate%28iteratee%29%3B%0A%20%20%20%20%20%20if%20%28keys.length%20%3E%201%29%20context%20%3D%20keys%5B1%5D%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20keys%20%3D%20_.map%28flatten%28keys%2C%20false%2C%20false%29%2C%20String%29%3B%0A%20%20%20%20%20%20iteratee%20%3D%20function%28value%2C%20key%29%20%7B%0A%20%20%20%20%20%20%20%20return%20%21_.contains%28keys%2C%20key%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20_.pick%28obj%2C%20iteratee%2C%20context%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Fill%20in%20a%20given%20object%20with%20default%20properties.%0A%20%20_.defaults%20%3D%20createAssigner%28_.allKeys%2C%20true%29%3B%0A%0A%20%20//%20Creates%20an%20object%20that%20inherits%20from%20the%20given%20prototype%20object.%0A%20%20//%20If%20additional%20properties%20are%20provided%20then%20they%20will%20be%20added%20to%20the%0A%20%20//%20created%20object.%0A%20%20_.create%20%3D%20function%28prototype%2C%20props%29%20%7B%0A%20%20%20%20var%20result%20%3D%20baseCreate%28prototype%29%3B%0A%20%20%20%20if%20%28props%29%20_.extendOwn%28result%2C%20props%29%3B%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20%28shallow-cloned%29%20duplicate%20of%20an%20object.%0A%20%20_.clone%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20obj%3B%0A%20%20%20%20return%20_.isArray%28obj%29%20%3F%20obj.slice%28%29%20%3A%20_.extend%28%7B%7D%2C%20obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invokes%20interceptor%20with%20the%20obj%2C%20and%20then%20returns%20obj.%0A%20%20//%20The%20primary%20purpose%20of%20this%20method%20is%20to%20%22tap%20into%22%20a%20method%20chain%2C%20in%0A%20%20//%20order%20to%20perform%20operations%20on%20intermediate%20results%20within%20the%20chain.%0A%20%20_.tap%20%3D%20function%28obj%2C%20interceptor%29%20%7B%0A%20%20%20%20interceptor%28obj%29%3B%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20whether%20an%20object%20has%20a%20given%20set%20of%20%60key%3Avalue%60%20pairs.%0A%20%20_.isMatch%20%3D%20function%28object%2C%20attrs%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28attrs%29%2C%20length%20%3D%20keys.length%3B%0A%20%20%20%20if%20%28object%20%3D%3D%20null%29%20return%20%21length%3B%0A%20%20%20%20var%20obj%20%3D%20Object%28object%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28attrs%5Bkey%5D%20%21%3D%3D%20obj%5Bkey%5D%20%7C%7C%20%21%28key%20in%20obj%29%29%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%0A%20%20//%20Internal%20recursive%20comparison%20function%20for%20%60isEqual%60.%0A%20%20var%20eq%2C%20deepEq%3B%0A%20%20eq%20%3D%20function%28a%2C%20b%2C%20aStack%2C%20bStack%29%20%7B%0A%20%20%20%20//%20Identical%20objects%20are%20equal.%20%600%20%3D%3D%3D%20-0%60%2C%20but%20they%20aren%27t%20identical.%0A%20%20%20%20//%20See%20the%20%5BHarmony%20%60egal%60%20proposal%5D%28http%3A//wiki.ecmascript.org/doku.php%3Fid%3Dharmony%3Aegal%29.%0A%20%20%20%20if%20%28a%20%3D%3D%3D%20b%29%20return%20a%20%21%3D%3D%200%20%7C%7C%201%20/%20a%20%3D%3D%3D%201%20/%20b%3B%0A%20%20%20%20//%20%60null%60%20or%20%60undefined%60%20only%20equal%20to%20itself%20%28strict%20comparison%29.%0A%20%20%20%20if%20%28a%20%3D%3D%20null%20%7C%7C%20b%20%3D%3D%20null%29%20return%20false%3B%0A%20%20%20%20//%20%60NaN%60s%20are%20equivalent%2C%20but%20non-reflexive.%0A%20%20%20%20if%20%28a%20%21%3D%3D%20a%29%20return%20b%20%21%3D%3D%20b%3B%0A%20%20%20%20//%20Exhaust%20primitive%20checks%0A%20%20%20%20var%20type%20%3D%20typeof%20a%3B%0A%20%20%20%20if%20%28type%20%21%3D%3D%20%27function%27%20%26%26%20type%20%21%3D%3D%20%27object%27%20%26%26%20typeof%20b%20%21%3D%20%27object%27%29%20return%20false%3B%0A%20%20%20%20return%20deepEq%28a%2C%20b%2C%20aStack%2C%20bStack%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20recursive%20comparison%20function%20for%20%60isEqual%60.%0A%20%20deepEq%20%3D%20function%28a%2C%20b%2C%20aStack%2C%20bStack%29%20%7B%0A%20%20%20%20//%20Unwrap%20any%20wrapped%20objects.%0A%20%20%20%20if%20%28a%20instanceof%20_%29%20a%20%3D%20a._wrapped%3B%0A%20%20%20%20if%20%28b%20instanceof%20_%29%20b%20%3D%20b._wrapped%3B%0A%20%20%20%20//%20Compare%20%60%5B%5BClass%5D%5D%60%20names.%0A%20%20%20%20var%20className%20%3D%20toString.call%28a%29%3B%0A%20%20%20%20if%20%28className%20%21%3D%3D%20toString.call%28b%29%29%20return%20false%3B%0A%20%20%20%20switch%20%28className%29%20%7B%0A%20%20%20%20%20%20//%20Strings%2C%20numbers%2C%20regular%20expressions%2C%20dates%2C%20and%20booleans%20are%20compared%20by%20value.%0A%20%20%20%20%20%20case%20%27%5Bobject%20RegExp%5D%27%3A%0A%20%20%20%20%20%20//%20RegExps%20are%20coerced%20to%20strings%20for%20comparison%20%28Note%3A%20%27%27%20%2B%20/a/i%20%3D%3D%3D%20%27/a/i%27%29%0A%20%20%20%20%20%20case%20%27%5Bobject%20String%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20Primitives%20and%20their%20corresponding%20object%20wrappers%20are%20equivalent%3B%20thus%2C%20%60%225%22%60%20is%0A%20%20%20%20%20%20%20%20//%20equivalent%20to%20%60new%20String%28%225%22%29%60.%0A%20%20%20%20%20%20%20%20return%20%27%27%20%2B%20a%20%3D%3D%3D%20%27%27%20%2B%20b%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Number%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20%60NaN%60s%20are%20equivalent%2C%20but%20non-reflexive.%0A%20%20%20%20%20%20%20%20//%20Object%28NaN%29%20is%20equivalent%20to%20NaN.%0A%20%20%20%20%20%20%20%20if%20%28%2Ba%20%21%3D%3D%20%2Ba%29%20return%20%2Bb%20%21%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20%20%20//%20An%20%60egal%60%20comparison%20is%20performed%20for%20other%20numeric%20values.%0A%20%20%20%20%20%20%20%20return%20%2Ba%20%3D%3D%3D%200%20%3F%201%20/%20%2Ba%20%3D%3D%3D%201%20/%20b%20%3A%20%2Ba%20%3D%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Date%5D%27%3A%0A%20%20%20%20%20%20case%20%27%5Bobject%20Boolean%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20Coerce%20dates%20and%20booleans%20to%20numeric%20primitive%20values.%20Dates%20are%20compared%20by%20their%0A%20%20%20%20%20%20%20%20//%20millisecond%20representations.%20Note%20that%20invalid%20dates%20with%20millisecond%20representations%0A%20%20%20%20%20%20%20%20//%20of%20%60NaN%60%20are%20not%20equivalent.%0A%20%20%20%20%20%20%20%20return%20%2Ba%20%3D%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Symbol%5D%27%3A%0A%20%20%20%20%20%20%20%20return%20SymbolProto.valueOf.call%28a%29%20%3D%3D%3D%20SymbolProto.valueOf.call%28b%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20areArrays%20%3D%20className%20%3D%3D%3D%20%27%5Bobject%20Array%5D%27%3B%0A%20%20%20%20if%20%28%21areArrays%29%20%7B%0A%20%20%20%20%20%20if%20%28typeof%20a%20%21%3D%20%27object%27%20%7C%7C%20typeof%20b%20%21%3D%20%27object%27%29%20return%20false%3B%0A%0A%20%20%20%20%20%20//%20Objects%20with%20different%20constructors%20are%20not%20equivalent%2C%20but%20%60Object%60s%20or%20%60Array%60s%0A%20%20%20%20%20%20//%20from%20different%20frames%20are.%0A%20%20%20%20%20%20var%20aCtor%20%3D%20a.constructor%2C%20bCtor%20%3D%20b.constructor%3B%0A%20%20%20%20%20%20if%20%28aCtor%20%21%3D%3D%20bCtor%20%26%26%20%21%28_.isFunction%28aCtor%29%20%26%26%20aCtor%20instanceof%20aCtor%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_.isFunction%28bCtor%29%20%26%26%20bCtor%20instanceof%20bCtor%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20%28%27constructor%27%20in%20a%20%26%26%20%27constructor%27%20in%20b%29%29%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20Assume%20equality%20for%20cyclic%20structures.%20The%20algorithm%20for%20detecting%20cyclic%0A%20%20%20%20//%20structures%20is%20adapted%20from%20ES%205.1%20section%2015.12.3%2C%20abstract%20operation%20%60JO%60.%0A%0A%20%20%20%20//%20Initializing%20stack%20of%20traversed%20objects.%0A%20%20%20%20//%20It%27s%20done%20here%20since%20we%20only%20need%20them%20for%20objects%20and%20arrays%20comparison.%0A%20%20%20%20aStack%20%3D%20aStack%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20bStack%20%3D%20bStack%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20length%20%3D%20aStack.length%3B%0A%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20//%20Linear%20search.%20Performance%20is%20inversely%20proportional%20to%20the%20number%20of%0A%20%20%20%20%20%20//%20unique%20nested%20structures.%0A%20%20%20%20%20%20if%20%28aStack%5Blength%5D%20%3D%3D%3D%20a%29%20return%20bStack%5Blength%5D%20%3D%3D%3D%20b%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20Add%20the%20first%20object%20to%20the%20stack%20of%20traversed%20objects.%0A%20%20%20%20aStack.push%28a%29%3B%0A%20%20%20%20bStack.push%28b%29%3B%0A%0A%20%20%20%20//%20Recursively%20compare%20objects%20and%20arrays.%0A%20%20%20%20if%20%28areArrays%29%20%7B%0A%20%20%20%20%20%20//%20Compare%20array%20lengths%20to%20determine%20if%20a%20deep%20comparison%20is%20necessary.%0A%20%20%20%20%20%20length%20%3D%20a.length%3B%0A%20%20%20%20%20%20if%20%28length%20%21%3D%3D%20b.length%29%20return%20false%3B%0A%20%20%20%20%20%20//%20Deep%20compare%20the%20contents%2C%20ignoring%20non-numeric%20properties.%0A%20%20%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21eq%28a%5Blength%5D%2C%20b%5Blength%5D%2C%20aStack%2C%20bStack%29%29%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20//%20Deep%20compare%20objects.%0A%20%20%20%20%20%20var%20keys%20%3D%20_.keys%28a%29%2C%20key%3B%0A%20%20%20%20%20%20length%20%3D%20keys.length%3B%0A%20%20%20%20%20%20//%20Ensure%20that%20both%20objects%20contain%20the%20same%20number%20of%20properties%20before%20comparing%20deep%20equality.%0A%20%20%20%20%20%20if%20%28_.keys%28b%29.length%20%21%3D%3D%20length%29%20return%20false%3B%0A%20%20%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Deep%20compare%20each%20member%0A%20%20%20%20%20%20%20%20key%20%3D%20keys%5Blength%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28%21%28has%28b%2C%20key%29%20%26%26%20eq%28a%5Bkey%5D%2C%20b%5Bkey%5D%2C%20aStack%2C%20bStack%29%29%29%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20Remove%20the%20first%20object%20from%20the%20stack%20of%20traversed%20objects.%0A%20%20%20%20aStack.pop%28%29%3B%0A%20%20%20%20bStack.pop%28%29%3B%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Perform%20a%20deep%20comparison%20to%20check%20if%20two%20objects%20are%20equal.%0A%20%20_.isEqual%20%3D%20function%28a%2C%20b%29%20%7B%0A%20%20%20%20return%20eq%28a%2C%20b%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20array%2C%20string%2C%20or%20object%20empty%3F%0A%20%20//%20An%20%22empty%22%20object%20has%20no%20enumerable%20own-properties.%0A%20%20_.isEmpty%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20true%3B%0A%20%20%20%20if%20%28isArrayLike%28obj%29%20%26%26%20%28_.isArray%28obj%29%20%7C%7C%20_.isString%28obj%29%20%7C%7C%20_.isArguments%28obj%29%29%29%20return%20obj.length%20%3D%3D%3D%200%3B%0A%20%20%20%20return%20_.keys%28obj%29.length%20%3D%3D%3D%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20a%20DOM%20element%3F%0A%20%20_.isElement%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20%21%21%28obj%20%26%26%20obj.nodeType%20%3D%3D%3D%201%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20an%20array%3F%0A%20%20//%20Delegates%20to%20ECMA5%27s%20native%20Array.isArray%0A%20%20_.isArray%20%3D%20nativeIsArray%20%7C%7C%20function%28obj%29%20%7B%0A%20%20%20%20return%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20Array%5D%27%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20variable%20an%20object%3F%0A%20%20_.isObject%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20type%20%3D%20typeof%20obj%3B%0A%20%20%20%20return%20type%20%3D%3D%3D%20%27function%27%20%7C%7C%20type%20%3D%3D%3D%20%27object%27%20%26%26%20%21%21obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20some%20isType%20methods%3A%20isArguments%2C%20isFunction%2C%20isString%2C%20isNumber%2C%20isDate%2C%20isRegExp%2C%20isError%2C%20isMap%2C%20isWeakMap%2C%20isSet%2C%20isWeakSet.%0A%20%20_.each%28%5B%27Arguments%27%2C%20%27Function%27%2C%20%27String%27%2C%20%27Number%27%2C%20%27Date%27%2C%20%27RegExp%27%2C%20%27Error%27%2C%20%27Symbol%27%2C%20%27Map%27%2C%20%27WeakMap%27%2C%20%27Set%27%2C%20%27WeakSet%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20_%5B%27is%27%20%2B%20name%5D%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20%27%20%2B%20name%20%2B%20%27%5D%27%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Define%20a%20fallback%20version%20of%20the%20method%20in%20browsers%20%28ahem%2C%20IE%20%3C%209%29%2C%20where%0A%20%20//%20there%20isn%27t%20any%20inspectable%20%22Arguments%22%20type.%0A%20%20if%20%28%21_.isArguments%28arguments%29%29%20%7B%0A%20%20%20%20_.isArguments%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20has%28obj%2C%20%27callee%27%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20//%20Optimize%20%60isFunction%60%20if%20appropriate.%20Work%20around%20some%20typeof%20bugs%20in%20old%20v8%2C%0A%20%20//%20IE%2011%20%28%231621%29%2C%20Safari%208%20%28%231929%29%2C%20and%20PhantomJS%20%28%232236%29.%0A%20%20var%20nodelist%20%3D%20root.document%20%26%26%20root.document.childNodes%3B%0A%20%20if%20%28typeof%20/./%20%21%3D%20%27function%27%20%26%26%20typeof%20Int8Array%20%21%3D%20%27object%27%20%26%26%20typeof%20nodelist%20%21%3D%20%27function%27%29%20%7B%0A%20%20%20%20_.isFunction%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20typeof%20obj%20%3D%3D%20%27function%27%20%7C%7C%20false%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20//%20Is%20a%20given%20object%20a%20finite%20number%3F%0A%20%20_.isFinite%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20%21_.isSymbol%28obj%29%20%26%26%20isFinite%28obj%29%20%26%26%20%21isNaN%28parseFloat%28obj%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20the%20given%20value%20%60NaN%60%3F%0A%20%20_.isNaN%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20_.isNumber%28obj%29%20%26%26%20isNaN%28obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20a%20boolean%3F%0A%20%20_.isBoolean%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20true%20%7C%7C%20obj%20%3D%3D%3D%20false%20%7C%7C%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20Boolean%5D%27%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20equal%20to%20null%3F%0A%20%20_.isNull%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20null%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20variable%20undefined%3F%0A%20%20_.isUndefined%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20void%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Shortcut%20function%20for%20checking%20if%20an%20object%20has%20a%20given%20property%20directly%0A%20%20//%20on%20itself%20%28in%20other%20words%2C%20not%20on%20a%20prototype%29.%0A%20%20_.has%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20return%20has%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20path%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28obj%20%3D%3D%20null%20%7C%7C%20%21hasOwnProperty.call%28obj%2C%20key%29%29%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20obj%20%3D%20obj%5Bkey%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20%21%21length%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Utility%20Functions%0A%20%20//%20-----------------%0A%0A%20%20//%20Run%20Underscore.js%20in%20%2AnoConflict%2A%20mode%2C%20returning%20the%20%60_%60%20variable%20to%20its%0A%20%20//%20previous%20owner.%20Returns%20a%20reference%20to%20the%20Underscore%20object.%0A%20%20_.noConflict%20%3D%20function%28%29%20%7B%0A%20%20%20%20root._%20%3D%20previousUnderscore%3B%0A%20%20%20%20return%20this%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Keep%20the%20identity%20function%20around%20for%20default%20iteratees.%0A%20%20_.identity%20%3D%20function%28value%29%20%7B%0A%20%20%20%20return%20value%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Predicate-generating%20functions.%20Often%20useful%20outside%20of%20Underscore.%0A%20%20_.constant%20%3D%20function%28value%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20_.noop%20%3D%20function%28%29%7B%7D%3B%0A%0A%20%20//%20Creates%20a%20function%20that%2C%20when%20passed%20an%20object%2C%20will%20traverse%20that%20object%E2%80%99s%0A%20%20//%20properties%20down%20the%20given%20%60path%60%2C%20specified%20as%20an%20array%20of%20keys%20or%20indexes.%0A%20%20_.property%20%3D%20function%28path%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20return%20shallowProperty%28path%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20deepGet%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generates%20a%20function%20for%20a%20given%20object%20that%20returns%20a%20given%20property.%0A%20%20_.propertyOf%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20return%20function%28%29%7B%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28path%29%20%7B%0A%20%20%20%20%20%20return%20%21_.isArray%28path%29%20%3F%20obj%5Bpath%5D%20%3A%20deepGet%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20predicate%20for%20checking%20whether%20an%20object%20has%20a%20given%20set%20of%0A%20%20//%20%60key%3Avalue%60%20pairs.%0A%20%20_.matcher%20%3D%20_.matches%20%3D%20function%28attrs%29%20%7B%0A%20%20%20%20attrs%20%3D%20_.extendOwn%28%7B%7D%2C%20attrs%29%3B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20_.isMatch%28obj%2C%20attrs%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Run%20a%20function%20%2A%2An%2A%2A%20times.%0A%20%20_.times%20%3D%20function%28n%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20accum%20%3D%20Array%28Math.max%280%2C%20n%29%29%3B%0A%20%20%20%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20context%2C%201%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20n%3B%20i%2B%2B%29%20accum%5Bi%5D%20%3D%20iteratee%28i%29%3B%0A%20%20%20%20return%20accum%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20random%20integer%20between%20min%20and%20max%20%28inclusive%29.%0A%20%20_.random%20%3D%20function%28min%2C%20max%29%20%7B%0A%20%20%20%20if%20%28max%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20max%20%3D%20min%3B%0A%20%20%20%20%20%20min%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20min%20%2B%20Math.floor%28Math.random%28%29%20%2A%20%28max%20-%20min%20%2B%201%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20A%20%28possibly%20faster%29%20way%20to%20get%20the%20current%20timestamp%20as%20an%20integer.%0A%20%20_.now%20%3D%20Date.now%20%7C%7C%20function%28%29%20%7B%0A%20%20%20%20return%20new%20Date%28%29.getTime%28%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20List%20of%20HTML%20entities%20for%20escaping.%0A%20%20var%20escapeMap%20%3D%20%7B%0A%20%20%20%20%27%26%27%3A%20%27%26amp%3B%27%2C%0A%20%20%20%20%27%3C%27%3A%20%27%26lt%3B%27%2C%0A%20%20%20%20%27%3E%27%3A%20%27%26gt%3B%27%2C%0A%20%20%20%20%27%22%27%3A%20%27%26quot%3B%27%2C%0A%20%20%20%20%22%27%22%3A%20%27%26%23x27%3B%27%2C%0A%20%20%20%20%27%60%27%3A%20%27%26%23x60%3B%27%0A%20%20%7D%3B%0A%20%20var%20unescapeMap%20%3D%20_.invert%28escapeMap%29%3B%0A%0A%20%20//%20Functions%20for%20escaping%20and%20unescaping%20strings%20to/from%20HTML%20interpolation.%0A%20%20var%20createEscaper%20%3D%20function%28map%29%20%7B%0A%20%20%20%20var%20escaper%20%3D%20function%28match%29%20%7B%0A%20%20%20%20%20%20return%20map%5Bmatch%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20//%20Regexes%20for%20identifying%20a%20key%20that%20needs%20to%20be%20escaped.%0A%20%20%20%20var%20source%20%3D%20%27%28%3F%3A%27%20%2B%20_.keys%28map%29.join%28%27%7C%27%29%20%2B%20%27%29%27%3B%0A%20%20%20%20var%20testRegexp%20%3D%20RegExp%28source%29%3B%0A%20%20%20%20var%20replaceRegexp%20%3D%20RegExp%28source%2C%20%27g%27%29%3B%0A%20%20%20%20return%20function%28string%29%20%7B%0A%20%20%20%20%20%20string%20%3D%20string%20%3D%3D%20null%20%3F%20%27%27%20%3A%20%27%27%20%2B%20string%3B%0A%20%20%20%20%20%20return%20testRegexp.test%28string%29%20%3F%20string.replace%28replaceRegexp%2C%20escaper%29%20%3A%20string%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%20%20_.escape%20%3D%20createEscaper%28escapeMap%29%3B%0A%20%20_.unescape%20%3D%20createEscaper%28unescapeMap%29%3B%0A%0A%20%20//%20Traverses%20the%20children%20of%20%60obj%60%20along%20%60path%60.%20If%20a%20child%20is%20a%20function%2C%20it%0A%20%20//%20is%20invoked%20with%20its%20parent%20as%20context.%20Returns%20the%20value%20of%20the%20final%0A%20%20//%20child%2C%20or%20%60fallback%60%20if%20any%20child%20is%20undefined.%0A%20%20_.result%20%3D%20function%28obj%2C%20path%2C%20fallback%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20path%20%3D%20%5Bpath%5D%3B%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20if%20%28%21length%29%20%7B%0A%20%20%20%20%20%20return%20_.isFunction%28fallback%29%20%3F%20fallback.call%28obj%29%20%3A%20fallback%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20prop%20%3D%20obj%20%3D%3D%20null%20%3F%20void%200%20%3A%20obj%5Bpath%5Bi%5D%5D%3B%0A%20%20%20%20%20%20if%20%28prop%20%3D%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20prop%20%3D%20fallback%3B%0A%20%20%20%20%20%20%20%20i%20%3D%20length%3B%20//%20Ensure%20we%20don%27t%20continue%20iterating.%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20obj%20%3D%20_.isFunction%28prop%29%20%3F%20prop.call%28obj%29%20%3A%20prop%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generate%20a%20unique%20integer%20id%20%28unique%20within%20the%20entire%20client%20session%29.%0A%20%20//%20Useful%20for%20temporary%20DOM%20ids.%0A%20%20var%20idCounter%20%3D%200%3B%0A%20%20_.uniqueId%20%3D%20function%28prefix%29%20%7B%0A%20%20%20%20var%20id%20%3D%20%2B%2BidCounter%20%2B%20%27%27%3B%0A%20%20%20%20return%20prefix%20%3F%20prefix%20%2B%20id%20%3A%20id%3B%0A%20%20%7D%3B%0A%0A%20%20//%20By%20default%2C%20Underscore%20uses%20ERB-style%20template%20delimiters%2C%20change%20the%0A%20%20//%20following%20template%20settings%20to%20use%20alternative%20delimiters.%0A%20%20_.templateSettings%20%3D%20%7B%0A%20%20%20%20evaluate%3A%20/%3C%25%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%2C%0A%20%20%20%20interpolate%3A%20/%3C%25%3D%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%2C%0A%20%20%20%20escape%3A%20/%3C%25-%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%0A%20%20%7D%3B%0A%0A%20%20//%20When%20customizing%20%60templateSettings%60%2C%20if%20you%20don%27t%20want%20to%20define%20an%0A%20%20//%20interpolation%2C%20evaluation%20or%20escaping%20regex%2C%20we%20need%20one%20that%20is%0A%20%20//%20guaranteed%20not%20to%20match.%0A%20%20var%20noMatch%20%3D%20/%28.%29%5E/%3B%0A%0A%20%20//%20Certain%20characters%20need%20to%20be%20escaped%20so%20that%20they%20can%20be%20put%20into%20a%0A%20%20//%20string%20literal.%0A%20%20var%20escapes%20%3D%20%7B%0A%20%20%20%20%22%27%22%3A%20%22%27%22%2C%0A%20%20%20%20%27%5C%5C%27%3A%20%27%5C%5C%27%2C%0A%20%20%20%20%27%5Cr%27%3A%20%27r%27%2C%0A%20%20%20%20%27%5Cn%27%3A%20%27n%27%2C%0A%20%20%20%20%27%5Cu2028%27%3A%20%27u2028%27%2C%0A%20%20%20%20%27%5Cu2029%27%3A%20%27u2029%27%0A%20%20%7D%3B%0A%0A%20%20var%20escapeRegExp%20%3D%20/%5C%5C%7C%27%7C%5Cr%7C%5Cn%7C%5Cu2028%7C%5Cu2029/g%3B%0A%0A%20%20var%20escapeChar%20%3D%20function%28match%29%20%7B%0A%20%20%20%20return%20%27%5C%5C%27%20%2B%20escapes%5Bmatch%5D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20In%20order%20to%20prevent%20third-party%20code%20injection%20through%0A%20%20//%20%60_.templateSettings.variable%60%2C%20we%20test%20it%20against%20the%20following%20regular%0A%20%20//%20expression.%20It%20is%20intentionally%20a%20bit%20more%20liberal%20than%20just%20matching%20valid%0A%20%20//%20identifiers%2C%20but%20still%20prevents%20possible%20loopholes%20through%20defaults%20or%0A%20%20//%20destructuring%20assignment.%0A%20%20var%20bareIdentifier%20%3D%20/%5E%5Cs%2A%28%5Cw%7C%5C%24%29%2B%5Cs%2A%24/%3B%0A%0A%20%20//%20JavaScript%20micro-templating%2C%20similar%20to%20John%20Resig%27s%20implementation.%0A%20%20//%20Underscore%20templating%20handles%20arbitrary%20delimiters%2C%20preserves%20whitespace%2C%0A%20%20//%20and%20correctly%20escapes%20quotes%20within%20interpolated%20code.%0A%20%20//%20NB%3A%20%60oldSettings%60%20only%20exists%20for%20backwards%20compatibility.%0A%20%20_.template%20%3D%20function%28text%2C%20settings%2C%20oldSettings%29%20%7B%0A%20%20%20%20if%20%28%21settings%20%26%26%20oldSettings%29%20settings%20%3D%20oldSettings%3B%0A%20%20%20%20settings%20%3D%20_.defaults%28%7B%7D%2C%20settings%2C%20_.templateSettings%29%3B%0A%0A%20%20%20%20//%20Combine%20delimiters%20into%20one%20regular%20expression%20via%20alternation.%0A%20%20%20%20var%20matcher%20%3D%20RegExp%28%5B%0A%20%20%20%20%20%20%28settings.escape%20%7C%7C%20noMatch%29.source%2C%0A%20%20%20%20%20%20%28settings.interpolate%20%7C%7C%20noMatch%29.source%2C%0A%20%20%20%20%20%20%28settings.evaluate%20%7C%7C%20noMatch%29.source%0A%20%20%20%20%5D.join%28%27%7C%27%29%20%2B%20%27%7C%24%27%2C%20%27g%27%29%3B%0A%0A%20%20%20%20//%20Compile%20the%20template%20source%2C%20escaping%20string%20literals%20appropriately.%0A%20%20%20%20var%20index%20%3D%200%3B%0A%20%20%20%20var%20source%20%3D%20%22__p%2B%3D%27%22%3B%0A%20%20%20%20text.replace%28matcher%2C%20function%28match%2C%20escape%2C%20interpolate%2C%20evaluate%2C%20offset%29%20%7B%0A%20%20%20%20%20%20source%20%2B%3D%20text.slice%28index%2C%20offset%29.replace%28escapeRegExp%2C%20escapeChar%29%3B%0A%20%20%20%20%20%20index%20%3D%20offset%20%2B%20match.length%3B%0A%0A%20%20%20%20%20%20if%20%28escape%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%2B%5Cn%28%28__t%3D%28%22%20%2B%20escape%20%2B%20%22%29%29%3D%3Dnull%3F%27%27%3A_.escape%28__t%29%29%2B%5Cn%27%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28interpolate%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%2B%5Cn%28%28__t%3D%28%22%20%2B%20interpolate%20%2B%20%22%29%29%3D%3Dnull%3F%27%27%3A__t%29%2B%5Cn%27%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28evaluate%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%3B%5Cn%22%20%2B%20evaluate%20%2B%20%22%5Cn__p%2B%3D%27%22%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%20Adobe%20VMs%20need%20the%20match%20returned%20to%20produce%20the%20correct%20offset.%0A%20%20%20%20%20%20return%20match%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20source%20%2B%3D%20%22%27%3B%5Cn%22%3B%0A%0A%20%20%20%20var%20argument%20%3D%20settings.variable%3B%0A%20%20%20%20if%20%28argument%29%20%7B%0A%20%20%20%20%20%20//%20Insure%20against%20third-party%20code%20injection.%0A%20%20%20%20%20%20if%20%28%21bareIdentifier.test%28argument%29%29%20throw%20new%20Error%28%0A%20%20%20%20%20%20%20%20%27variable%20is%20not%20a%20bare%20identifier%3A%20%27%20%2B%20argument%0A%20%20%20%20%20%20%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20//%20If%20a%20variable%20is%20not%20specified%2C%20place%20data%20values%20in%20local%20scope.%0A%20%20%20%20%20%20source%20%3D%20%27with%28obj%7C%7C%7B%7D%29%7B%5Cn%27%20%2B%20source%20%2B%20%27%7D%5Cn%27%3B%0A%20%20%20%20%20%20argument%20%3D%20%27obj%27%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20source%20%3D%20%22var%20__t%2C__p%3D%27%27%2C__j%3DArray.prototype.join%2C%22%20%2B%0A%20%20%20%20%20%20%22print%3Dfunction%28%29%7B__p%2B%3D__j.call%28arguments%2C%27%27%29%3B%7D%3B%5Cn%22%20%2B%0A%20%20%20%20%20%20source%20%2B%20%27return%20__p%3B%5Cn%27%3B%0A%0A%20%20%20%20var%20render%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20render%20%3D%20new%20Function%28argument%2C%20%27_%27%2C%20source%29%3B%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%0A%20%20%20%20%20%20e.source%20%3D%20source%3B%0A%20%20%20%20%20%20throw%20e%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20template%20%3D%20function%28data%29%20%7B%0A%20%20%20%20%20%20return%20render.call%28this%2C%20data%2C%20_%29%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20//%20Provide%20the%20compiled%20source%20as%20a%20convenience%20for%20precompilation.%0A%20%20%20%20template.source%20%3D%20%27function%28%27%20%2B%20argument%20%2B%20%27%29%7B%5Cn%27%20%2B%20source%20%2B%20%27%7D%27%3B%0A%0A%20%20%20%20return%20template%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20a%20%22chain%22%20function.%20Start%20chaining%20a%20wrapped%20Underscore%20object.%0A%20%20_.chain%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20instance%20%3D%20_%28obj%29%3B%0A%20%20%20%20instance._chain%20%3D%20true%3B%0A%20%20%20%20return%20instance%3B%0A%20%20%7D%3B%0A%0A%20%20//%20OOP%0A%20%20//%20---------------%0A%20%20//%20If%20Underscore%20is%20called%20as%20a%20function%2C%20it%20returns%20a%20wrapped%20object%20that%0A%20%20//%20can%20be%20used%20OO-style.%20This%20wrapper%20holds%20altered%20versions%20of%20all%20the%0A%20%20//%20underscore%20functions.%20Wrapped%20objects%20may%20be%20chained.%0A%0A%20%20//%20Helper%20function%20to%20continue%20chaining%20intermediate%20results.%0A%20%20var%20chainResult%20%3D%20function%28instance%2C%20obj%29%20%7B%0A%20%20%20%20return%20instance._chain%20%3F%20_%28obj%29.chain%28%29%20%3A%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20your%20own%20custom%20functions%20to%20the%20Underscore%20object.%0A%20%20_.mixin%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20_.each%28_.functions%28obj%29%2C%20function%28name%29%20%7B%0A%20%20%20%20%20%20var%20func%20%3D%20_%5Bname%5D%20%3D%20obj%5Bname%5D%3B%0A%20%20%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20args%20%3D%20%5Bthis._wrapped%5D%3B%0A%20%20%20%20%20%20%20%20push.apply%28args%2C%20arguments%29%3B%0A%20%20%20%20%20%20%20%20return%20chainResult%28this%2C%20func.apply%28_%2C%20args%29%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20_%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20all%20of%20the%20Underscore%20functions%20to%20the%20wrapper%20object.%0A%20%20_.mixin%28_%29%3B%0A%0A%20%20//%20Add%20all%20mutator%20Array%20functions%20to%20the%20wrapper.%0A%20%20_.each%28%5B%27pop%27%2C%20%27push%27%2C%20%27reverse%27%2C%20%27shift%27%2C%20%27sort%27%2C%20%27splice%27%2C%20%27unshift%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20var%20method%20%3D%20ArrayProto%5Bname%5D%3B%0A%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20obj%20%3D%20this._wrapped%3B%0A%20%20%20%20%20%20method.apply%28obj%2C%20arguments%29%3B%0A%20%20%20%20%20%20if%20%28%28name%20%3D%3D%3D%20%27shift%27%20%7C%7C%20name%20%3D%3D%3D%20%27splice%27%29%20%26%26%20obj.length%20%3D%3D%3D%200%29%20delete%20obj%5B0%5D%3B%0A%20%20%20%20%20%20return%20chainResult%28this%2C%20obj%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Add%20all%20accessor%20Array%20functions%20to%20the%20wrapper.%0A%20%20_.each%28%5B%27concat%27%2C%20%27join%27%2C%20%27slice%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20var%20method%20%3D%20ArrayProto%5Bname%5D%3B%0A%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20chainResult%28this%2C%20method.apply%28this._wrapped%2C%20arguments%29%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Extracts%20the%20result%20from%20a%20wrapped%20and%20chained%20object.%0A%20%20_.prototype.value%20%3D%20function%28%29%20%7B%0A%20%20%20%20return%20this._wrapped%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Provide%20unwrapping%20proxy%20for%20some%20methods%20used%20in%20engine%20operations%0A%20%20//%20such%20as%20arithmetic%20and%20JSON%20stringification.%0A%20%20_.prototype.valueOf%20%3D%20_.prototype.toJSON%20%3D%20_.prototype.value%3B%0A%0A%20%20_.prototype.toString%20%3D%20function%28%29%20%7B%0A%20%20%20%20return%20String%28this._wrapped%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20AMD%20registration%20happens%20at%20the%20end%20for%20compatibility%20with%20AMD%20loaders%0A%20%20//%20that%20may%20not%20enforce%20next-turn%20semantics%20on%20modules.%20Even%20though%20general%0A%20%20//%20practice%20for%20AMD%20registration%20is%20to%20be%20anonymous%2C%20underscore%20registers%0A%20%20//%20as%20a%20named%20module%20because%2C%20like%20jQuery%2C%20it%20is%20a%20base%20library%20that%20is%0A%20%20//%20popular%20enough%20to%20be%20bundled%20in%20a%20third%20party%20lib%2C%20but%20not%20be%20part%20of%0A%20%20//%20an%20AMD%20load%20request.%20Those%20cases%20could%20generate%20an%20error%20when%20an%0A%20%20//%20anonymous%20define%28%29%20is%20called%20outside%20of%20a%20loader%20request.%0A%20%20if%20%28typeof%20define%20%3D%3D%20%27function%27%20%26%26%20define.amd%29%20%7B%0A%20%20%20%20define%28%27underscore%27%2C%20%5B%5D%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20_%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%7D%28%29%29%3B%0A"></script><!--URL:_static/underscore.js-->
-<script src="data:application/javascript,/%2A%0A%20%2A%20doctools.js%0A%20%2A%20~~~~~~~~~~~%0A%20%2A%0A%20%2A%20Sphinx%20JavaScript%20utilities%20for%20all%20documentation.%0A%20%2A%0A%20%2A%20%3Acopyright%3A%20Copyright%202007-2021%20by%20the%20Sphinx%20team%2C%20see%20AUTHORS.%0A%20%2A%20%3Alicense%3A%20BSD%2C%20see%20LICENSE%20for%20details.%0A%20%2A%0A%20%2A/%0A%0A/%2A%2A%0A%20%2A%20select%20a%20different%20prefix%20for%20underscore%0A%20%2A/%0A%24u%20%3D%20_.noConflict%28%29%3B%0A%0A/%2A%2A%0A%20%2A%20make%20the%20code%20below%20compatible%20with%20browsers%20without%0A%20%2A%20an%20installed%20firebug%20like%20debugger%0Aif%20%28%21window.console%20%7C%7C%20%21console.firebug%29%20%7B%0A%20%20var%20names%20%3D%20%5B%22log%22%2C%20%22debug%22%2C%20%22info%22%2C%20%22warn%22%2C%20%22error%22%2C%20%22assert%22%2C%20%22dir%22%2C%0A%20%20%20%20%22dirxml%22%2C%20%22group%22%2C%20%22groupEnd%22%2C%20%22time%22%2C%20%22timeEnd%22%2C%20%22count%22%2C%20%22trace%22%2C%0A%20%20%20%20%22profile%22%2C%20%22profileEnd%22%5D%3B%0A%20%20window.console%20%3D%20%7B%7D%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20names.length%3B%20%2B%2Bi%29%0A%20%20%20%20window.console%5Bnames%5Bi%5D%5D%20%3D%20function%28%29%20%7B%7D%3B%0A%7D%0A%20%2A/%0A%0A/%2A%2A%0A%20%2A%20small%20helper%20function%20to%20urldecode%20strings%0A%20%2A/%0AjQuery.urldecode%20%3D%20function%28x%29%20%7B%0A%20%20return%20decodeURIComponent%28x%29.replace%28/%5C%2B/g%2C%20%27%20%27%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20small%20helper%20function%20to%20urlencode%20strings%0A%20%2A/%0AjQuery.urlencode%20%3D%20encodeURIComponent%3B%0A%0A/%2A%2A%0A%20%2A%20This%20function%20returns%20the%20parsed%20url%20parameters%20of%20the%0A%20%2A%20current%20request.%20Multiple%20values%20per%20key%20are%20supported%2C%0A%20%2A%20it%20will%20always%20return%20arrays%20of%20strings%20for%20the%20value%20parts.%0A%20%2A/%0AjQuery.getQueryParameters%20%3D%20function%28s%29%20%7B%0A%20%20if%20%28typeof%20s%20%3D%3D%3D%20%27undefined%27%29%0A%20%20%20%20s%20%3D%20document.location.search%3B%0A%20%20var%20parts%20%3D%20s.substr%28s.indexOf%28%27%3F%27%29%20%2B%201%29.split%28%27%26%27%29%3B%0A%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20parts.length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20var%20tmp%20%3D%20parts%5Bi%5D.split%28%27%3D%27%2C%202%29%3B%0A%20%20%20%20var%20key%20%3D%20jQuery.urldecode%28tmp%5B0%5D%29%3B%0A%20%20%20%20var%20value%20%3D%20jQuery.urldecode%28tmp%5B1%5D%29%3B%0A%20%20%20%20if%20%28key%20in%20result%29%0A%20%20%20%20%20%20result%5Bkey%5D.push%28value%29%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20result%5Bkey%5D%20%3D%20%5Bvalue%5D%3B%0A%20%20%7D%0A%20%20return%20result%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20highlight%20a%20given%20string%20on%20a%20jquery%20object%20by%20wrapping%20it%20in%0A%20%2A%20span%20elements%20with%20the%20given%20class%20name.%0A%20%2A/%0AjQuery.fn.highlightText%20%3D%20function%28text%2C%20className%29%20%7B%0A%20%20function%20highlight%28node%2C%20addItems%29%20%7B%0A%20%20%20%20if%20%28node.nodeType%20%3D%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20var%20val%20%3D%20node.nodeValue%3B%0A%20%20%20%20%20%20var%20pos%20%3D%20val.toLowerCase%28%29.indexOf%28text%29%3B%0A%20%20%20%20%20%20if%20%28pos%20%3E%3D%200%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%21jQuery%28node.parentNode%29.hasClass%28className%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%21jQuery%28node.parentNode%29.hasClass%28%22nohighlight%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20var%20span%3B%0A%20%20%20%20%20%20%20%20var%20isInSVG%20%3D%20jQuery%28node%29.closest%28%22body%2C%20svg%2C%20foreignObject%22%29.is%28%22svg%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28isInSVG%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20span%20%3D%20document.createElementNS%28%22http%3A//www.w3.org/2000/svg%22%2C%20%22tspan%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20span%20%3D%20document.createElement%28%22span%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20span.className%20%3D%20className%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20span.appendChild%28document.createTextNode%28val.substr%28pos%2C%20text.length%29%29%29%3B%0A%20%20%20%20%20%20%20%20node.parentNode.insertBefore%28span%2C%20node.parentNode.insertBefore%28%0A%20%20%20%20%20%20%20%20%20%20document.createTextNode%28val.substr%28pos%20%2B%20text.length%29%29%2C%0A%20%20%20%20%20%20%20%20%20%20node.nextSibling%29%29%3B%0A%20%20%20%20%20%20%20%20node.nodeValue%20%3D%20val.substr%280%2C%20pos%29%3B%0A%20%20%20%20%20%20%20%20if%20%28isInSVG%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20rect%20%3D%20document.createElementNS%28%22http%3A//www.w3.org/2000/svg%22%2C%20%22rect%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20var%20bbox%20%3D%20node.parentElement.getBBox%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20rect.x.baseVal.value%20%3D%20bbox.x%3B%0A%20%20%20%20%20%20%20%20%20%20rect.y.baseVal.value%20%3D%20bbox.y%3B%0A%20%20%20%20%20%20%20%20%20%20rect.width.baseVal.value%20%3D%20bbox.width%3B%0A%20%20%20%20%20%20%20%20%20%20rect.height.baseVal.value%20%3D%20bbox.height%3B%0A%20%20%20%20%20%20%20%20%20%20rect.setAttribute%28%27class%27%2C%20className%29%3B%0A%20%20%20%20%20%20%20%20%20%20addItems.push%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22parent%22%3A%20node.parentNode%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22target%22%3A%20rect%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20else%20if%20%28%21jQuery%28node%29.is%28%22button%2C%20select%2C%20textarea%22%29%29%20%7B%0A%20%20%20%20%20%20jQuery.each%28node.childNodes%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20highlight%28this%2C%20addItems%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20var%20addItems%20%3D%20%5B%5D%3B%0A%20%20var%20result%20%3D%20this.each%28function%28%29%20%7B%0A%20%20%20%20highlight%28this%2C%20addItems%29%3B%0A%20%20%7D%29%3B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20addItems.length%3B%20%2B%2Bi%29%20%7B%0A%20%20%20%20jQuery%28addItems%5Bi%5D.parent%29.before%28addItems%5Bi%5D.target%29%3B%0A%20%20%7D%0A%20%20return%20result%3B%0A%7D%3B%0A%0A/%2A%0A%20%2A%20backward%20compatibility%20for%20jQuery.browser%0A%20%2A%20This%20will%20be%20supported%20until%20firefox%20bug%20is%20fixed.%0A%20%2A/%0Aif%20%28%21jQuery.browser%29%20%7B%0A%20%20jQuery.uaMatch%20%3D%20function%28ua%29%20%7B%0A%20%20%20%20ua%20%3D%20ua.toLowerCase%28%29%3B%0A%0A%20%20%20%20var%20match%20%3D%20/%28chrome%29%5B%20%5C/%5D%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20/%28webkit%29%5B%20%5C/%5D%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20/%28opera%29%28%3F%3A.%2Aversion%7C%29%5B%20%5C/%5D%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20/%28msie%29%20%28%5B%5Cw.%5D%2B%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20ua.indexOf%28%22compatible%22%29%20%3C%200%20%26%26%20/%28mozilla%29%28%3F%3A.%2A%3F%20rv%3A%28%5B%5Cw.%5D%2B%29%7C%29/.exec%28ua%29%20%7C%7C%0A%20%20%20%20%20%20%5B%5D%3B%0A%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20browser%3A%20match%5B%201%20%5D%20%7C%7C%20%22%22%2C%0A%20%20%20%20%20%20version%3A%20match%5B%202%20%5D%20%7C%7C%20%220%22%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%20%20jQuery.browser%20%3D%20%7B%7D%3B%0A%20%20jQuery.browser%5BjQuery.uaMatch%28navigator.userAgent%29.browser%5D%20%3D%20true%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Small%20JavaScript%20module%20for%20the%20documentation.%0A%20%2A/%0Avar%20Documentation%20%3D%20%7B%0A%0A%20%20init%20%3A%20function%28%29%20%7B%0A%20%20%20%20this.fixFirefoxAnchorBug%28%29%3B%0A%20%20%20%20this.highlightSearchWords%28%29%3B%0A%20%20%20%20this.initIndexTable%28%29%3B%0A%20%20%20%20if%20%28DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS%29%20%7B%0A%20%20%20%20%20%20this.initOnKeyListeners%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20i18n%20support%0A%20%20%20%2A/%0A%20%20TRANSLATIONS%20%3A%20%7B%7D%2C%0A%20%20PLURAL_EXPR%20%3A%20function%28n%29%20%7B%20return%20n%20%3D%3D%3D%201%20%3F%200%20%3A%201%3B%20%7D%2C%0A%20%20LOCALE%20%3A%20%27unknown%27%2C%0A%0A%20%20//%20gettext%20and%20ngettext%20don%27t%20access%20this%20so%20that%20the%20functions%0A%20%20//%20can%20safely%20bound%20to%20a%20different%20name%20%28_%20%3D%20Documentation.gettext%29%0A%20%20gettext%20%3A%20function%28string%29%20%7B%0A%20%20%20%20var%20translated%20%3D%20Documentation.TRANSLATIONS%5Bstring%5D%3B%0A%20%20%20%20if%20%28typeof%20translated%20%3D%3D%3D%20%27undefined%27%29%0A%20%20%20%20%20%20return%20string%3B%0A%20%20%20%20return%20%28typeof%20translated%20%3D%3D%3D%20%27string%27%29%20%3F%20translated%20%3A%20translated%5B0%5D%3B%0A%20%20%7D%2C%0A%0A%20%20ngettext%20%3A%20function%28singular%2C%20plural%2C%20n%29%20%7B%0A%20%20%20%20var%20translated%20%3D%20Documentation.TRANSLATIONS%5Bsingular%5D%3B%0A%20%20%20%20if%20%28typeof%20translated%20%3D%3D%3D%20%27undefined%27%29%0A%20%20%20%20%20%20return%20%28n%20%3D%3D%201%29%20%3F%20singular%20%3A%20plural%3B%0A%20%20%20%20return%20translated%5BDocumentation.PLURALEXPR%28n%29%5D%3B%0A%20%20%7D%2C%0A%0A%20%20addTranslations%20%3A%20function%28catalog%29%20%7B%0A%20%20%20%20for%20%28var%20key%20in%20catalog.messages%29%0A%20%20%20%20%20%20this.TRANSLATIONS%5Bkey%5D%20%3D%20catalog.messages%5Bkey%5D%3B%0A%20%20%20%20this.PLURAL_EXPR%20%3D%20new%20Function%28%27n%27%2C%20%27return%20%2B%28%27%20%2B%20catalog.plural_expr%20%2B%20%27%29%27%29%3B%0A%20%20%20%20this.LOCALE%20%3D%20catalog.locale%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20add%20context%20elements%20like%20header%20anchor%20links%0A%20%20%20%2A/%0A%20%20addContextElements%20%3A%20function%28%29%20%7B%0A%20%20%20%20%24%28%27div%5Bid%5D%20%3E%20%3Aheader%3Afirst%27%29.each%28function%28%29%20%7B%0A%20%20%20%20%20%20%24%28%27%3Ca%20class%3D%22headerlink%22%3E%5Cu00B6%3C/a%3E%27%29.%0A%20%20%20%20%20%20attr%28%27href%27%2C%20%27%23%27%20%2B%20this.id%29.%0A%20%20%20%20%20%20attr%28%27title%27%2C%20_%28%27Permalink%20to%20this%20headline%27%29%29.%0A%20%20%20%20%20%20appendTo%28this%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20%24%28%27dt%5Bid%5D%27%29.each%28function%28%29%20%7B%0A%20%20%20%20%20%20%24%28%27%3Ca%20class%3D%22headerlink%22%3E%5Cu00B6%3C/a%3E%27%29.%0A%20%20%20%20%20%20attr%28%27href%27%2C%20%27%23%27%20%2B%20this.id%29.%0A%20%20%20%20%20%20attr%28%27title%27%2C%20_%28%27Permalink%20to%20this%20definition%27%29%29.%0A%20%20%20%20%20%20appendTo%28this%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20workaround%20a%20firefox%20stupidity%0A%20%20%20%2A%20see%3A%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D645075%0A%20%20%20%2A/%0A%20%20fixFirefoxAnchorBug%20%3A%20function%28%29%20%7B%0A%20%20%20%20if%20%28document.location.hash%20%26%26%20%24.browser.mozilla%29%0A%20%20%20%20%20%20window.setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20document.location.href%20%2B%3D%20%27%27%3B%0A%20%20%20%20%20%20%7D%2C%2010%29%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20highlight%20the%20search%20words%20provided%20in%20the%20url%20in%20the%20text%0A%20%20%20%2A/%0A%20%20highlightSearchWords%20%3A%20function%28%29%20%7B%0A%20%20%20%20var%20params%20%3D%20%24.getQueryParameters%28%29%3B%0A%20%20%20%20var%20terms%20%3D%20%28params.highlight%29%20%3F%20params.highlight%5B0%5D.split%28/%5Cs%2B/%29%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28terms.length%29%20%7B%0A%20%20%20%20%20%20var%20body%20%3D%20%24%28%27div.body%27%29%3B%0A%20%20%20%20%20%20if%20%28%21body.length%29%20%7B%0A%20%20%20%20%20%20%20%20body%20%3D%20%24%28%27body%27%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20window.setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%24.each%28terms%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20body.highlightText%28this.toLowerCase%28%29%2C%20%27highlighted%27%29%3B%0A%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%7D%2C%2010%29%3B%0A%20%20%20%20%20%20%24%28%27%3Cp%20class%3D%22highlight-link%22%3E%3Ca%20href%3D%22javascript%3ADocumentation.%27%20%2B%0A%20%20%20%20%20%20%20%20%27hideSearchWords%28%29%22%3E%27%20%2B%20_%28%27Hide%20Search%20Matches%27%29%20%2B%20%27%3C/a%3E%3C/p%3E%27%29%0A%20%20%20%20%20%20%20%20%20%20.appendTo%28%24%28%27%23searchbox%27%29%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20init%20the%20domain%20index%20toggle%20buttons%0A%20%20%20%2A/%0A%20%20initIndexTable%20%3A%20function%28%29%20%7B%0A%20%20%20%20var%20togglers%20%3D%20%24%28%27img.toggler%27%29.click%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20src%20%3D%20%24%28this%29.attr%28%27src%27%29%3B%0A%20%20%20%20%20%20var%20idnum%20%3D%20%24%28this%29.attr%28%27id%27%29.substr%287%29%3B%0A%20%20%20%20%20%20%24%28%27tr.cg-%27%20%2B%20idnum%29.toggle%28%29%3B%0A%20%20%20%20%20%20if%20%28src.substr%28-9%29%20%3D%3D%3D%20%27minus.png%27%29%0A%20%20%20%20%20%20%20%20%24%28this%29.attr%28%27src%27%2C%20src.substr%280%2C%20src.length-9%29%20%2B%20%27plus.png%27%29%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%24%28this%29.attr%28%27src%27%2C%20src.substr%280%2C%20src.length-8%29%20%2B%20%27minus.png%27%29%3B%0A%20%20%20%20%7D%29.css%28%27display%27%2C%20%27%27%29%3B%0A%20%20%20%20if%20%28DOCUMENTATION_OPTIONS.COLLAPSE_INDEX%29%20%7B%0A%20%20%20%20%20%20%20%20togglers.click%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20helper%20function%20to%20hide%20the%20search%20marks%20again%0A%20%20%20%2A/%0A%20%20hideSearchWords%20%3A%20function%28%29%20%7B%0A%20%20%20%20%24%28%27%23searchbox%20.highlight-link%27%29.fadeOut%28300%29%3B%0A%20%20%20%20%24%28%27span.highlighted%27%29.removeClass%28%27highlighted%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20make%20the%20url%20absolute%0A%20%20%20%2A/%0A%20%20makeURL%20%3A%20function%28relativeURL%29%20%7B%0A%20%20%20%20return%20DOCUMENTATION_OPTIONS.URL_ROOT%20%2B%20%27/%27%20%2B%20relativeURL%3B%0A%20%20%7D%2C%0A%0A%20%20/%2A%2A%0A%20%20%20%2A%20get%20the%20current%20relative%20url%0A%20%20%20%2A/%0A%20%20getCurrentURL%20%3A%20function%28%29%20%7B%0A%20%20%20%20var%20path%20%3D%20document.location.pathname%3B%0A%20%20%20%20var%20parts%20%3D%20path.split%28/%5C//%29%3B%0A%20%20%20%20%24.each%28DOCUMENTATION_OPTIONS.URL_ROOT.split%28/%5C//%29%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28this%20%3D%3D%3D%20%27..%27%29%0A%20%20%20%20%20%20%20%20parts.pop%28%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20var%20url%20%3D%20parts.join%28%27/%27%29%3B%0A%20%20%20%20return%20path.substring%28url.lastIndexOf%28%27/%27%29%20%2B%201%2C%20path.length%20-%201%29%3B%0A%20%20%7D%2C%0A%0A%20%20initOnKeyListeners%3A%20function%28%29%20%7B%0A%20%20%20%20%24%28document%29.keydown%28function%28event%29%20%7B%0A%20%20%20%20%20%20var%20activeElementType%20%3D%20document.activeElement.tagName%3B%0A%20%20%20%20%20%20//%20don%27t%20navigate%20when%20in%20search%20box%2C%20textarea%2C%20dropdown%20or%20button%0A%20%20%20%20%20%20if%20%28activeElementType%20%21%3D%3D%20%27TEXTAREA%27%20%26%26%20activeElementType%20%21%3D%3D%20%27INPUT%27%20%26%26%20activeElementType%20%21%3D%3D%20%27SELECT%27%0A%20%20%20%20%20%20%20%20%20%20%26%26%20activeElementType%20%21%3D%3D%20%27BUTTON%27%20%26%26%20%21event.altKey%20%26%26%20%21event.ctrlKey%20%26%26%20%21event.metaKey%0A%20%20%20%20%20%20%20%20%20%20%26%26%20%21event.shiftKey%29%20%7B%0A%20%20%20%20%20%20%20%20switch%20%28event.keyCode%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20case%2037%3A%20//%20left%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20prevHref%20%3D%20%24%28%27link%5Brel%3D%22prev%22%5D%27%29.prop%28%27href%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28prevHref%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.location.href%20%3D%20prevHref%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20case%2039%3A%20//%20right%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20nextHref%20%3D%20%24%28%27link%5Brel%3D%22next%22%5D%27%29.prop%28%27href%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28nextHref%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20window.location.href%20%3D%20nextHref%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%7D%3B%0A%0A//%20quick%20alias%20for%20translations%0A_%20%3D%20Documentation.gettext%3B%0A%0A%24%28document%29.ready%28function%28%29%20%7B%0A%20%20Documentation.init%28%29%3B%0A%7D%29%3B%0A"></script><!--URL:_static/doctools.js-->
-</head><body>
-<div class="document">
-<div class="documentwrapper">
-<div class="bodywrapper">
-<div class="body" role="main">
-<div class="section" id="terms-of-service">
-<h1>Terms Of Service<a class="headerlink" href="#terms-of-service" title="Permalink to this headline">¶</a></h1>
-<p>Last Updated: 12.4.2019</p>
-<p>Welcome! Taler Systems SA (“we,” “our,” or “us”) provides a payment service
-through our Internet presence (collectively the “Services”). Before using our
-Services, please read the Terms of Service (the “Terms” or the “Agreement”)
-carefully.</p>
-<div class="section" id="overview">
-<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
-<p>This section provides a brief summary of the highlights of this
-Agreement. Please note that when you accept this Agreement, you are accepting
-all of the terms and conditions and not just this section. We and possibly
-other third parties provide Internet services which interact with the Taler
-Wallet’s self-hosted personal payment application. When using the Taler Wallet
-to interact with our Services, you are agreeing to our Terms, so please read
-carefully.</p>
-<div class="section" id="highlights">
-<h3>Highlights:<a class="headerlink" href="#highlights" title="Permalink to this headline">¶</a></h3>
-<blockquote>
-<div><ul class="simple">
-<li><p>You are responsible for keeping the data in your Taler Wallet at all times
-under your control. Any losses arising from you not being in control of
-your private information are your problem.</p></li>
-<li><p>We will try to transfer funds we hold in escrow for our users to any legal
-recipient to the best of our ability within the limitations of the law and
-our implementation. However, the Services offered today are highly
-experimental and the set of recipients of funds is severely restricted.</p></li>
-<li><p>For our Services, we may charge transaction fees. The specific fee structure
-is provided based on the Taler protocol and should be shown to you when you
-withdraw electronic coins using a Taler Wallet. You agree and understand
-that the Taler protocol allows for the fee structure to change.</p></li>
-<li><p>You agree to not intentionally overwhelm our systems with requests and
-follow responsible disclosure if you find security issues in our services.</p></li>
-<li><p>We cannot be held accountable for our Services not being available due to
-circumstances beyond our control. If we modify or terminate our services,
-we will try to give you the opportunity to recover your funds. However,
-given the experimental state of the Services today, this may not be
-possible. You are strongly advised to limit your use of the Service
-to small-scale experiments expecting total loss of all funds.</p></li>
-</ul>
-</div></blockquote>
-<p>These terms outline approved uses of our Services. The Services and these
-Terms are still at an experimental stage. If you have any questions or
-comments related to this Agreement, please send us a message to
-<a class="reference external" href="mailto:legal%40taler-systems.com">legal<span>@</span>taler-systems<span>.</span>com</a>. If you do not agree to this Agreement, you must not
-use our Services.</p>
-</div>
-</div>
-<div class="section" id="how-you-accept-this-policy">
-<h2>How you accept this policy<a class="headerlink" href="#how-you-accept-this-policy" title="Permalink to this headline">¶</a></h2>
-<p>By sending funds to us (to top-up your Taler Wallet), you acknowledge that you
-have read, understood, and agreed to these Terms. We reserve the right to
-change these Terms at any time. If you disagree with the change, we may in the
-future offer you with an easy option to recover your unspent funds. However,
-in the current experimental period you acknowledge that this feature is not
-yet available, resulting in your funds being lost unless you accept the new
-Terms. If you continue to use our Services other than to recover your unspent
-funds, your continued use of our Services following any such change will
-signify your acceptance to be bound by the then current Terms. Please check
-the effective date above to determine if there have been any changes since you
-have last reviewed these Terms.</p>
-</div>
-<div class="section" id="services">
-<h2>Services<a class="headerlink" href="#services" title="Permalink to this headline">¶</a></h2>
-<p>We will try to transfer funds that we hold in escrow for our users to any
-legal recipient to the best of our ability and within the limitations of the
-law and our implementation. However, the Services offered today are highly
-experimental and the set of recipients of funds is severely restricted. The
-Taler Wallet can be loaded by exchanging fiat currencies against electronic
-coins. We are providing this exchange service. Once your Taler Wallet is
-loaded with electronic coins they can be spent for purchases if the seller is
-accepting Taler as a means of payment. We are not guaranteeing that any seller
-is accepting Taler at all or a particular seller. The seller or recipient of
-deposits of electronic coins must specify the target account, as per the
-design of the Taler protocol. They are responsible for following the protocol
-and specifying the correct bank account, and are solely liable for any losses
-that may arise from specifying the wrong account. We will allow the government
-to link wire transfers to the underlying contract hash. It is the
-responsibility of recipients to preserve the full contracts and to pay
-whatever taxes and charges may be applicable. Technical issues may lead to
-situations where we are unable to make transfers at all or lead to incorrect
-transfers that cannot be reversed. We will only refuse to execute transfers if
-the transfers are prohibited by a competent legal authority and we are ordered
-to do so.</p>
-<p>When using our Services, you agree to not take any action that intentionally
-imposes an unreasonable load on our infrastructure. If you find security
-problems in our Services, you agree to first report them to
-<a class="reference external" href="mailto:security%40taler-systems.com">security<span>@</span>taler-systems<span>.</span>com</a> and grant us the right to publish your report. We
-warrant that we will ourselves publicly disclose any issues reported within 3
-months, and that we will not prosecute anyone reporting security issues if
-they did not exploit the issue beyond a proof-of-concept, and followed the
-above responsible disclosure practice.</p>
-</div>
-<div class="section" id="fees">
-<h2>Fees<a class="headerlink" href="#fees" title="Permalink to this headline">¶</a></h2>
-<p>You agree to pay the fees for exchanges and withdrawals completed via the
-Taler Wallet (“Fees”) as defined by us, which we may change from time to
-time. With the exception of wire transfer fees, Taler transaction fees are set
-for any electronic coin at the time of withdrawal and fixed throughout the
-validity period of the respective electronic coin. Your wallet should obtain
-and display applicable fees when withdrawing funds. Fees for coins obtained as
-change may differ from the fees applicable to the original coin. Wire transfer
-fees that are independent from electronic coins may change annually. You
-authorize us to charge or deduct applicable fees owed in connection with
-deposits, exchanges and withdrawals following the rules of the Taler protocol.
-We reserve the right to provide different types of rewards to users either in
-the form of discount for our Services or in any other form at our discretion
-and without prior notice to you.</p>
-</div>
-<div class="section" id="eligibility-and-financial-self-responsibility">
-<h2>Eligibility and Financial self-responsibility<a class="headerlink" href="#eligibility-and-financial-self-responsibility" title="Permalink to this headline">¶</a></h2>
-<p>To be eligible to use our Services, you must be able to form legally binding
-contracts or have the permission of your legal guardian. By using our
-Services, you represent and warrant that you meet all eligibility requirements
-that we outline in these Terms.</p>
-<p>You will be responsible for maintaining the availability, integrity and
-confidentiality of the data stored in your wallet. When you setup a Taler
-Wallet, you are strongly advised to follow the precautionary measures offered
-by the software to minimize the chances to losse access to or control over
-your Wallet data. We will not be liable for any loss or damage arising from
-your failure to comply with this paragraph.</p>
-</div>
-<div class="section" id="copyrights-and-trademarks">
-<h2>Copyrights and trademarks<a class="headerlink" href="#copyrights-and-trademarks" title="Permalink to this headline">¶</a></h2>
-<p>The Taler Wallet is released under the terms of the GNU General Public License
-(GNU GPL). You have the right to access, use, and share the Taler Wallet, in
-modified or unmodified form. However, the GPL is a strong copyleft license,
-which means that any derivative works must be distributed under the same
-license terms as the original software. If you have any questions, you should
-review the GNU GPL’s full terms and conditions at
-<a class="reference external" href="https://www.gnu.org/licenses/gpl-3.0.en.html">https://www.gnu.org/licenses/gpl-3.0.en.html</a>. “Taler” itself is a trademark
-of Taler Systems SA. You are welcome to use the name in relation to processing
-payments using the Taler protocol, assuming your use is compatible with an
-official release from the GNU Project that is not older than two years.</p>
-</div>
-<div class="section" id="limitation-of-liability-disclaimer-of-warranties">
-<h2>Limitation of liability &amp; disclaimer of warranties<a class="headerlink" href="#limitation-of-liability-disclaimer-of-warranties" title="Permalink to this headline">¶</a></h2>
-<p>You understand and agree that we have no control over, and no duty to take any
-action regarding: Failures, disruptions, errors, or delays in processing that
-you may experience while using our Services; The risk of failure of hardware,
-software, and Internet connections; The risk of malicious software being
-introduced or found in the software underlying the Taler Wallet; The risk that
-third parties may obtain unauthorized access to information stored within your
-Taler Wallet, including, but not limited to your Taler Wallet coins or backup
-encryption keys. You release us from all liability related to any losses,
-damages, or claims arising from:</p>
-<ol class="loweralpha simple">
-<li><p>user error such as forgotten passwords, incorrectly constructed
-transactions;</p></li>
-<li><p>server failure or data loss;</p></li>
-<li><p>unauthorized access to the Taler Wallet application;</p></li>
-<li><p>bugs or other errors in the Taler Wallet software; and</p></li>
-<li><p>any unauthorized third party activities, including, but not limited to,
-the use of viruses, phishing, brute forcing, or other means of attack
-against the Taler Wallet. We make no representations concerning any
-Third Party Content contained in or accessed through our Services.</p></li>
-</ol>
-<p>Any other terms, conditions, warranties, or representations associated with
-such content, are solely between you and such organizations and/or
-individuals.</p>
-<p>To the fullest extent permitted by applicable law, in no event will we or any
-of our officers, directors, representatives, agents, servants, counsel,
-employees, consultants, lawyers, and other personnel authorized to act,
-acting, or purporting to act on our behalf (collectively the “Taler Parties”)
-be liable to you under contract, tort, strict liability, negligence, or any
-other legal or equitable theory, for:</p>
-<ol class="loweralpha simple">
-<li><p>any lost profits, data loss, cost of procurement of substitute goods or
-services, or direct, indirect, incidental, special, punitive, compensatory,
-or consequential damages of any kind whatsoever resulting from:</p></li>
-</ol>
-<blockquote>
-<div><ol class="lowerroman simple">
-<li><p>your use of, or conduct in connection with, our services;</p></li>
-<li><p>any unauthorized use of your wallet and/or private key due to your
-failure to maintain the confidentiality of your wallet;</p></li>
-<li><p>any interruption or cessation of transmission to or from the services; or</p></li>
-<li><p>any bugs, viruses, trojan horses, or the like that are found in the Taler
-Wallet software or that may be transmitted to or through our services by
-any third party (regardless of the source of origination), or</p></li>
-</ol>
-</div></blockquote>
-<ol class="loweralpha simple" start="2">
-<li><p>any direct damages.</p></li>
-</ol>
-<p>These limitations apply regardless of legal theory, whether based on tort,
-strict liability, breach of contract, breach of warranty, or any other legal
-theory, and whether or not we were advised of the possibility of such
-damages. Some jurisdictions do not allow the exclusion or limitation of
-liability for consequential or incidental damages, so the above limitation may
-not apply to you.</p>
-<p>Our services are provided “as is” and without warranty of any kind. To the
-maximum extent permitted by law, we disclaim all representations and
-warranties, express or implied, relating to the services and underlying
-software or any content on the services, whether provided or owned by us or by
-any third party, including without limitation, warranties of merchantability,
-fitness for a particular purpose, title, non-infringement, freedom from
-computer virus, and any implied warranties arising from course of dealing,
-course of performance, or usage in trade, all of which are expressly
-disclaimed. In addition, we do not represent or warrant that the content
-accessible via the services is accurate, complete, available, current, free of
-viruses or other harmful components, or that the results of using the services
-will meet your requirements. Some states do not allow the disclaimer of
-implied warranties, so the foregoing disclaimers may not apply to you. This
-paragraph gives you specific legal rights and you may also have other legal
-rights that vary from state to state.</p>
-</div>
-<div class="section" id="indemnity-and-time-limitation-on-claims-and-termination">
-<h2>Indemnity and Time limitation on claims and Termination<a class="headerlink" href="#indemnity-and-time-limitation-on-claims-and-termination" title="Permalink to this headline">¶</a></h2>
-<p>To the extent permitted by applicable law, you agree to defend, indemnify, and
-hold harmless the Taler Parties from and against any and all claims, damages,
-obligations, losses, liabilities, costs or debt, and expenses (including, but
-not limited to, attorney’s fees) arising from: (a) your use of and access to
-the Services; (b) any feedback or submissions you provide to us concerning the
-Taler Wallet; (c) your violation of any term of this Agreement; or (d) your
-violation of any law, rule, or regulation, or the rights of any third party.</p>
-<p>You agree that any claim you may have arising out of or related to your
-relationship with us must be filed within one year after such claim arises,
-otherwise, your claim in permanently barred.</p>
-<p>In the event of termination concerning your use of our Services, your
-obligations under this Agreement will still continue.</p>
-</div>
-<div class="section" id="discontinuance-of-services-and-force-majeure">
-<h2>Discontinuance of services and Force majeure<a class="headerlink" href="#discontinuance-of-services-and-force-majeure" title="Permalink to this headline">¶</a></h2>
-<p>We may, in our sole discretion and without cost to you, with or without prior
-notice, and at any time, modify or discontinue, temporarily or permanently,
-any portion of our Services. We will use the Taler protocol’s provisions to
-notify Wallets if our Services are to be discontinued. It is your
-responsibility to ensure that the Taler Wallet is online at least once every
-three months to observe these notifications. We shall not be held responsible
-or liable for any loss of funds in the event that we discontinue or depreciate
-the Services and your Taler Wallet fails to transfer out the coins within a
-three months notification period.</p>
-<p>We shall not be held liable for any delays, failure in performance, or
-interruptions of service which result directly or indirectly from any cause or
-condition beyond our reasonable control, including but not limited to: any
-delay or failure due to any act of God, act of civil or military authorities,
-act of terrorism, civil disturbance, war, strike or other labor dispute, fire,
-interruption in telecommunications or Internet services or network provider
-services, failure of equipment and/or software, other catastrophe, or any
-other occurrence which is beyond our reasonable control and shall not affect
-the validity and enforceability of any remaining provisions.</p>
-</div>
-<div class="section" id="governing-law-waivers-severability-and-assignment">
-<h2>Governing law, Waivers, Severability and Assignment<a class="headerlink" href="#governing-law-waivers-severability-and-assignment" title="Permalink to this headline">¶</a></h2>
-<p>No matter where you’re located, the laws of Switzerland will govern these
-Terms. If any provisions of these Terms are inconsistent with any applicable
-law, those provisions will be superseded or modified only to the extent such
-provisions are inconsistent. The parties agree to submit to the ordinary
-courts in Zurich, Switzerland for exclusive jurisdiction of any dispute
-arising out of or related to your use of the Services or your breach of these
-Terms.</p>
-<p>Our failure to exercise or delay in exercising any right, power, or privilege
-under this Agreement shall not operate as a waiver; nor shall any single or
-partial exercise of any right, power, or privilege preclude any other or
-further exercise thereof.</p>
-<p>You agree that we may assign any of our rights and/or transfer, sub-contract,
-or delegate any of our obligations under these Terms.</p>
-<p>If it turns out that any part of this Agreement is invalid, void, or for any
-reason unenforceable, that term will be deemed severable and limited or
-eliminated to the minimum extent necessary.</p>
-<p>This Agreement sets forth the entire understanding and agreement as to the
-subject matter hereof and supersedes any and all prior discussions,
-agreements, and understandings of any kind (including, without limitation, any
-prior versions of this Agreement) and every nature between us. Except as
-provided for above, any modification to this Agreement must be in writing and
-must be signed by both parties.</p>
-</div>
-<div class="section" id="questions-or-comments">
-<h2>Questions or comments<a class="headerlink" href="#questions-or-comments" title="Permalink to this headline">¶</a></h2>
-<p>We welcome comments, questions, concerns, or suggestions. Please send us a
-message on our contact page at <a class="reference external" href="mailto:legal%40taler-systems.com">legal<span>@</span>taler-systems<span>.</span>com</a>.</p>
-</div>
-</div>
-<div class="clearer"></div>
-</div>
-</div>
-</div>
-<div class="clearer"></div>
-</div>
-</body>
-</html><!--Generated by HTMLArk 2023-01-06 22:23:20.623990. Original URL _build/html/tos-v0.html--> \ No newline at end of file
diff --git a/contrib/tos/en/tos-v0.md b/contrib/tos/en/tos-v0.md
deleted file mode 100644
index c124d70ee..000000000
--- a/contrib/tos/en/tos-v0.md
+++ /dev/null
@@ -1,337 +0,0 @@
-Terms Of Service
-****************
-
-Last Updated: 12.4.2019
-
-Welcome! Taler Systems SA (“we,” “our,” or “us”) provides a payment
-service through our Internet presence (collectively the “Services”).
-Before using our Services, please read the Terms of Service (the
-“Terms” or the “Agreement”) carefully.
-
-
-Overview
-========
-
-This section provides a brief summary of the highlights of this
-Agreement. Please note that when you accept this Agreement, you are
-accepting all of the terms and conditions and not just this section.
-We and possibly other third parties provide Internet services which
-interact with the Taler Wallet’s self-hosted personal payment
-application. When using the Taler Wallet to interact with our
-Services, you are agreeing to our Terms, so please read carefully.
-
-
-Highlights:
------------
-
- * You are responsible for keeping the data in your Taler Wallet at
- all times under your control. Any losses arising from you not
- being in control of your private information are your problem.
-
- * We will try to transfer funds we hold in escrow for our users to
- any legal recipient to the best of our ability within the
- limitations of the law and our implementation. However, the
- Services offered today are highly experimental and the set of
- recipients of funds is severely restricted.
-
- * For our Services, we may charge transaction fees. The specific
- fee structure is provided based on the Taler protocol and should
- be shown to you when you withdraw electronic coins using a Taler
- Wallet. You agree and understand that the Taler protocol allows
- for the fee structure to change.
-
- * You agree to not intentionally overwhelm our systems with
- requests and follow responsible disclosure if you find security
- issues in our services.
-
- * We cannot be held accountable for our Services not being
- available due to circumstances beyond our control. If we modify
- or terminate our services, we will try to give you the
- opportunity to recover your funds. However, given the
- experimental state of the Services today, this may not be
- possible. You are strongly advised to limit your use of the
- Service to small-scale experiments expecting total loss of all
- funds.
-
-These terms outline approved uses of our Services. The Services and
-these Terms are still at an experimental stage. If you have any
-questions or comments related to this Agreement, please send us a
-message to legal@taler-systems.com. If you do not agree to this
-Agreement, you must not use our Services.
-
-
-How you accept this policy
-==========================
-
-By sending funds to us (to top-up your Taler Wallet), you acknowledge
-that you have read, understood, and agreed to these Terms. We reserve
-the right to change these Terms at any time. If you disagree with the
-change, we may in the future offer you with an easy option to recover
-your unspent funds. However, in the current experimental period you
-acknowledge that this feature is not yet available, resulting in your
-funds being lost unless you accept the new Terms. If you continue to
-use our Services other than to recover your unspent funds, your
-continued use of our Services following any such change will signify
-your acceptance to be bound by the then current Terms. Please check
-the effective date above to determine if there have been any changes
-since you have last reviewed these Terms.
-
-
-Services
-========
-
-We will try to transfer funds that we hold in escrow for our users to
-any legal recipient to the best of our ability and within the
-limitations of the law and our implementation. However, the Services
-offered today are highly experimental and the set of recipients of
-funds is severely restricted. The Taler Wallet can be loaded by
-exchanging fiat currencies against electronic coins. We are providing
-this exchange service. Once your Taler Wallet is loaded with
-electronic coins they can be spent for purchases if the seller is
-accepting Taler as a means of payment. We are not guaranteeing that
-any seller is accepting Taler at all or a particular seller. The
-seller or recipient of deposits of electronic coins must specify the
-target account, as per the design of the Taler protocol. They are
-responsible for following the protocol and specifying the correct bank
-account, and are solely liable for any losses that may arise from
-specifying the wrong account. We will allow the government to link
-wire transfers to the underlying contract hash. It is the
-responsibility of recipients to preserve the full contracts and to pay
-whatever taxes and charges may be applicable. Technical issues may
-lead to situations where we are unable to make transfers at all or
-lead to incorrect transfers that cannot be reversed. We will only
-refuse to execute transfers if the transfers are prohibited by a
-competent legal authority and we are ordered to do so.
-
-When using our Services, you agree to not take any action that
-intentionally imposes an unreasonable load on our infrastructure. If
-you find security problems in our Services, you agree to first report
-them to security@taler-systems.com and grant us the right to publish
-your report. We warrant that we will ourselves publicly disclose any
-issues reported within 3 months, and that we will not prosecute anyone
-reporting security issues if they did not exploit the issue beyond a
-proof-of-concept, and followed the above responsible disclosure
-practice.
-
-
-Fees
-====
-
-You agree to pay the fees for exchanges and withdrawals completed via
-the Taler Wallet ("Fees") as defined by us, which we may change from
-time to time. With the exception of wire transfer fees, Taler
-transaction fees are set for any electronic coin at the time of
-withdrawal and fixed throughout the validity period of the respective
-electronic coin. Your wallet should obtain and display applicable fees
-when withdrawing funds. Fees for coins obtained as change may differ
-from the fees applicable to the original coin. Wire transfer fees that
-are independent from electronic coins may change annually. You
-authorize us to charge or deduct applicable fees owed in connection
-with deposits, exchanges and withdrawals following the rules of the
-Taler protocol. We reserve the right to provide different types of
-rewards to users either in the form of discount for our Services or in
-any other form at our discretion and without prior notice to you.
-
-
-Eligibility and Financial self-responsibility
-=============================================
-
-To be eligible to use our Services, you must be able to form legally
-binding contracts or have the permission of your legal guardian. By
-using our Services, you represent and warrant that you meet all
-eligibility requirements that we outline in these Terms.
-
-You will be responsible for maintaining the availability, integrity
-and confidentiality of the data stored in your wallet. When you setup
-a Taler Wallet, you are strongly advised to follow the precautionary
-measures offered by the software to minimize the chances to losse
-access to or control over your Wallet data. We will not be liable for
-any loss or damage arising from your failure to comply with this
-paragraph.
-
-
-Copyrights and trademarks
-=========================
-
-The Taler Wallet is released under the terms of the GNU General Public
-License (GNU GPL). You have the right to access, use, and share the
-Taler Wallet, in modified or unmodified form. However, the GPL is a
-strong copyleft license, which means that any derivative works must be
-distributed under the same license terms as the original software. If
-you have any questions, you should review the GNU GPL’s full terms and
-conditions at https://www.gnu.org/licenses/gpl-3.0.en.html. “Taler”
-itself is a trademark of Taler Systems SA. You are welcome to use the
-name in relation to processing payments using the Taler protocol,
-assuming your use is compatible with an official release from the GNU
-Project that is not older than two years.
-
-
-Limitation of liability & disclaimer of warranties
-==================================================
-
-You understand and agree that we have no control over, and no duty to
-take any action regarding: Failures, disruptions, errors, or delays in
-processing that you may experience while using our Services; The risk
-of failure of hardware, software, and Internet connections; The risk
-of malicious software being introduced or found in the software
-underlying the Taler Wallet; The risk that third parties may obtain
-unauthorized access to information stored within your Taler Wallet,
-including, but not limited to your Taler Wallet coins or backup
-encryption keys. You release us from all liability related to any
-losses, damages, or claims arising from:
-
-1. user error such as forgotten passwords, incorrectly constructed
- transactions;
-
-2. server failure or data loss;
-
-3. unauthorized access to the Taler Wallet application;
-
-4. bugs or other errors in the Taler Wallet software; and
-
-5. any unauthorized third party activities, including, but not limited
- to, the use of viruses, phishing, brute forcing, or other means of
- attack against the Taler Wallet. We make no representations
- concerning any Third Party Content contained in or accessed through
- our Services.
-
-Any other terms, conditions, warranties, or representations associated
-with such content, are solely between you and such organizations
-and/or individuals.
-
-To the fullest extent permitted by applicable law, in no event will we
-or any of our officers, directors, representatives, agents, servants,
-counsel, employees, consultants, lawyers, and other personnel
-authorized to act, acting, or purporting to act on our behalf
-(collectively the “Taler Parties”) be liable to you under contract,
-tort, strict liability, negligence, or any other legal or equitable
-theory, for:
-
-1. any lost profits, data loss, cost of procurement of substitute
- goods or services, or direct, indirect, incidental, special,
- punitive, compensatory, or consequential damages of any kind
- whatsoever resulting from:
-
- 1. your use of, or conduct in connection with, our services;
-
- 2. any unauthorized use of your wallet and/or private key due to
- your failure to maintain the confidentiality of your wallet;
-
- 3. any interruption or cessation of transmission to or from the
- services; or
-
- 4. any bugs, viruses, trojan horses, or the like that are found in
- the Taler Wallet software or that may be transmitted to or
- through our services by any third party (regardless of the
- source of origination), or
-
-2. any direct damages.
-
-These limitations apply regardless of legal theory, whether based on
-tort, strict liability, breach of contract, breach of warranty, or any
-other legal theory, and whether or not we were advised of the
-possibility of such damages. Some jurisdictions do not allow the
-exclusion or limitation of liability for consequential or incidental
-damages, so the above limitation may not apply to you.
-
-Our services are provided "as is" and without warranty of any kind. To
-the maximum extent permitted by law, we disclaim all representations
-and warranties, express or implied, relating to the services and
-underlying software or any content on the services, whether provided
-or owned by us or by any third party, including without limitation,
-warranties of merchantability, fitness for a particular purpose,
-title, non-infringement, freedom from computer virus, and any implied
-warranties arising from course of dealing, course of performance, or
-usage in trade, all of which are expressly disclaimed. In addition, we
-do not represent or warrant that the content accessible via the
-services is accurate, complete, available, current, free of viruses or
-other harmful components, or that the results of using the services
-will meet your requirements. Some states do not allow the disclaimer
-of implied warranties, so the foregoing disclaimers may not apply to
-you. This paragraph gives you specific legal rights and you may also
-have other legal rights that vary from state to state.
-
-
-Indemnity and Time limitation on claims and Termination
-=======================================================
-
-To the extent permitted by applicable law, you agree to defend,
-indemnify, and hold harmless the Taler Parties from and against any
-and all claims, damages, obligations, losses, liabilities, costs or
-debt, and expenses (including, but not limited to, attorney’s fees)
-arising from: (a) your use of and access to the Services; (b) any
-feedback or submissions you provide to us concerning the Taler Wallet;
-(c) your violation of any term of this Agreement; or (d) your
-violation of any law, rule, or regulation, or the rights of any third
-party.
-
-You agree that any claim you may have arising out of or related to
-your relationship with us must be filed within one year after such
-claim arises, otherwise, your claim in permanently barred.
-
-In the event of termination concerning your use of our Services, your
-obligations under this Agreement will still continue.
-
-
-Discontinuance of services and Force majeure
-============================================
-
-We may, in our sole discretion and without cost to you, with or
-without prior notice, and at any time, modify or discontinue,
-temporarily or permanently, any portion of our Services. We will use
-the Taler protocol’s provisions to notify Wallets if our Services are
-to be discontinued. It is your responsibility to ensure that the Taler
-Wallet is online at least once every three months to observe these
-notifications. We shall not be held responsible or liable for any loss
-of funds in the event that we discontinue or depreciate the Services
-and your Taler Wallet fails to transfer out the coins within a three
-months notification period.
-
-We shall not be held liable for any delays, failure in performance, or
-interruptions of service which result directly or indirectly from any
-cause or condition beyond our reasonable control, including but not
-limited to: any delay or failure due to any act of God, act of civil
-or military authorities, act of terrorism, civil disturbance, war,
-strike or other labor dispute, fire, interruption in
-telecommunications or Internet services or network provider services,
-failure of equipment and/or software, other catastrophe, or any other
-occurrence which is beyond our reasonable control and shall not affect
-the validity and enforceability of any remaining provisions.
-
-
-Governing law, Waivers, Severability and Assignment
-===================================================
-
-No matter where you’re located, the laws of Switzerland will govern
-these Terms. If any provisions of these Terms are inconsistent with
-any applicable law, those provisions will be superseded or modified
-only to the extent such provisions are inconsistent. The parties agree
-to submit to the ordinary courts in Zurich, Switzerland for exclusive
-jurisdiction of any dispute arising out of or related to your use of
-the Services or your breach of these Terms.
-
-Our failure to exercise or delay in exercising any right, power, or
-privilege under this Agreement shall not operate as a waiver; nor
-shall any single or partial exercise of any right, power, or privilege
-preclude any other or further exercise thereof.
-
-You agree that we may assign any of our rights and/or transfer, sub-
-contract, or delegate any of our obligations under these Terms.
-
-If it turns out that any part of this Agreement is invalid, void, or
-for any reason unenforceable, that term will be deemed severable and
-limited or eliminated to the minimum extent necessary.
-
-This Agreement sets forth the entire understanding and agreement as to
-the subject matter hereof and supersedes any and all prior
-discussions, agreements, and understandings of any kind (including,
-without limitation, any prior versions of this Agreement) and every
-nature between us. Except as provided for above, any modification to
-this Agreement must be in writing and must be signed by both parties.
-
-
-Questions or comments
-=====================
-
-We welcome comments, questions, concerns, or suggestions. Please send
-us a message on our contact page at legal@taler-systems.com.
diff --git a/contrib/tos/en/tos-v0.pdf b/contrib/tos/en/tos-v0.pdf
deleted file mode 100644
index 9bce47031..000000000
--- a/contrib/tos/en/tos-v0.pdf
+++ /dev/null
Binary files differ
diff --git a/contrib/tos/en/tos-v0.txt b/contrib/tos/en/tos-v0.txt
deleted file mode 100644
index c124d70ee..000000000
--- a/contrib/tos/en/tos-v0.txt
+++ /dev/null
@@ -1,337 +0,0 @@
-Terms Of Service
-****************
-
-Last Updated: 12.4.2019
-
-Welcome! Taler Systems SA (“we,” “our,” or “us”) provides a payment
-service through our Internet presence (collectively the “Services”).
-Before using our Services, please read the Terms of Service (the
-“Terms” or the “Agreement”) carefully.
-
-
-Overview
-========
-
-This section provides a brief summary of the highlights of this
-Agreement. Please note that when you accept this Agreement, you are
-accepting all of the terms and conditions and not just this section.
-We and possibly other third parties provide Internet services which
-interact with the Taler Wallet’s self-hosted personal payment
-application. When using the Taler Wallet to interact with our
-Services, you are agreeing to our Terms, so please read carefully.
-
-
-Highlights:
------------
-
- * You are responsible for keeping the data in your Taler Wallet at
- all times under your control. Any losses arising from you not
- being in control of your private information are your problem.
-
- * We will try to transfer funds we hold in escrow for our users to
- any legal recipient to the best of our ability within the
- limitations of the law and our implementation. However, the
- Services offered today are highly experimental and the set of
- recipients of funds is severely restricted.
-
- * For our Services, we may charge transaction fees. The specific
- fee structure is provided based on the Taler protocol and should
- be shown to you when you withdraw electronic coins using a Taler
- Wallet. You agree and understand that the Taler protocol allows
- for the fee structure to change.
-
- * You agree to not intentionally overwhelm our systems with
- requests and follow responsible disclosure if you find security
- issues in our services.
-
- * We cannot be held accountable for our Services not being
- available due to circumstances beyond our control. If we modify
- or terminate our services, we will try to give you the
- opportunity to recover your funds. However, given the
- experimental state of the Services today, this may not be
- possible. You are strongly advised to limit your use of the
- Service to small-scale experiments expecting total loss of all
- funds.
-
-These terms outline approved uses of our Services. The Services and
-these Terms are still at an experimental stage. If you have any
-questions or comments related to this Agreement, please send us a
-message to legal@taler-systems.com. If you do not agree to this
-Agreement, you must not use our Services.
-
-
-How you accept this policy
-==========================
-
-By sending funds to us (to top-up your Taler Wallet), you acknowledge
-that you have read, understood, and agreed to these Terms. We reserve
-the right to change these Terms at any time. If you disagree with the
-change, we may in the future offer you with an easy option to recover
-your unspent funds. However, in the current experimental period you
-acknowledge that this feature is not yet available, resulting in your
-funds being lost unless you accept the new Terms. If you continue to
-use our Services other than to recover your unspent funds, your
-continued use of our Services following any such change will signify
-your acceptance to be bound by the then current Terms. Please check
-the effective date above to determine if there have been any changes
-since you have last reviewed these Terms.
-
-
-Services
-========
-
-We will try to transfer funds that we hold in escrow for our users to
-any legal recipient to the best of our ability and within the
-limitations of the law and our implementation. However, the Services
-offered today are highly experimental and the set of recipients of
-funds is severely restricted. The Taler Wallet can be loaded by
-exchanging fiat currencies against electronic coins. We are providing
-this exchange service. Once your Taler Wallet is loaded with
-electronic coins they can be spent for purchases if the seller is
-accepting Taler as a means of payment. We are not guaranteeing that
-any seller is accepting Taler at all or a particular seller. The
-seller or recipient of deposits of electronic coins must specify the
-target account, as per the design of the Taler protocol. They are
-responsible for following the protocol and specifying the correct bank
-account, and are solely liable for any losses that may arise from
-specifying the wrong account. We will allow the government to link
-wire transfers to the underlying contract hash. It is the
-responsibility of recipients to preserve the full contracts and to pay
-whatever taxes and charges may be applicable. Technical issues may
-lead to situations where we are unable to make transfers at all or
-lead to incorrect transfers that cannot be reversed. We will only
-refuse to execute transfers if the transfers are prohibited by a
-competent legal authority and we are ordered to do so.
-
-When using our Services, you agree to not take any action that
-intentionally imposes an unreasonable load on our infrastructure. If
-you find security problems in our Services, you agree to first report
-them to security@taler-systems.com and grant us the right to publish
-your report. We warrant that we will ourselves publicly disclose any
-issues reported within 3 months, and that we will not prosecute anyone
-reporting security issues if they did not exploit the issue beyond a
-proof-of-concept, and followed the above responsible disclosure
-practice.
-
-
-Fees
-====
-
-You agree to pay the fees for exchanges and withdrawals completed via
-the Taler Wallet ("Fees") as defined by us, which we may change from
-time to time. With the exception of wire transfer fees, Taler
-transaction fees are set for any electronic coin at the time of
-withdrawal and fixed throughout the validity period of the respective
-electronic coin. Your wallet should obtain and display applicable fees
-when withdrawing funds. Fees for coins obtained as change may differ
-from the fees applicable to the original coin. Wire transfer fees that
-are independent from electronic coins may change annually. You
-authorize us to charge or deduct applicable fees owed in connection
-with deposits, exchanges and withdrawals following the rules of the
-Taler protocol. We reserve the right to provide different types of
-rewards to users either in the form of discount for our Services or in
-any other form at our discretion and without prior notice to you.
-
-
-Eligibility and Financial self-responsibility
-=============================================
-
-To be eligible to use our Services, you must be able to form legally
-binding contracts or have the permission of your legal guardian. By
-using our Services, you represent and warrant that you meet all
-eligibility requirements that we outline in these Terms.
-
-You will be responsible for maintaining the availability, integrity
-and confidentiality of the data stored in your wallet. When you setup
-a Taler Wallet, you are strongly advised to follow the precautionary
-measures offered by the software to minimize the chances to losse
-access to or control over your Wallet data. We will not be liable for
-any loss or damage arising from your failure to comply with this
-paragraph.
-
-
-Copyrights and trademarks
-=========================
-
-The Taler Wallet is released under the terms of the GNU General Public
-License (GNU GPL). You have the right to access, use, and share the
-Taler Wallet, in modified or unmodified form. However, the GPL is a
-strong copyleft license, which means that any derivative works must be
-distributed under the same license terms as the original software. If
-you have any questions, you should review the GNU GPL’s full terms and
-conditions at https://www.gnu.org/licenses/gpl-3.0.en.html. “Taler”
-itself is a trademark of Taler Systems SA. You are welcome to use the
-name in relation to processing payments using the Taler protocol,
-assuming your use is compatible with an official release from the GNU
-Project that is not older than two years.
-
-
-Limitation of liability & disclaimer of warranties
-==================================================
-
-You understand and agree that we have no control over, and no duty to
-take any action regarding: Failures, disruptions, errors, or delays in
-processing that you may experience while using our Services; The risk
-of failure of hardware, software, and Internet connections; The risk
-of malicious software being introduced or found in the software
-underlying the Taler Wallet; The risk that third parties may obtain
-unauthorized access to information stored within your Taler Wallet,
-including, but not limited to your Taler Wallet coins or backup
-encryption keys. You release us from all liability related to any
-losses, damages, or claims arising from:
-
-1. user error such as forgotten passwords, incorrectly constructed
- transactions;
-
-2. server failure or data loss;
-
-3. unauthorized access to the Taler Wallet application;
-
-4. bugs or other errors in the Taler Wallet software; and
-
-5. any unauthorized third party activities, including, but not limited
- to, the use of viruses, phishing, brute forcing, or other means of
- attack against the Taler Wallet. We make no representations
- concerning any Third Party Content contained in or accessed through
- our Services.
-
-Any other terms, conditions, warranties, or representations associated
-with such content, are solely between you and such organizations
-and/or individuals.
-
-To the fullest extent permitted by applicable law, in no event will we
-or any of our officers, directors, representatives, agents, servants,
-counsel, employees, consultants, lawyers, and other personnel
-authorized to act, acting, or purporting to act on our behalf
-(collectively the “Taler Parties”) be liable to you under contract,
-tort, strict liability, negligence, or any other legal or equitable
-theory, for:
-
-1. any lost profits, data loss, cost of procurement of substitute
- goods or services, or direct, indirect, incidental, special,
- punitive, compensatory, or consequential damages of any kind
- whatsoever resulting from:
-
- 1. your use of, or conduct in connection with, our services;
-
- 2. any unauthorized use of your wallet and/or private key due to
- your failure to maintain the confidentiality of your wallet;
-
- 3. any interruption or cessation of transmission to or from the
- services; or
-
- 4. any bugs, viruses, trojan horses, or the like that are found in
- the Taler Wallet software or that may be transmitted to or
- through our services by any third party (regardless of the
- source of origination), or
-
-2. any direct damages.
-
-These limitations apply regardless of legal theory, whether based on
-tort, strict liability, breach of contract, breach of warranty, or any
-other legal theory, and whether or not we were advised of the
-possibility of such damages. Some jurisdictions do not allow the
-exclusion or limitation of liability for consequential or incidental
-damages, so the above limitation may not apply to you.
-
-Our services are provided "as is" and without warranty of any kind. To
-the maximum extent permitted by law, we disclaim all representations
-and warranties, express or implied, relating to the services and
-underlying software or any content on the services, whether provided
-or owned by us or by any third party, including without limitation,
-warranties of merchantability, fitness for a particular purpose,
-title, non-infringement, freedom from computer virus, and any implied
-warranties arising from course of dealing, course of performance, or
-usage in trade, all of which are expressly disclaimed. In addition, we
-do not represent or warrant that the content accessible via the
-services is accurate, complete, available, current, free of viruses or
-other harmful components, or that the results of using the services
-will meet your requirements. Some states do not allow the disclaimer
-of implied warranties, so the foregoing disclaimers may not apply to
-you. This paragraph gives you specific legal rights and you may also
-have other legal rights that vary from state to state.
-
-
-Indemnity and Time limitation on claims and Termination
-=======================================================
-
-To the extent permitted by applicable law, you agree to defend,
-indemnify, and hold harmless the Taler Parties from and against any
-and all claims, damages, obligations, losses, liabilities, costs or
-debt, and expenses (including, but not limited to, attorney’s fees)
-arising from: (a) your use of and access to the Services; (b) any
-feedback or submissions you provide to us concerning the Taler Wallet;
-(c) your violation of any term of this Agreement; or (d) your
-violation of any law, rule, or regulation, or the rights of any third
-party.
-
-You agree that any claim you may have arising out of or related to
-your relationship with us must be filed within one year after such
-claim arises, otherwise, your claim in permanently barred.
-
-In the event of termination concerning your use of our Services, your
-obligations under this Agreement will still continue.
-
-
-Discontinuance of services and Force majeure
-============================================
-
-We may, in our sole discretion and without cost to you, with or
-without prior notice, and at any time, modify or discontinue,
-temporarily or permanently, any portion of our Services. We will use
-the Taler protocol’s provisions to notify Wallets if our Services are
-to be discontinued. It is your responsibility to ensure that the Taler
-Wallet is online at least once every three months to observe these
-notifications. We shall not be held responsible or liable for any loss
-of funds in the event that we discontinue or depreciate the Services
-and your Taler Wallet fails to transfer out the coins within a three
-months notification period.
-
-We shall not be held liable for any delays, failure in performance, or
-interruptions of service which result directly or indirectly from any
-cause or condition beyond our reasonable control, including but not
-limited to: any delay or failure due to any act of God, act of civil
-or military authorities, act of terrorism, civil disturbance, war,
-strike or other labor dispute, fire, interruption in
-telecommunications or Internet services or network provider services,
-failure of equipment and/or software, other catastrophe, or any other
-occurrence which is beyond our reasonable control and shall not affect
-the validity and enforceability of any remaining provisions.
-
-
-Governing law, Waivers, Severability and Assignment
-===================================================
-
-No matter where you’re located, the laws of Switzerland will govern
-these Terms. If any provisions of these Terms are inconsistent with
-any applicable law, those provisions will be superseded or modified
-only to the extent such provisions are inconsistent. The parties agree
-to submit to the ordinary courts in Zurich, Switzerland for exclusive
-jurisdiction of any dispute arising out of or related to your use of
-the Services or your breach of these Terms.
-
-Our failure to exercise or delay in exercising any right, power, or
-privilege under this Agreement shall not operate as a waiver; nor
-shall any single or partial exercise of any right, power, or privilege
-preclude any other or further exercise thereof.
-
-You agree that we may assign any of our rights and/or transfer, sub-
-contract, or delegate any of our obligations under these Terms.
-
-If it turns out that any part of this Agreement is invalid, void, or
-for any reason unenforceable, that term will be deemed severable and
-limited or eliminated to the minimum extent necessary.
-
-This Agreement sets forth the entire understanding and agreement as to
-the subject matter hereof and supersedes any and all prior
-discussions, agreements, and understandings of any kind (including,
-without limitation, any prior versions of this Agreement) and every
-nature between us. Except as provided for above, any modification to
-this Agreement must be in writing and must be signed by both parties.
-
-
-Questions or comments
-=====================
-
-We welcome comments, questions, concerns, or suggestions. Please send
-us a message on our contact page at legal@taler-systems.com.
diff --git a/contrib/tos/en/tos-v0.xml b/contrib/tos/en/tos-v0.xml
deleted file mode 100644
index 8ebf6df4c..000000000
--- a/contrib/tos/en/tos-v0.xml
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE document PUBLIC "+//IDN docutils.sourceforge.net//DTD Docutils Generic//EN//XML" "http://docutils.sourceforge.net/docs/ref/docutils.dtd">
-<!-- Generated by Docutils 0.16 -->
-<document source="/research/taler/exchange/contrib/tos/tos-v0.rst">
- <section ids="terms-of-service" names="terms\ of\ service">
- <title>Terms Of Service</title>
- <paragraph>Last Updated: 12.4.2019</paragraph>
- <paragraph>Welcome! Taler Systems SA (“we,” “our,” or “us”) provides a payment service
- through our Internet presence (collectively the “Services”). Before using our
- Services, please read the Terms of Service (the “Terms” or the “Agreement”)
- carefully.</paragraph>
- <section ids="overview" names="overview">
- <title>Overview</title>
- <paragraph>This section provides a brief summary of the highlights of this
- Agreement. Please note that when you accept this Agreement, you are accepting
- all of the terms and conditions and not just this section. We and possibly
- other third parties provide Internet services which interact with the Taler
- Wallet’s self-hosted personal payment application. When using the Taler Wallet
- to interact with our Services, you are agreeing to our Terms, so please read
- carefully.</paragraph>
- <section ids="highlights" names="highlights:">
- <title>Highlights:</title>
- <block_quote>
- <bullet_list bullet="•">
- <list_item>
- <paragraph>You are responsible for keeping the data in your Taler Wallet at all times
- under your control. Any losses arising from you not being in control of
- your private information are your problem.</paragraph>
- </list_item>
- <list_item>
- <paragraph>We will try to transfer funds we hold in escrow for our users to any legal
- recipient to the best of our ability within the limitations of the law and
- our implementation. However, the Services offered today are highly
- experimental and the set of recipients of funds is severely restricted.</paragraph>
- </list_item>
- <list_item>
- <paragraph>For our Services, we may charge transaction fees. The specific fee structure
- is provided based on the Taler protocol and should be shown to you when you
- withdraw electronic coins using a Taler Wallet. You agree and understand
- that the Taler protocol allows for the fee structure to change.</paragraph>
- </list_item>
- <list_item>
- <paragraph>You agree to not intentionally overwhelm our systems with requests and
- follow responsible disclosure if you find security issues in our services.</paragraph>
- </list_item>
- <list_item>
- <paragraph>We cannot be held accountable for our Services not being available due to
- circumstances beyond our control. If we modify or terminate our services,
- we will try to give you the opportunity to recover your funds. However,
- given the experimental state of the Services today, this may not be
- possible. You are strongly advised to limit your use of the Service
- to small-scale experiments expecting total loss of all funds.</paragraph>
- </list_item>
- </bullet_list>
- </block_quote>
- <paragraph>These terms outline approved uses of our Services. The Services and these
- Terms are still at an experimental stage. If you have any questions or
- comments related to this Agreement, please send us a message to
- <reference refuri="mailto:legal@taler-systems.com">legal@taler-systems.com</reference>. If you do not agree to this Agreement, you must not
- use our Services.</paragraph>
- </section>
- </section>
- <section ids="how-you-accept-this-policy" names="how\ you\ accept\ this\ policy">
- <title>How you accept this policy</title>
- <paragraph>By sending funds to us (to top-up your Taler Wallet), you acknowledge that you
- have read, understood, and agreed to these Terms. We reserve the right to
- change these Terms at any time. If you disagree with the change, we may in the
- future offer you with an easy option to recover your unspent funds. However,
- in the current experimental period you acknowledge that this feature is not
- yet available, resulting in your funds being lost unless you accept the new
- Terms. If you continue to use our Services other than to recover your unspent
- funds, your continued use of our Services following any such change will
- signify your acceptance to be bound by the then current Terms. Please check
- the effective date above to determine if there have been any changes since you
- have last reviewed these Terms.</paragraph>
- </section>
- <section ids="services" names="services">
- <title>Services</title>
- <paragraph>We will try to transfer funds that we hold in escrow for our users to any
- legal recipient to the best of our ability and within the limitations of the
- law and our implementation. However, the Services offered today are highly
- experimental and the set of recipients of funds is severely restricted. The
- Taler Wallet can be loaded by exchanging fiat currencies against electronic
- coins. We are providing this exchange service. Once your Taler Wallet is
- loaded with electronic coins they can be spent for purchases if the seller is
- accepting Taler as a means of payment. We are not guaranteeing that any seller
- is accepting Taler at all or a particular seller. The seller or recipient of
- deposits of electronic coins must specify the target account, as per the
- design of the Taler protocol. They are responsible for following the protocol
- and specifying the correct bank account, and are solely liable for any losses
- that may arise from specifying the wrong account. We will allow the government
- to link wire transfers to the underlying contract hash. It is the
- responsibility of recipients to preserve the full contracts and to pay
- whatever taxes and charges may be applicable. Technical issues may lead to
- situations where we are unable to make transfers at all or lead to incorrect
- transfers that cannot be reversed. We will only refuse to execute transfers if
- the transfers are prohibited by a competent legal authority and we are ordered
- to do so.</paragraph>
- <paragraph>When using our Services, you agree to not take any action that intentionally
- imposes an unreasonable load on our infrastructure. If you find security
- problems in our Services, you agree to first report them to
- <reference refuri="mailto:security@taler-systems.com">security@taler-systems.com</reference> and grant us the right to publish your report. We
- warrant that we will ourselves publicly disclose any issues reported within 3
- months, and that we will not prosecute anyone reporting security issues if
- they did not exploit the issue beyond a proof-of-concept, and followed the
- above responsible disclosure practice.</paragraph>
- </section>
- <section ids="fees" names="fees">
- <title>Fees</title>
- <paragraph>You agree to pay the fees for exchanges and withdrawals completed via the
- Taler Wallet (“Fees”) as defined by us, which we may change from time to
- time. With the exception of wire transfer fees, Taler transaction fees are set
- for any electronic coin at the time of withdrawal and fixed throughout the
- validity period of the respective electronic coin. Your wallet should obtain
- and display applicable fees when withdrawing funds. Fees for coins obtained as
- change may differ from the fees applicable to the original coin. Wire transfer
- fees that are independent from electronic coins may change annually. You
- authorize us to charge or deduct applicable fees owed in connection with
- deposits, exchanges and withdrawals following the rules of the Taler protocol.
- We reserve the right to provide different types of rewards to users either in
- the form of discount for our Services or in any other form at our discretion
- and without prior notice to you.</paragraph>
- </section>
- <section ids="eligibility-and-financial-self-responsibility" names="eligibility\ and\ financial\ self-responsibility">
- <title>Eligibility and Financial self-responsibility</title>
- <paragraph>To be eligible to use our Services, you must be able to form legally binding
- contracts or have the permission of your legal guardian. By using our
- Services, you represent and warrant that you meet all eligibility requirements
- that we outline in these Terms.</paragraph>
- <paragraph>You will be responsible for maintaining the availability, integrity and
- confidentiality of the data stored in your wallet. When you setup a Taler
- Wallet, you are strongly advised to follow the precautionary measures offered
- by the software to minimize the chances to losse access to or control over
- your Wallet data. We will not be liable for any loss or damage arising from
- your failure to comply with this paragraph.</paragraph>
- </section>
- <section ids="copyrights-and-trademarks" names="copyrights\ and\ trademarks">
- <title>Copyrights and trademarks</title>
- <paragraph>The Taler Wallet is released under the terms of the GNU General Public License
- (GNU GPL). You have the right to access, use, and share the Taler Wallet, in
- modified or unmodified form. However, the GPL is a strong copyleft license,
- which means that any derivative works must be distributed under the same
- license terms as the original software. If you have any questions, you should
- review the GNU GPL’s full terms and conditions at
- <reference refuri="https://www.gnu.org/licenses/gpl-3.0.en.html">https://www.gnu.org/licenses/gpl-3.0.en.html</reference>. “Taler” itself is a trademark
- of Taler Systems SA. You are welcome to use the name in relation to processing
- payments using the Taler protocol, assuming your use is compatible with an
- official release from the GNU Project that is not older than two years.</paragraph>
- </section>
- <section ids="limitation-of-liability-disclaimer-of-warranties" names="limitation\ of\ liability\ &amp;\ disclaimer\ of\ warranties">
- <title>Limitation of liability &amp; disclaimer of warranties</title>
- <paragraph>You understand and agree that we have no control over, and no duty to take any
- action regarding: Failures, disruptions, errors, or delays in processing that
- you may experience while using our Services; The risk of failure of hardware,
- software, and Internet connections; The risk of malicious software being
- introduced or found in the software underlying the Taler Wallet; The risk that
- third parties may obtain unauthorized access to information stored within your
- Taler Wallet, including, but not limited to your Taler Wallet coins or backup
- encryption keys. You release us from all liability related to any losses,
- damages, or claims arising from:</paragraph>
- <enumerated_list enumtype="loweralpha" prefix="(" suffix=")">
- <list_item>
- <paragraph>user error such as forgotten passwords, incorrectly constructed
- transactions;</paragraph>
- </list_item>
- <list_item>
- <paragraph>server failure or data loss;</paragraph>
- </list_item>
- <list_item>
- <paragraph>unauthorized access to the Taler Wallet application;</paragraph>
- </list_item>
- <list_item>
- <paragraph>bugs or other errors in the Taler Wallet software; and</paragraph>
- </list_item>
- <list_item>
- <paragraph>any unauthorized third party activities, including, but not limited to,
- the use of viruses, phishing, brute forcing, or other means of attack
- against the Taler Wallet. We make no representations concerning any
- Third Party Content contained in or accessed through our Services.</paragraph>
- </list_item>
- </enumerated_list>
- <paragraph>Any other terms, conditions, warranties, or representations associated with
- such content, are solely between you and such organizations and/or
- individuals.</paragraph>
- <paragraph>To the fullest extent permitted by applicable law, in no event will we or any
- of our officers, directors, representatives, agents, servants, counsel,
- employees, consultants, lawyers, and other personnel authorized to act,
- acting, or purporting to act on our behalf (collectively the “Taler Parties”)
- be liable to you under contract, tort, strict liability, negligence, or any
- other legal or equitable theory, for:</paragraph>
- <enumerated_list enumtype="loweralpha" prefix="(" suffix=")">
- <list_item>
- <paragraph>any lost profits, data loss, cost of procurement of substitute goods or
- services, or direct, indirect, incidental, special, punitive, compensatory,
- or consequential damages of any kind whatsoever resulting from:</paragraph>
- </list_item>
- </enumerated_list>
- <block_quote>
- <enumerated_list enumtype="lowerroman" prefix="(" suffix=")">
- <list_item>
- <paragraph>your use of, or conduct in connection with, our services;</paragraph>
- </list_item>
- <list_item>
- <paragraph>any unauthorized use of your wallet and/or private key due to your
- failure to maintain the confidentiality of your wallet;</paragraph>
- </list_item>
- <list_item>
- <paragraph>any interruption or cessation of transmission to or from the services; or</paragraph>
- </list_item>
- <list_item>
- <paragraph>any bugs, viruses, trojan horses, or the like that are found in the Taler
- Wallet software or that may be transmitted to or through our services by
- any third party (regardless of the source of origination), or</paragraph>
- </list_item>
- </enumerated_list>
- </block_quote>
- <enumerated_list enumtype="loweralpha" prefix="(" start="2" suffix=")">
- <list_item>
- <paragraph>any direct damages.</paragraph>
- </list_item>
- </enumerated_list>
- <paragraph>These limitations apply regardless of legal theory, whether based on tort,
- strict liability, breach of contract, breach of warranty, or any other legal
- theory, and whether or not we were advised of the possibility of such
- damages. Some jurisdictions do not allow the exclusion or limitation of
- liability for consequential or incidental damages, so the above limitation may
- not apply to you.</paragraph>
- <paragraph>Our services are provided “as is” and without warranty of any kind. To the
- maximum extent permitted by law, we disclaim all representations and
- warranties, express or implied, relating to the services and underlying
- software or any content on the services, whether provided or owned by us or by
- any third party, including without limitation, warranties of merchantability,
- fitness for a particular purpose, title, non-infringement, freedom from
- computer virus, and any implied warranties arising from course of dealing,
- course of performance, or usage in trade, all of which are expressly
- disclaimed. In addition, we do not represent or warrant that the content
- accessible via the services is accurate, complete, available, current, free of
- viruses or other harmful components, or that the results of using the services
- will meet your requirements. Some states do not allow the disclaimer of
- implied warranties, so the foregoing disclaimers may not apply to you. This
- paragraph gives you specific legal rights and you may also have other legal
- rights that vary from state to state.</paragraph>
- </section>
- <section ids="indemnity-and-time-limitation-on-claims-and-termination" names="indemnity\ and\ time\ limitation\ on\ claims\ and\ termination">
- <title>Indemnity and Time limitation on claims and Termination</title>
- <paragraph>To the extent permitted by applicable law, you agree to defend, indemnify, and
- hold harmless the Taler Parties from and against any and all claims, damages,
- obligations, losses, liabilities, costs or debt, and expenses (including, but
- not limited to, attorney’s fees) arising from: (a) your use of and access to
- the Services; (b) any feedback or submissions you provide to us concerning the
- Taler Wallet; (c) your violation of any term of this Agreement; or (d) your
- violation of any law, rule, or regulation, or the rights of any third party.</paragraph>
- <paragraph>You agree that any claim you may have arising out of or related to your
- relationship with us must be filed within one year after such claim arises,
- otherwise, your claim in permanently barred.</paragraph>
- <paragraph>In the event of termination concerning your use of our Services, your
- obligations under this Agreement will still continue.</paragraph>
- </section>
- <section ids="discontinuance-of-services-and-force-majeure" names="discontinuance\ of\ services\ and\ force\ majeure">
- <title>Discontinuance of services and Force majeure</title>
- <paragraph>We may, in our sole discretion and without cost to you, with or without prior
- notice, and at any time, modify or discontinue, temporarily or permanently,
- any portion of our Services. We will use the Taler protocol’s provisions to
- notify Wallets if our Services are to be discontinued. It is your
- responsibility to ensure that the Taler Wallet is online at least once every
- three months to observe these notifications. We shall not be held responsible
- or liable for any loss of funds in the event that we discontinue or depreciate
- the Services and your Taler Wallet fails to transfer out the coins within a
- three months notification period.</paragraph>
- <paragraph>We shall not be held liable for any delays, failure in performance, or
- interruptions of service which result directly or indirectly from any cause or
- condition beyond our reasonable control, including but not limited to: any
- delay or failure due to any act of God, act of civil or military authorities,
- act of terrorism, civil disturbance, war, strike or other labor dispute, fire,
- interruption in telecommunications or Internet services or network provider
- services, failure of equipment and/or software, other catastrophe, or any
- other occurrence which is beyond our reasonable control and shall not affect
- the validity and enforceability of any remaining provisions.</paragraph>
- </section>
- <section ids="governing-law-waivers-severability-and-assignment" names="governing\ law,\ waivers,\ severability\ and\ assignment">
- <title>Governing law, Waivers, Severability and Assignment</title>
- <paragraph>No matter where you’re located, the laws of Switzerland will govern these
- Terms. If any provisions of these Terms are inconsistent with any applicable
- law, those provisions will be superseded or modified only to the extent such
- provisions are inconsistent. The parties agree to submit to the ordinary
- courts in Zurich, Switzerland for exclusive jurisdiction of any dispute
- arising out of or related to your use of the Services or your breach of these
- Terms.</paragraph>
- <paragraph>Our failure to exercise or delay in exercising any right, power, or privilege
- under this Agreement shall not operate as a waiver; nor shall any single or
- partial exercise of any right, power, or privilege preclude any other or
- further exercise thereof.</paragraph>
- <paragraph>You agree that we may assign any of our rights and/or transfer, sub-contract,
- or delegate any of our obligations under these Terms.</paragraph>
- <paragraph>If it turns out that any part of this Agreement is invalid, void, or for any
- reason unenforceable, that term will be deemed severable and limited or
- eliminated to the minimum extent necessary.</paragraph>
- <paragraph>This Agreement sets forth the entire understanding and agreement as to the
- subject matter hereof and supersedes any and all prior discussions,
- agreements, and understandings of any kind (including, without limitation, any
- prior versions of this Agreement) and every nature between us. Except as
- provided for above, any modification to this Agreement must be in writing and
- must be signed by both parties.</paragraph>
- </section>
- <section ids="questions-or-comments" names="questions\ or\ comments">
- <title>Questions or comments</title>
- <paragraph>We welcome comments, questions, concerns, or suggestions. Please send us a
- message on our contact page at <reference refuri="mailto:legal@taler-systems.com">legal@taler-systems.com</reference>.</paragraph>
- </section>
- </section>
-</document>
diff --git a/contrib/tos/locale/de/LC_MESSAGES/tos.po b/contrib/tos/locale/de/LC_MESSAGES/tos.po
deleted file mode 100644
index e821c9c1f..000000000
--- a/contrib/tos/locale/de/LC_MESSAGES/tos.po
+++ /dev/null
@@ -1,241 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2014-2020 Taler Systems SA (GPLv3+ or GFDL 1.3+)
-# This file is distributed under the same license as the tos package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: tos 0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-09-30 21:42+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../tos.rst:2
-msgid "Terms Of Service"
-msgstr ""
-
-#: ../../tos.rst:4
-msgid "Last Updated: 12.4.2019"
-msgstr ""
-
-#: ../../tos.rst:6
-msgid "Welcome! Taler Systems SA (“we,” “our,” or “us”) provides a payment service through our Internet presence (collectively the “Services”). Before using our Services, please read the Terms of Service (the “Terms” or the “Agreement”) carefully."
-msgstr ""
-
-#: ../../tos.rst:12
-msgid "Overview"
-msgstr ""
-
-#: ../../tos.rst:14
-msgid "This section provides a brief summary of the highlights of this Agreement. Please note that when you accept this Agreement, you are accepting all of the terms and conditions and not just this section. We and possibly other third parties provide Internet services which interact with the Taler Wallet’s self-hosted personal payment application. When using the Taler Wallet to interact with our Services, you are agreeing to our Terms, so please read carefully."
-msgstr ""
-
-#: ../../tos.rst:23
-msgid "Highlights:"
-msgstr ""
-
-#: ../../tos.rst:25
-msgid "You are responsible for keeping the data in your Taler Wallet at all times under your control. Any losses arising from you not being in control of your private information are your problem."
-msgstr ""
-
-#: ../../tos.rst:28
-msgid "We will try to transfer funds we hold in escrow for our users to any legal recipient to the best of our ability within the limitations of the law and our implementation. However, the Services offered today are highly experimental and the set of recipients of funds is severely restricted."
-msgstr ""
-
-#: ../../tos.rst:32
-msgid "For our Services, we may charge transaction fees. The specific fee structure is provided based on the Taler protocol and should be shown to you when you withdraw electronic coins using a Taler Wallet. You agree and understand that the Taler protocol allows for the fee structure to change."
-msgstr ""
-
-#: ../../tos.rst:36
-msgid "You agree to not intentionally overwhelm our systems with requests and follow responsible disclosure if you find security issues in our services."
-msgstr ""
-
-#: ../../tos.rst:38
-msgid "We cannot be held accountable for our Services not being available due to circumstances beyond our control. If we modify or terminate our services, we will try to give you the opportunity to recover your funds. However, given the experimental state of the Services today, this may not be possible. You are strongly advised to limit your use of the Service to small-scale experiments expecting total loss of all funds."
-msgstr ""
-
-#: ../../tos.rst:45
-msgid "These terms outline approved uses of our Services. The Services and these Terms are still at an experimental stage. If you have any questions or comments related to this Agreement, please send us a message to legal@taler-systems.com. If you do not agree to this Agreement, you must not use our Services."
-msgstr ""
-
-#: ../../tos.rst:52
-msgid "How you accept this policy"
-msgstr ""
-
-#: ../../tos.rst:54
-msgid "By sending funds to us (to top-up your Taler Wallet), you acknowledge that you have read, understood, and agreed to these Terms. We reserve the right to change these Terms at any time. If you disagree with the change, we may in the future offer you with an easy option to recover your unspent funds. However, in the current experimental period you acknowledge that this feature is not yet available, resulting in your funds being lost unless you accept the new Terms. If you continue to use our Services other than to recover your unspent funds, your continued use of our Services following any such change will signify your acceptance to be bound by the then current Terms. Please check the effective date above to determine if there have been any changes since you have last reviewed these Terms."
-msgstr ""
-
-#: ../../tos.rst:67
-msgid "Services"
-msgstr ""
-
-#: ../../tos.rst:69
-msgid "We will try to transfer funds that we hold in escrow for our users to any legal recipient to the best of our ability and within the limitations of the law and our implementation. However, the Services offered today are highly experimental and the set of recipients of funds is severely restricted. The Taler Wallet can be loaded by exchanging fiat currencies against electronic coins. We are providing this exchange service. Once your Taler Wallet is loaded with electronic coins they can be spent for purchases if the seller is accepting Taler as a means of payment. We are not guaranteeing that any seller is accepting Taler at all or a particular seller. The seller or recipient of deposits of electronic coins must specify the target account, as per the design of the Taler protocol. They are responsible for following the protocol and specifying the correct bank account, and are solely liable for any losses that may arise from specifying the wrong account. We will allow the government to link wire transfers to the underlying contract hash. It is the responsibility of recipients to preserve the full contracts and to pay whatever taxes and charges may be applicable. Technical issues may lead to situations where we are unable to make transfers at all or lead to incorrect transfers that cannot be reversed. We will only refuse to execute transfers if the transfers are prohibited by a competent legal authority and we are ordered to do so."
-msgstr ""
-
-#: ../../tos.rst:90
-msgid "When using our Services, you agree to not take any action that intentionally imposes an unreasonable load on our infrastructure. If you find security problems in our Services, you agree to first report them to security@taler-systems.com and grant us the right to publish your report. We warrant that we will ourselves publicly disclose any issues reported within 3 months, and that we will not prosecute anyone reporting security issues if they did not exploit the issue beyond a proof-of-concept, and followed the above responsible disclosure practice."
-msgstr ""
-
-#: ../../tos.rst:101
-msgid "Fees"
-msgstr ""
-
-#: ../../tos.rst:103
-msgid "You agree to pay the fees for exchanges and withdrawals completed via the Taler Wallet (\"Fees\") as defined by us, which we may change from time to time. With the exception of wire transfer fees, Taler transaction fees are set for any electronic coin at the time of withdrawal and fixed throughout the validity period of the respective electronic coin. Your wallet should obtain and display applicable fees when withdrawing funds. Fees for coins obtained as change may differ from the fees applicable to the original coin. Wire transfer fees that are independent from electronic coins may change annually. You authorize us to charge or deduct applicable fees owed in connection with deposits, exchanges and withdrawals following the rules of the Taler protocol. We reserve the right to provide different types of rewards to users either in the form of discount for our Services or in any other form at our discretion and without prior notice to you."
-msgstr ""
-
-#: ../../tos.rst:118
-msgid "Eligibility and Financial self-responsibility"
-msgstr ""
-
-#: ../../tos.rst:120
-msgid "To be eligible to use our Services, you must be able to form legally binding contracts or have the permission of your legal guardian. By using our Services, you represent and warrant that you meet all eligibility requirements that we outline in these Terms."
-msgstr ""
-
-#: ../../tos.rst:125
-msgid "You will be responsible for maintaining the availability, integrity and confidentiality of the data stored in your wallet. When you setup a Taler Wallet, you are strongly advised to follow the precautionary measures offered by the software to minimize the chances to losse access to or control over your Wallet data. We will not be liable for any loss or damage arising from your failure to comply with this paragraph."
-msgstr ""
-
-#: ../../tos.rst:133
-msgid "Copyrights and trademarks"
-msgstr ""
-
-#: ../../tos.rst:135
-msgid "The Taler Wallet is released under the terms of the GNU General Public License (GNU GPL). You have the right to access, use, and share the Taler Wallet, in modified or unmodified form. However, the GPL is a strong copyleft license, which means that any derivative works must be distributed under the same license terms as the original software. If you have any questions, you should review the GNU GPL’s full terms and conditions at https://www.gnu.org/licenses/gpl-3.0.en.html. “Taler” itself is a trademark of Taler Systems SA. You are welcome to use the name in relation to processing payments using the Taler protocol, assuming your use is compatible with an official release from the GNU Project that is not older than two years."
-msgstr ""
-
-#: ../../tos.rst:148
-msgid "Limitation of liability & disclaimer of warranties"
-msgstr ""
-
-#: ../../tos.rst:150
-msgid "You understand and agree that we have no control over, and no duty to take any action regarding: Failures, disruptions, errors, or delays in processing that you may experience while using our Services; The risk of failure of hardware, software, and Internet connections; The risk of malicious software being introduced or found in the software underlying the Taler Wallet; The risk that third parties may obtain unauthorized access to information stored within your Taler Wallet, including, but not limited to your Taler Wallet coins or backup encryption keys. You release us from all liability related to any losses, damages, or claims arising from:"
-msgstr ""
-
-#: ../../tos.rst:160
-msgid "user error such as forgotten passwords, incorrectly constructed transactions;"
-msgstr ""
-
-#: ../../tos.rst:162
-msgid "server failure or data loss;"
-msgstr ""
-
-#: ../../tos.rst:163
-msgid "unauthorized access to the Taler Wallet application;"
-msgstr ""
-
-#: ../../tos.rst:164
-msgid "bugs or other errors in the Taler Wallet software; and"
-msgstr ""
-
-#: ../../tos.rst:165
-msgid "any unauthorized third party activities, including, but not limited to, the use of viruses, phishing, brute forcing, or other means of attack against the Taler Wallet. We make no representations concerning any Third Party Content contained in or accessed through our Services."
-msgstr ""
-
-#: ../../tos.rst:170
-msgid "Any other terms, conditions, warranties, or representations associated with such content, are solely between you and such organizations and/or individuals."
-msgstr ""
-
-#: ../../tos.rst:174
-msgid "To the fullest extent permitted by applicable law, in no event will we or any of our officers, directors, representatives, agents, servants, counsel, employees, consultants, lawyers, and other personnel authorized to act, acting, or purporting to act on our behalf (collectively the “Taler Parties”) be liable to you under contract, tort, strict liability, negligence, or any other legal or equitable theory, for:"
-msgstr ""
-
-#: ../../tos.rst:181
-msgid "any lost profits, data loss, cost of procurement of substitute goods or services, or direct, indirect, incidental, special, punitive, compensatory, or consequential damages of any kind whatsoever resulting from:"
-msgstr ""
-
-#: ../../tos.rst:185
-msgid "your use of, or conduct in connection with, our services;"
-msgstr ""
-
-#: ../../tos.rst:186
-msgid "any unauthorized use of your wallet and/or private key due to your failure to maintain the confidentiality of your wallet;"
-msgstr ""
-
-#: ../../tos.rst:188
-msgid "any interruption or cessation of transmission to or from the services; or"
-msgstr ""
-
-#: ../../tos.rst:189
-msgid "any bugs, viruses, trojan horses, or the like that are found in the Taler Wallet software or that may be transmitted to or through our services by any third party (regardless of the source of origination), or"
-msgstr ""
-
-#: ../../tos.rst:193
-msgid "any direct damages."
-msgstr ""
-
-#: ../../tos.rst:195
-msgid "These limitations apply regardless of legal theory, whether based on tort, strict liability, breach of contract, breach of warranty, or any other legal theory, and whether or not we were advised of the possibility of such damages. Some jurisdictions do not allow the exclusion or limitation of liability for consequential or incidental damages, so the above limitation may not apply to you."
-msgstr ""
-
-#: ../../tos.rst:202
-msgid "Our services are provided \"as is\" and without warranty of any kind. To the maximum extent permitted by law, we disclaim all representations and warranties, express or implied, relating to the services and underlying software or any content on the services, whether provided or owned by us or by any third party, including without limitation, warranties of merchantability, fitness for a particular purpose, title, non-infringement, freedom from computer virus, and any implied warranties arising from course of dealing, course of performance, or usage in trade, all of which are expressly disclaimed. In addition, we do not represent or warrant that the content accessible via the services is accurate, complete, available, current, free of viruses or other harmful components, or that the results of using the services will meet your requirements. Some states do not allow the disclaimer of implied warranties, so the foregoing disclaimers may not apply to you. This paragraph gives you specific legal rights and you may also have other legal rights that vary from state to state."
-msgstr ""
-
-#: ../../tos.rst:219
-msgid "Indemnity and Time limitation on claims and Termination"
-msgstr ""
-
-#: ../../tos.rst:221
-msgid "To the extent permitted by applicable law, you agree to defend, indemnify, and hold harmless the Taler Parties from and against any and all claims, damages, obligations, losses, liabilities, costs or debt, and expenses (including, but not limited to, attorney’s fees) arising from: (a) your use of and access to the Services; (b) any feedback or submissions you provide to us concerning the Taler Wallet; (c) your violation of any term of this Agreement; or (d) your violation of any law, rule, or regulation, or the rights of any third party."
-msgstr ""
-
-#: ../../tos.rst:229
-msgid "You agree that any claim you may have arising out of or related to your relationship with us must be filed within one year after such claim arises, otherwise, your claim in permanently barred."
-msgstr ""
-
-#: ../../tos.rst:233
-msgid "In the event of termination concerning your use of our Services, your obligations under this Agreement will still continue."
-msgstr ""
-
-#: ../../tos.rst:238
-msgid "Discontinuance of services and Force majeure"
-msgstr ""
-
-#: ../../tos.rst:240
-msgid "We may, in our sole discretion and without cost to you, with or without prior notice, and at any time, modify or discontinue, temporarily or permanently, any portion of our Services. We will use the Taler protocol’s provisions to notify Wallets if our Services are to be discontinued. It is your responsibility to ensure that the Taler Wallet is online at least once every three months to observe these notifications. We shall not be held responsible or liable for any loss of funds in the event that we discontinue or depreciate the Services and your Taler Wallet fails to transfer out the coins within a three months notification period."
-msgstr ""
-
-#: ../../tos.rst:250
-msgid "We shall not be held liable for any delays, failure in performance, or interruptions of service which result directly or indirectly from any cause or condition beyond our reasonable control, including but not limited to: any delay or failure due to any act of God, act of civil or military authorities, act of terrorism, civil disturbance, war, strike or other labor dispute, fire, interruption in telecommunications or Internet services or network provider services, failure of equipment and/or software, other catastrophe, or any other occurrence which is beyond our reasonable control and shall not affect the validity and enforceability of any remaining provisions."
-msgstr ""
-
-#: ../../tos.rst:262
-msgid "Governing law, Waivers, Severability and Assignment"
-msgstr ""
-
-#: ../../tos.rst:264
-msgid "No matter where you’re located, the laws of Switzerland will govern these Terms. If any provisions of these Terms are inconsistent with any applicable law, those provisions will be superseded or modified only to the extent such provisions are inconsistent. The parties agree to submit to the ordinary courts in Zurich, Switzerland for exclusive jurisdiction of any dispute arising out of or related to your use of the Services or your breach of these Terms."
-msgstr ""
-
-#: ../../tos.rst:272
-msgid "Our failure to exercise or delay in exercising any right, power, or privilege under this Agreement shall not operate as a waiver; nor shall any single or partial exercise of any right, power, or privilege preclude any other or further exercise thereof."
-msgstr ""
-
-#: ../../tos.rst:277
-msgid "You agree that we may assign any of our rights and/or transfer, sub-contract, or delegate any of our obligations under these Terms."
-msgstr ""
-
-#: ../../tos.rst:280
-msgid "If it turns out that any part of this Agreement is invalid, void, or for any reason unenforceable, that term will be deemed severable and limited or eliminated to the minimum extent necessary."
-msgstr ""
-
-#: ../../tos.rst:284
-msgid "This Agreement sets forth the entire understanding and agreement as to the subject matter hereof and supersedes any and all prior discussions, agreements, and understandings of any kind (including, without limitation, any prior versions of this Agreement) and every nature between us. Except as provided for above, any modification to this Agreement must be in writing and must be signed by both parties."
-msgstr ""
-
-#: ../../tos.rst:293
-msgid "Questions or comments"
-msgstr ""
-
-#: ../../tos.rst:295
-msgid "We welcome comments, questions, concerns, or suggestions. Please send us a message on our contact page at legal@taler-systems.com."
-msgstr ""
diff --git a/contrib/uncrustify_precommit b/contrib/uncrustify_precommit
index 853c8125d..d0a64ef72 100755
--- a/contrib/uncrustify_precommit
+++ b/contrib/uncrustify_precommit
@@ -4,7 +4,7 @@
exec 1>&2
RET=0
-changed=$(git diff --cached --name-only | grep -v mustach)
+changed=$(git diff --cached --name-only | grep -v mustach | grep -v templating/test | grep -v valgrind.h)
crustified=""
for f in $changed;
@@ -28,7 +28,7 @@ done
if [ $RET = 1 ];
then
echo "Run"
- echo "uncrustify --no-backup -c uncrustify.cfg ${crustified}"
+ echo "uncrustify --replace -c uncrustify.cfg ${crustified}"
echo "before committing."
fi
exit $RET
diff --git a/contrib/wallet-core b/contrib/wallet-core
new file mode 160000
+Subproject 240d647da85de6b575d15c37efec04757541e3d