From 5162d4a5cb6aac81dbe5ef9c42b9a73d951a3178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B3=84=EB=8B=98?= Date: Tue, 17 Mar 2015 17:10:51 +0900 Subject: [PATCH] v1.1.0 --- changelog.md | 4 + documents/Makefile | 192 + .../_build/doctrees/apidoc/index.doctree | Bin 0 -> 5440 bytes documents/_build/doctrees/apidoc/ufp.doctree | Bin 0 -> 120127 bytes .../_build/doctrees/apidoc/ufp.gui.doctree | Bin 0 -> 20303 bytes .../doctrees/apidoc/ufp.terminal.doctree | Bin 0 -> 12120 bytes documents/_build/doctrees/environment.pickle | Bin 0 -> 55455 bytes documents/_build/doctrees/index.doctree | Bin 0 -> 5402 bytes documents/_build/doctrees/ufp.doctree | Bin 0 -> 120099 bytes documents/_build/doctrees/ufp.gui.doctree | Bin 0 -> 20289 bytes .../_build/doctrees/ufp.terminal.doctree | Bin 0 -> 12106 bytes documents/_build/html/.buildinfo | 4 + documents/_build/html/_modules/index.html | 188 + .../_build/html/_modules/ufp/cipher.html | 188 + .../_build/html/_modules/ufp/gui/notepad.html | 218 + .../html/_modules/ufp/gui/pulse_progress.html | 202 + documents/_build/html/_modules/ufp/html.html | 237 + documents/_build/html/_modules/ufp/image.html | 361 + documents/_build/html/_modules/ufp/path.html | 514 + documents/_build/html/_modules/ufp/pdf.html | 231 + .../_build/html/_modules/ufp/random.html | 200 + documents/_build/html/_modules/ufp/shell.html | 192 + .../_build/html/_modules/ufp/string.html | 193 + .../html/_modules/ufp/terminal/debug.html | 194 + .../html/_modules/ufp/terminal/terminal.html | 203 + documents/_build/html/_modules/ufp/ufp.html | 203 + documents/_build/html/_modules/ufp/web.html | 343 + .../_build/html/_sources/apidoc/index.txt | 23 + .../_build/html/_sources/apidoc/ufp.gui.txt | 30 + .../html/_sources/apidoc/ufp.terminal.txt | 30 + documents/_build/html/_sources/apidoc/ufp.txt | 102 + documents/_build/html/_sources/index.txt | 22 + documents/_build/html/_sources/ufp.gui.txt | 30 + .../_build/html/_sources/ufp.terminal.txt | 30 + documents/_build/html/_sources/ufp.txt | 102 + documents/_build/html/_static/ajax-loader.gif | Bin 0 -> 673 bytes documents/_build/html/_static/basic.css | 599 + .../_build/html/_static/comment-bright.png | Bin 0 -> 3500 bytes .../_build/html/_static/comment-close.png | Bin 0 -> 3578 bytes documents/_build/html/_static/comment.png | Bin 0 -> 3445 bytes .../_build/html/_static/css/badge_only.css | 2 + documents/_build/html/_static/css/theme.css | 5 + documents/_build/html/_static/doctools.js | 263 + .../_build/html/_static/down-pressed.png | Bin 0 -> 347 bytes documents/_build/html/_static/down.png | Bin 0 -> 347 bytes documents/_build/html/_static/file.png | Bin 0 -> 358 bytes .../_static/fonts/fontawesome-webfont.eot | Bin 0 -> 38205 bytes .../_static/fonts/fontawesome-webfont.svg | 414 + .../_static/fonts/fontawesome-webfont.ttf | Bin 0 -> 80652 bytes .../_static/fonts/fontawesome-webfont.woff | Bin 0 -> 44432 bytes .../_build/html/_static/jquery-1.11.1.js | 10308 ++++++++++++++++ documents/_build/html/_static/jquery.js | 4 + documents/_build/html/_static/js/theme.js | 47 + documents/_build/html/_static/minus.png | Bin 0 -> 173 bytes documents/_build/html/_static/plus.png | Bin 0 -> 173 bytes documents/_build/html/_static/pygments.css | 63 + documents/_build/html/_static/searchtools.js | 622 + documents/_build/html/_static/translations.js | 1 + .../_build/html/_static/underscore-1.3.1.js | 999 ++ documents/_build/html/_static/underscore.js | 31 + documents/_build/html/_static/up-pressed.png | Bin 0 -> 345 bytes documents/_build/html/_static/up.png | Bin 0 -> 345 bytes documents/_build/html/_static/websupport.js | 808 ++ documents/_build/html/apidoc/index.html | 210 + documents/_build/html/apidoc/ufp.gui.html | 223 + documents/_build/html/apidoc/ufp.html | 608 + .../_build/html/apidoc/ufp.terminal.html | 195 + documents/_build/html/genindex.html | 529 + documents/_build/html/index.html | 234 + documents/_build/html/objects.inv | Bin 0 -> 710 bytes documents/_build/html/py-modindex.html | 274 + documents/_build/html/search.html | 193 + documents/_build/html/searchindex.js | 1 + documents/_build/html/ufp.gui.html | 253 + documents/_build/html/ufp.html | 635 + documents/_build/html/ufp.terminal.html | 222 + documents/conf.py | 287 + documents/index.rst | 22 + documents/ufp.gui.rst | 30 + documents/ufp.rst | 102 + documents/ufp.terminal.rst | 30 + setup.py | 4 +- ufp/__init__.py | 8 +- ufp/__init__.pyc | Bin 833 -> 914 bytes ufp/cipher.pyc | Bin 0 -> 608 bytes ufp/gui/notepad.pyc | Bin 1567 -> 1933 bytes ufp/gui/pulse_progress.pyc | Bin 1574 -> 1704 bytes ufp/html.pyc | Bin 2661 -> 2817 bytes ufp/image.pyc | Bin 9035 -> 9185 bytes ufp/path.py | 5 +- ufp/path.pyc | Bin 10912 -> 11948 bytes ufp/pdf.pyc | Bin 1692 -> 1773 bytes ufp/random.pyc | Bin 0 -> 980 bytes ufp/shell.pyc | Bin 0 -> 741 bytes ufp/string.pyc | Bin 1224 -> 991 bytes ufp/terminal/debug.pyc | Bin 723 -> 1052 bytes ufp/ufp.py | 27 +- ufp/web.py | 1 + ufp/web.pyc | Bin 4114 -> 4410 bytes 99 files changed, 22489 insertions(+), 6 deletions(-) create mode 100644 documents/Makefile create mode 100644 documents/_build/doctrees/apidoc/index.doctree create mode 100644 documents/_build/doctrees/apidoc/ufp.doctree create mode 100644 documents/_build/doctrees/apidoc/ufp.gui.doctree create mode 100644 documents/_build/doctrees/apidoc/ufp.terminal.doctree create mode 100644 documents/_build/doctrees/environment.pickle create mode 100644 documents/_build/doctrees/index.doctree create mode 100644 documents/_build/doctrees/ufp.doctree create mode 100644 documents/_build/doctrees/ufp.gui.doctree create mode 100644 documents/_build/doctrees/ufp.terminal.doctree create mode 100644 documents/_build/html/.buildinfo create mode 100644 documents/_build/html/_modules/index.html create mode 100644 documents/_build/html/_modules/ufp/cipher.html create mode 100644 documents/_build/html/_modules/ufp/gui/notepad.html create mode 100644 documents/_build/html/_modules/ufp/gui/pulse_progress.html create mode 100644 documents/_build/html/_modules/ufp/html.html create mode 100644 documents/_build/html/_modules/ufp/image.html create mode 100644 documents/_build/html/_modules/ufp/path.html create mode 100644 documents/_build/html/_modules/ufp/pdf.html create mode 100644 documents/_build/html/_modules/ufp/random.html create mode 100644 documents/_build/html/_modules/ufp/shell.html create mode 100644 documents/_build/html/_modules/ufp/string.html create mode 100644 documents/_build/html/_modules/ufp/terminal/debug.html create mode 100644 documents/_build/html/_modules/ufp/terminal/terminal.html create mode 100644 documents/_build/html/_modules/ufp/ufp.html create mode 100644 documents/_build/html/_modules/ufp/web.html create mode 100644 documents/_build/html/_sources/apidoc/index.txt create mode 100644 documents/_build/html/_sources/apidoc/ufp.gui.txt create mode 100644 documents/_build/html/_sources/apidoc/ufp.terminal.txt create mode 100644 documents/_build/html/_sources/apidoc/ufp.txt create mode 100644 documents/_build/html/_sources/index.txt create mode 100644 documents/_build/html/_sources/ufp.gui.txt create mode 100644 documents/_build/html/_sources/ufp.terminal.txt create mode 100644 documents/_build/html/_sources/ufp.txt create mode 100644 documents/_build/html/_static/ajax-loader.gif create mode 100644 documents/_build/html/_static/basic.css create mode 100644 documents/_build/html/_static/comment-bright.png create mode 100644 documents/_build/html/_static/comment-close.png create mode 100644 documents/_build/html/_static/comment.png create mode 100644 documents/_build/html/_static/css/badge_only.css create mode 100644 documents/_build/html/_static/css/theme.css create mode 100644 documents/_build/html/_static/doctools.js create mode 100644 documents/_build/html/_static/down-pressed.png create mode 100644 documents/_build/html/_static/down.png create mode 100644 documents/_build/html/_static/file.png create mode 100644 documents/_build/html/_static/fonts/fontawesome-webfont.eot create mode 100644 documents/_build/html/_static/fonts/fontawesome-webfont.svg create mode 100644 documents/_build/html/_static/fonts/fontawesome-webfont.ttf create mode 100644 documents/_build/html/_static/fonts/fontawesome-webfont.woff create mode 100644 documents/_build/html/_static/jquery-1.11.1.js create mode 100644 documents/_build/html/_static/jquery.js create mode 100644 documents/_build/html/_static/js/theme.js create mode 100644 documents/_build/html/_static/minus.png create mode 100644 documents/_build/html/_static/plus.png create mode 100644 documents/_build/html/_static/pygments.css create mode 100644 documents/_build/html/_static/searchtools.js create mode 100644 documents/_build/html/_static/translations.js create mode 100644 documents/_build/html/_static/underscore-1.3.1.js create mode 100644 documents/_build/html/_static/underscore.js create mode 100644 documents/_build/html/_static/up-pressed.png create mode 100644 documents/_build/html/_static/up.png create mode 100644 documents/_build/html/_static/websupport.js create mode 100644 documents/_build/html/apidoc/index.html create mode 100644 documents/_build/html/apidoc/ufp.gui.html create mode 100644 documents/_build/html/apidoc/ufp.html create mode 100644 documents/_build/html/apidoc/ufp.terminal.html create mode 100644 documents/_build/html/genindex.html create mode 100644 documents/_build/html/index.html create mode 100644 documents/_build/html/objects.inv create mode 100644 documents/_build/html/py-modindex.html create mode 100644 documents/_build/html/search.html create mode 100644 documents/_build/html/searchindex.js create mode 100644 documents/_build/html/ufp.gui.html create mode 100644 documents/_build/html/ufp.html create mode 100644 documents/_build/html/ufp.terminal.html create mode 100644 documents/conf.py create mode 100644 documents/index.rst create mode 100644 documents/ufp.gui.rst create mode 100644 documents/ufp.rst create mode 100644 documents/ufp.terminal.rst create mode 100644 ufp/cipher.pyc create mode 100644 ufp/random.pyc create mode 100644 ufp/shell.pyc diff --git a/changelog.md b/changelog.md index cb25718..e6e58ff 100644 --- a/changelog.md +++ b/changelog.md @@ -46,3 +46,7 @@ #### v1.0.5b4 + 설치 파일 오류 수정 + +#### v1.1.0 + ++ 자막 파일을 깨끗하게 정리하는 함수를 추가 diff --git a/documents/Makefile b/documents/Makefile new file mode 100644 index 0000000..1873779 --- /dev/null +++ b/documents/Makefile @@ -0,0 +1,192 @@ +# 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 dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text 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 " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ufp.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ufp.qhc" + +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/ufp" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ufp" + @echo "# devhelp" + +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)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +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)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/documents/_build/doctrees/apidoc/index.doctree b/documents/_build/doctrees/apidoc/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..78093a781c0cc1a89ae8f7470329f0aec2389482 GIT binary patch literal 5440 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 literal 0 HcmV?d00001 diff --git a/documents/_build/doctrees/apidoc/ufp.gui.doctree b/documents/_build/doctrees/apidoc/ufp.gui.doctree new file mode 100644 index 0000000000000000000000000000000000000000..66c0719b3c9a074603450cce7d370b16bbd3a1da GIT binary patch literal 20303 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 literal 0 HcmV?d00001 diff --git a/documents/_build/doctrees/apidoc/ufp.terminal.doctree b/documents/_build/doctrees/apidoc/ufp.terminal.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d4bed94d7525c165193cd919e575b33e615bc32b GIT binary patch literal 12120 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 literal 0 HcmV?d00001 diff --git a/documents/_build/doctrees/environment.pickle b/documents/_build/doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..bfd345862b2a2fe6fec22eb91fdc018a7f96ec91 GIT binary patch literal 55455 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 p6<;2RT|AIY<6PdvmH~C2nfn?M%0A}T@hjFe;Bohxcn5c*{|gRu7v2B> literal 0 HcmV?d00001 diff --git a/documents/_build/doctrees/index.doctree b/documents/_build/doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..73570afdce1353101c92ef40f740c7c854f557c2 GIT binary patch literal 5402 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 cl^j9WiY(!m>7y?0gyc57Byu}`c%9smFU literal 0 HcmV?d00001 diff --git a/documents/_build/doctrees/ufp.doctree b/documents/_build/doctrees/ufp.doctree new file mode 100644 index 0000000000000000000000000000000000000000..da54d4045fa728d2ce2a617713b4236c170589b3 GIT binary patch literal 120099 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 literal 0 HcmV?d00001 diff --git a/documents/_build/doctrees/ufp.gui.doctree b/documents/_build/doctrees/ufp.gui.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0c6263dadc2699bf5be8879120f6197594941109 GIT binary patch literal 20289 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 f*%0PIhn4}gn-0aVoG + + + + + + + 설명: 모듈 코드 — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+
    +
  • Docs »
  • + +
  • 설명: 모듈 코드
  • +
  • + +
  • +
+
+
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/cipher.html b/documents/_build/html/_modules/ufp/cipher.html new file mode 100644 index 0000000..f8058e7 --- /dev/null +++ b/documents/_build/html/_modules/ufp/cipher.html @@ -0,0 +1,188 @@ + + + + + + + + + + ufp.cipher — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.cipher

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+
+
[문서]def unpadPkcs5(s): + """ + @brief PKCS#5 표준 패딩을 제거한다. + """ + return s[0:-ord(s[-1])] +
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/gui/notepad.html b/documents/_build/html/_modules/ufp/gui/notepad.html new file mode 100644 index 0000000..4b3e2e5 --- /dev/null +++ b/documents/_build/html/_modules/ufp/gui/notepad.html @@ -0,0 +1,218 @@ + + + + + + + + + + ufp.gui.notepad — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.gui.notepad

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+import subprocess
+
+
[문서]class Notepad(object): +
[문서] def open(self): + """ + @brief 메모창을 엽니다. + """ + self._process = subprocess.Popen(['kate', '--stdin'], stdin=subprocess.PIPE) + pass +
+
[문서] def write(self, content): + """ + @brief 메모에 내용을 씁니다. + @param content 쓸 내용 + """ + self._process.stdin.write(content) + pass +
+
[문서] def close(self): + """ + @brief 메모창을 닫습니다. + """ + self._process.kill() + pass +
+ @classmethod +
[문서] def show(cls, content): + """ + @brief 주어진 내용을 보여줍니다. + @param content 보여줄 내용 + @return 객체를 반환합니다. + """ + notepad = cls() + notepad.open() + notepad.write(content) + return notepad +
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/gui/pulse_progress.html b/documents/_build/html/_modules/ufp/gui/pulse_progress.html new file mode 100644 index 0000000..6be350c --- /dev/null +++ b/documents/_build/html/_modules/ufp/gui/pulse_progress.html @@ -0,0 +1,202 @@ + + + + + + + + + + ufp.gui.pulse_progress — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.gui.pulse_progress

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+from PyQt4.QtCore import pyqtSlot, QObject
+import subprocess
+
+
[문서]class PulseProgress(QObject): + def __init__(self, title, message): + super(PulseProgress, self).__init__() + self.title = title + self.message = message + pass + + @pyqtSlot() +
[문서] def open(self): + self._zenity = subprocess.Popen(['zenity', '--progress', '--text', self.message, '--pulsate', '--no-cancel', '--auto-close', '--title', self.title], stdin=subprocess.PIPE) + self._zenity.stdin.write('y') + pass +
+ @pyqtSlot() +
[문서] def close(self): + self._zenity.kill() + pass +
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/html.html b/documents/_build/html/_modules/ufp/html.html new file mode 100644 index 0000000..b9b5c33 --- /dev/null +++ b/documents/_build/html/_modules/ufp/html.html @@ -0,0 +1,237 @@ + + + + + + + + + + ufp.html — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.html

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+import subprocess
+import tidylib
+import tempfile
+import os
+import pattern.web
+
+
[문서]def clean(html, inputEncoding = "utf8") : + """ + @brief html 문서를 보다 규격화된 xhtml로 변환합니다. + @link http://tidy.sourceforge.net/docs/quickref.html HTML Tidy 설정 옵션 빠른 참조 + @link http://countergram.com/open-source/pytidylib/docs/index.html#small-example-of-use Html Tidy에 관한 파이썬 인터페이스 pytidylib.moudule + """ + tidyOptions = { + "output-xhtml": True, #"output-xml" : True + "quiet": True, + "show-errors": 0, + "force-output": True, + "numeric-entities": True, + "show-warnings": False, + "input-encoding": inputEncoding, + "output-encoding": "utf8", + "indent": False, + "tidy-mark": False, + "wrap": 0 + }; + document, errors = tidylib.tidy_document(html, options = tidyOptions) + return document +
+
[문서]def toText(html, converter='pattern.web') : + """ + @brief html 문서를 텍스트 문서로 변환합니다. + + @param html 원본 html 텍스트 + @param converter 변환에 사용할 변환기\n + w3m : w3m 외부 프로그램을 불러와 작업을 하기 때문에 속도가 상당히 느립니다.\n + pattern.web : pattern(http://www.clips.ua.ac.be/pattern) 라이브러리를 사용합니다. (10개 초과의 공백라인은 자동으로 10개의 공백라인으로 치환됩니다. 앞 뒤 공백은 자동으로 제거됩니다.) + + @throw ValueError 지원하지 않는 변환기를 입력 한 경우 + + @return text + """ + if converter == 'w3m': + tempPath = tempfile.mkstemp(prefix='.tmp_', suffix='.html')[1] + with open(tempPath, 'w+b') as temp: + temp.write(html) + pass + cmd = ['w3m', '-cols', '98304', '-dump' ,tempPath] + text = subprocess.check_output(cmd) + os.remove(tempPath) + return text + + if converter == 'pattern.web': + text = pattern.web.plaintext(html, linebreaks=10, indentation=True) + return text + + raise ValueError("'{0}'는 지원하지 않는 변환기입니다.".format(converter))
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/image.html b/documents/_build/html/_modules/ufp/image.html new file mode 100644 index 0000000..0ceacb8 --- /dev/null +++ b/documents/_build/html/_modules/ufp/image.html @@ -0,0 +1,361 @@ + + + + + + + + + + ufp.image — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.image

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+import PIL.Image
+import PIL.ImageChops
+import math
+import copy
+
+RGB_MIN_VALUE = 0
+RGB_MAX_VALUE = 256
+
+#PIL.Image의 L 모드를 의미.
+GRAYSCALE_MIN_VALUE = 0
+GRAYSCALE_MAX_VALUE = 256
+
+
[문서]def quantizeByImprovedGrayScale(image, colorCount=GRAYSCALE_MAX_VALUE): + """ + @brief 주어진 이미지에 대해 Improved Gray Scale(IGS) 양자화시킵니다. + @link http://stackoverflow.com/questions/14434963/change-number-of-gray-levels-in-a-grayscale-image-in-matlab change number of gray levels in a grayscale image in matlab - Stack Overflow + @link http://code.activestate.com/recipes/259112/ Improved Gray Scale Quantization (Python recipe) + @throw ValueError 사용 불가능한 모드의 이미지를 인자로 준 경우 + @param image PIL.Image 이미지 객체\n + 이 이미지는 L 모드여야 합니다. + @param colorCount 원본의 색상 수\n + 주어진 이미지의 색상 수를 목표로 하는 색상로 맞추는데 사용 할 수도 있습니다. 이 경우, 주어진 모드가 한 채널에서 가질 수 있는 최대 값을 상한선으로 하여, 목표로 하는 색상의 수를 정하십시오. + @return 변경된 PIL.Image 이미지 객체 + @remark 언제나 주어진 이미지 객체를 복제한 객체를 수정하여 반환합니다. + """ + if image.mode != 'L': + raise ValueError('{0} 모드의 이미지는 사용 할 수 없습니다.'.format(image.mode)) + + result = image.copy() + raito = GRAYSCALE_MAX_VALUE / colorCount + mask = math.trunc(raito - 1) + prev_sum = 0 + width, height = image.size + for x in xrange(0, width): + for y in xrange(0, height): + value = image.getpixel((x, y)) + if math.trunc(value/raito) != mask: + prev_sum = value + (prev_sum & mask) + else: + prev_sum = value + pass + buffer = math.trunc(prev_sum/raito) * raito + result.putpixel((x, y), buffer) + pass + pass + return result +
+
[문서]def changeColorDepth(image, colorCount): + """ + @brief 이미지의 색 깊이를 감소시킵니다. + @link http://en.wikipedia.org/wiki/List_of_monochrome_and_RGB_palettes List of monochrome and RGB palettes - Wikipedia, the free encyclopedia + @link http://stackoverflow.com/questions/14434963/change-number-of-gray-levels-in-a-grayscale-image-in-matlab change number of gray levels in a grayscale image in matlab - Stack Overflow + @throw ValueError 사용 불가능한 모드의 이미지를 인자로 준 경우 + @param image PIL.Image 객체\n + L, RGB, RGBA 모드의 이미지를 처리 할 수 있습니다. + @param colorCount 결과물의 색상 수\n + 주어진 모드가 한 채널에서 가질 수 있는 최대 값을 상한선으로 하여, 목표로 하는 색상의 수를 정하십시오. + @return 변경된 PIL.Image 이미지 객체 + @remark 언제나 주어진 이미지 객체를 복제한 객체를 수정하여 반환합니다. + """ + if image.mode == 'L': + raito = GRAYSCALE_MAX_VALUE / colorCount + change = lambda value: math.trunc(value/raito)*raito + elif image.mode == 'RGB' or image.mode == 'RGBA': + raito = RGB_MAX_VALUE / colorCount + change = lambda value: tuple(map(lambda value: math.trunc(value/raito)*raito, value)) + else: + raise ValueError('{0} 모드의 이미지는 사용 할 수 없습니다.'.format(image.mode)) + + result = image.copy() + width, height = image.size + for x in xrange(0, width): + for y in xrange(0, height): + value = image.getpixel((x, y)) + buffer = change(value) + result.putpixel((x, y), buffer) + pass + pass + return result +
+
[문서]def mostPopularEdgeColor(image): + """ + @brief 이미지의 둘레(left,right,top,bottom)에서 가장 많이 나타나는 색깔이 무엇인지 계산한다. + @link http://coreapython.hosting.paran.com/howto/sebsauvage_net-%20Snyppets%20-%20Python%20snippets.htm#autocrop 이 함수에 대해 참조한 자료가 있는 웹페이지 + @param image PIL 이미지 객체 + @return 가장 많은 색상(정수 튜플 (R,G,B)) + """ + if image.mode != 'RGB': + image = image.convert("RGB") + pass + + # 이미지의 둘레에서 픽셀을 얻는다: + width,height = image.size + left = image.crop((0, 1, 1, height-1)) + right = image.crop((width-1, 1, width, height-1)) + top = image.crop((0, 0, width, 1)) + bottom = image.crop((0, height-1, width, height)) + pixels = left.tostring() + right.tostring() + top.tostring() + bottom.tostring() + + # 어떤 RGB 삼중원소가 가장 많은지 계산한다 + counts = dict() + for i in range(0, len(pixels), 3): + rgb = pixels[i] + pixels[i+1] + pixels[i+2] + if rgb in counts: + counts[rgb] += 1 + else: + counts[rgb] = 1 + pass + pass + + # 가장 많은 색깔을 얻는다: + mostPopularColor = sorted([(count, rgba) for (rgba, count) in counts.items()], reverse=True)[0][1] + r = ord(mostPopularColor[0]) + g = ord(mostPopularColor[1]) + b = ord(mostPopularColor[2]) + return (r, g, b) +
+
[문서]def trim(image, backgroundColor=None, fuzz=0): + """ + @brief 이미지 주위에 있는 여백을 제거한다. + @details \n + 이미지에 알파 채널이 있으면, 그것을 사용하여 무엇을 자를지 고른다. 그렇지 않으면, 이미지 둘레에서 가장 많은 색상을 찾으려고 시도한다. 그리고 이 색상을 여백으로 간주한다. (backgroundColor 매개변수로 이 색상을 오버라이드할 수 있다.) + + @warning fuzz옵션 사용시, 이미지가 여백과 유사한 색상일 경우 이미지의 경계를 넘어 이미지까지 잘리는 문제가 생길 수 있다. + @warning fuzz옵션 사용시, 여백에 잡음이 존재하는 경우 여백을 넘어 이미지를 자를 수 있습니다. + + @throw ValueError fuzz값이 잘못된 경우 + @throw ValueError 주어진 이미지가 처리 불가능한 모드인 경우 + + @link http://coreapython.hosting.paran.com/howto/sebsauvage_net-%20Snyppets%20-%20Python%20snippets.htm#autocrop 이 함수에 대해 참조한 자료가 있는 웹페이지 + @link http://stackoverflow.com/questions/10615901/trim-whitespace-using-pil 이 함수에 대해 참조한 자료가 있는 웹페이지 + @link https://pillow.readthedocs.org/reference/ImageChops.html Pillow 사용자 문서 - ImageChops 모듈 API + + @param image (PIL 이미지 객체) 다듬을 이미지.\n + 알파 채널이 포함된 이미지 또는, RGB 형식의 이미지만 처리 할 수 있습니다. + @param backgroundColor "다듬을 배경"으로 간주될 색상(RGB). (3개의 정수가 담긴 터플)\n + 예컨데, tuple(0,0,255)와 같은 형식으로 주어야 합니다.\n + 이미지가 투명이면, 이 매개변수는 무시된다.\n + 이미지가 투명이 아니고 이 매개변수가 주어지지 않으면, 자동으로 계산된다. + @param fuzz float 또는 int형(0~99.9). 두 색상을 동일하게 취급하는 정도를 설정합니다.\n + 예컨데, 0은 각 픽셀이 가진 값 그대로 비교하고, 1은 RGB 1,1,1과 2,2,2를 동일하게 취급합니다. 숫자가 커질 수록 범위가 증가합니다. + + @return 다듬어진 이미지(PIL 이미지 객체). + @return 변경될 내용이 없는 경우, 원본을 반환합니다. + """ + bbox = None + + #fuzz값 체크 + if not isinstance(fuzz, (float, int)) or not 0 <= fuzz or not fuzz <= 99.9: + raise ValueError('fuzz에는 오직 0~99사이의 int 또는 float만 사용 할 수 있습니다.') + + #이미지에 투명 레이어가 있으면, 그걸 사용한다. + if 'A' in image.getbands(): + #이는 투명 레이어가 있는 모든 모드에 작동한다 + bbox = image.split()[list(image.getbands()).index('A')].getbbox() + #RGB 모드인 경우 + elif image.mode == 'RGB': + if not backgroundColor: + backgroundColor = mostPopularEdgeColor(image) + pass + # 불투명 이미지를 다듬는다. .getbbox()는 언제나 검정색을 다듬는다. 그래서 이미지에서 "배경색"을 빼줄 필요가 있다. + bg = PIL.Image.new(image.mode, image.size, backgroundColor) + diff = PIL.ImageChops.difference(image, bg) # 이미지에서 배경색을 뺀다. + + #차이를 감소시킨다. + if fuzz > 0: + buffer = math.trunc(RGB_MAX_VALUE * fuzz / 100) + offset = - buffer + diff = PIL.ImageChops.add(diff, diff, 2.0, offset) + pass + + bbox = diff.getbbox() # 이미지의 진짜 둘레를 찾는다. + else: + raise ValueError('{0} 모드의 이미지는 처리가 불가능 합니다.'.format(image.mode)) + + if bbox: + image = image.crop(bbox) + pass + + return image
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/path.html b/documents/_build/html/_modules/ufp/path.html new file mode 100644 index 0000000..426fe6a --- /dev/null +++ b/documents/_build/html/_modules/ufp/path.html @@ -0,0 +1,514 @@ + + + + + + + + + + ufp.path — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.path

+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+import os
+import re
+import urllib
+import urlparse
+import os.path
+import datetime
+import shutil
+
+
[문서]def walk(top, maxDepth=None, onerror=None, followlinks=False): + """ + @brief 재귀적으로 경로 탐색하기 + @details '.'를 인자로 주었다면, './a', './b' 순으로 점점 더 깊게 탐색합니다. + @param top 탐색 대상 경로 + @param onerror 오류가 발생하면, 주어진 주소의 함수를 호출하여 오류 인자를 넘겨줍니다. + @param followlinks 심볼릭 링크된 경로를 포함하여 탐색합니다. + @param maxDepth 탐색 할 최대 깊이\n + 0이상의 정수여야 함.\n + 0 : 지정된 폴더만 + """ + top = top.rstrip(os.path.sep) + assert os.path.isdir(top) + num_sep = top.count(os.path.sep) + for root, dirs, files in os.walk(top, onerror=onerror, followlinks=followlinks): + yield root, dirs, files + if maxDepth is not None and num_sep + maxDepth <= root.count(os.path.sep): + del dirs[:] + pass + pass +
+
[문서]def moveAllContent(dirPath, destPath): + """ + @brief dirPath에 존재하는 모든 파일을 destPath로 옮깁니다. + """ + for i in listdir(dirPath, fullpath=True): + shutil.move(i, destPath) + pass + pass +
+
[문서]def mtime(path, format): + """ + @brief path에 해당하는 파일의 최근 수정 시각을 지정된 format형식으로 작성하여 반환합니다. + + @param path 경로 문자열 + @param format 형식 문자열(datetime strftime에서 지원하는 형식) + + @return path에 존재하는 파일의 최근 수정 시각의 format에 지정된 형식 + """ + buffer = os.path.getmtime(path) + buffer = datetime.fromtimestamp(buffer).strftime(format) + return buffer +
+
[문서]def pjoin(parentPath, filenames): + """ + @brief parentPath를 각 filenames의 아이템과 결합합니다. + + @param parentPath 부모 경로 + @param filenames 파일명 리스트\n + [filename, ...] + + @return 결합된 리스트\n + [parentPath/filename, parentPath/filename, ...] + """ + result = list() + for filename in filenames: + buffer = os.path.join(parentPath, filename) + result.append(buffer) + pass + return result +
+
[문서]def listdir(path, **options): + """ + @brief 지정된 폴더에서 pattern에 해당하는 파일 및 폴더의 목록을 가져옵니다. + + @param path 목록을 가져올 폴더 경로 + @param pattern 필터 패턴(대소문자를 구분하지 않습니다)\n + string : 패턴 문자열\n + [string, ...]: 패턴 문자열 리스트\n + None: 필터링 하지 않음 + @param patternReverse \n + True : 필터에 매칭되지 않는 대상만 얻습니다.\n + False : 필터에 매칭되는 대상만 얻습니다. + @param fullpath 반환시 주어진 경로를 포함한 경로를 반환합니다.\n + True : [path + filename, ...]\n + False : [filename, ...] + @param sortKey 정렬키 함수\n + 해당 함수에는 전체 경로가 전달 됩니다. + + @return 필터링된 폴더 내용 + """ + options.setdefault('pattern', None) + options.setdefault('patternReverse', False) + options.setdefault('fullpath', False) + options.setdefault('sortKey', None) + + if options['pattern']: + pattern = options['pattern'] + pass + + #만약 패턴이 문자열이라면 리스트에 담기. + if isinstance(pattern, unicode): + pattern = list(pattern) + pass + + #패턴 컴파일 + pattern = map(lambda x: re.compile(x, re.IGNORECASE), pattern) + + #목록 작성 + listdir = list() + for filename in os.listdir(path): + #패턴 옵션이 설정된 경우 필터링 + if options['pattern']: + for p in pattern: + #패턴 역전 옵션이 꺼진 경우 + if p.search(filename) and not options['patternReverse']: + listdir.append(filename) + break + #패턴 역전 옵션이 켜진 경우 + elif options['patternReverse']: + listdir.append(filename) + break + pass + pass + pass + + #sortKey 옵션이 사용된 경우 + if not options['sortKey']: + buffer = options['sortKey'] + buffer = lambda x: buffer(os.path.join(path, x)) + listdir.sort(key=buffer) + pass + + #fullpath 옵션이 켜진 경우 + if options['fullpath']: + listdir = pjoin(path, listdir) + pass + + #결과 반환 + return listdir +
+
[문서]def toUrl(path): + """ + @brief path를 file:///형식으로된 주소로 되돌려줍니다. + @return file:///형식으로된 주소 + """ + buffer = path.encode('utf8') + buffer = urllib.pathname2url(buffer) + return urlparse.urljoin('file:', buffer) +
+
[문서]def replaceSpiecalChar(string, **options) : + """ + @brief 운영체제의 경로에서 사용 불가능한 문자열을 대체문자로 치환합니다. + @details \n + 윈도우 및 유닉스 계열 운영체제에서 파일에 포함되면 문제가 되는 특수문자를 대체문자로 치환합니다.\n + 경로 구분자를 대체 문자로 치환합니다. + + @remark \n + 윈도우에서 파일명으로 사용 할 없는 문자들(파일 이름에 다음 문자를 사용할 수 없습니다)\n + \ / : * ? " < > | + + @param type \n + 'windows', 'unix'.\n + 윈도우의 경로 구분 문자는 리눅스에서 표시되는 모양이 다릅니다.\n + 어떤 OS에서 보여지는 모양으로 치환할지 지정합니다.\n + 기본값은 unix입니다. + @param keep_path_characters\n + True, False.\n + 경로 구분자를 치환하지 않습니다.\n + 이 설정은 type 설정에 의존합니다.\n + 기본 값은 False입니다. + """ + UNIX_PATH_CHARACTER_RE = (u"/", u"/"); + ESCAPE_CHARTER_UNIX_TYPE_RE = (u"\\", u"\") + WINDOWS_PATH_CHARACTER_RE = (u"\\", u"₩") + DEFAULT_REGEXS = [ + (u"?", u"?"), + (u":", u":"), + (u"*", u"*"), + (u'"', u"""), + (u"<", u"〈"), + (u">", u"〉"), + (u"|", u"│"), + (u"'", u"'"), + (u"$", u"$"), + (u"!", u"!") + ]; + + #옵션 초기값 설정 + options.setdefault(u'type', u'unix') + options.setdefault(u'keep_path_characters', False) + + #옵션 처리 + regexs = DEFAULT_REGEXS + if options[u'type'] == u'unix' : + regexs.append(ESCAPE_CHARTER_UNIX_TYPE_RE); + if not options[u'keep_path_characters'] : + regexs += [UNIX_PATH_CHARACTER_RE]; + elif options[u'type'] == u'windows' : + regexs += [UNIX_PATH_CHARACTER_RE]; + if not options[u'keep_path_characters'] : + regexs += [WINDOWS_PATH_CHARACTER_RE]; + + for before, after in regexs : + string = string.replace(before, after); + + return string; +
+
[문서]def dirname(path) : + """ + @brief 주어진 경로의 부모 경로를 추출해냅니다. + @details 만약 'abc'가 주어졌다면, 반환값은 '.'입니다. + @note os.path.dirname('asd') -> ''가 되는 문제를 해결하기 위해 만들어졌습니다. + @param path 경로 문자열\n + 주어지는 값은 유니코드 문자열이여야 함. + """ + dirnameRe = re.compile(u'(?P<dirname>^.*)/', re.DOTALL | re.UNICODE).search(path); + if dirnameRe : + return dirnameRe.group('dirname'); + return '.'; +
+
[문서]def unique(targetPath, spliteExt = True) : + """ + @brief 해당 경로에서 유일한 경로를 만들어 냅니다. + @details \n + 대소문자는 구분하지 않습니다.\n + 만약, 주어진 경로가 충돌하지 않는다면 주어진 경로를 그대로 반환합니다.\n + 만약 주어진 경로의 부모 경로가 존재하지 않는다면, 주어진 문자열 그대로 반환합니다.\n + ex) a/b/c -> a/b/c d(1)식으로 충복을 회피처리함. + @param targetPath 주어지는 값은 유니코드 문자열이여야 함. + @version v4\n + BASH -> C++ -> QT -> PYTHON + @return 유일한 경로 + """ + #경로 분할 + targetDirname = dirname(targetPath); + targetBasename = os.path.basename(targetPath); + + #부모 경로가 존재하는지 확인 + if not os.path.exists(targetDirname) : + return targetPath; + + #해당 경로의 목록을 작성 + fileList = [u'.', u'..']; + for dirpath, dirnames, filenames in os.walk(targetDirname) : + fileList.extend(filenames); + break; + + #중복되는 대상이 존재하는지 확인 + existDuplicateFile = False; + buffer = re.escape(targetBasename); + fullmatchRe = re.compile(u"^%(buffer)s$" % locals(), re.DOTALL | re.IGNORECASE | re.UNICODE); + for fileName in fileList : + if fullmatchRe.search(fileName) : + existDuplicateFile = True; + break; + + #중복되는 대상이 존재하고 있지 않다면 이름을 그대로 돌려줌. + if not existDuplicateFile : + return targetPath; + + #파일명과 확장자를 추출 + if spliteExt : + targetFileExt = extension(targetBasename); + if targetFileExt : + targetFileName = filename(targetBasename); + else : + targetFileName = targetBasename; + spliteExt = False; + else : + targetFileName = targetBasename; + + #중복 파일들의 숫자를 가져옴. + escapedTargetFileName = re.escape(targetFileName); + if spliteExt : + extractDupCountRe = re.compile(ur"^%(escapedTargetFileName)s \(d(?P<number>[0-9]+)\)\.%(targetFileExt)s$" % locals(), re.DOTALL | re.IGNORECASE | re.UNICODE); + else : + extractDupCountRe = re.compile(ur"^%(escapedTargetFileName)s \(d(?P<number>[0-9]+)\)$" % locals(), re.DOTALL | re.IGNORECASE | re.UNICODE); + counts = []; + for fileName in fileList : + m = extractDupCountRe.search(fileName); + if m : + buffer = m.group(u'number') + buffer = int(buffer) + counts.append(buffer); + + #중복 숫자를 설정 + if counts : + counts.sort(); + notDuplicatedNumber = counts[-1] + 1; + else : + notDuplicatedNumber = 1; + + #중복 회피 이름 생성 + if spliteExt : + uniqueName = u"%(targetFileName)s (d%(notDuplicatedNumber)d).%(targetFileExt)s" % locals(); + else : + uniqueName = u"%(targetFileName)s (d%(notDuplicatedNumber)d)" % locals(); + + return os.path.join(targetDirname, uniqueName); +
+
[문서]def filename(filePath) : + """ + @brief 파일 경로로 부터 확장자를 제외한 파일명을 추출해냅니다. + @param filePath 주어지는 값은 유니코드 문자열이여야 함.\n + 예를 들어, `../asd/.qwe.tar.bz2'가 인자로 주어진 다면 반환값은 `.qwe.tar' 입니다. + """ + rx = re.compile(ur"^(.*/)?(?P<name_space>.+?)?(?P<ext_space>\.[a-z0-9]+)?$", re.DOTALL | re.IGNORECASE | re.UNICODE); + + result = rx.search(filePath) + if not result: + return unicode() + + nameSpace = result.group('name_space'); + if nameSpace : + return nameSpace; + + extSpace = result.group('ext_space') + if extSpace: + return extSpace; + + return unicode() +
+
[문서]def extension(fileName) : + """ + @brief 주어진 파일명의 확장자를 추출합니다. + @param fileName 주어지는 값은 유니코드 문자열이여야 함. + @return `../asd/.qwe'가 인자로 주어진 다면 반환값은 (빈 값) 입니다. + @return 만약 확장자가 없다면, (빈 값)을 리턴합니다. + """ + extRe = re.compile(ur"[^/]+\.(?P<ext>[a-z0-9]+)$", re.DOTALL | re.IGNORECASE | re.UNICODE); + result = extRe.search(fileName); + if result : + return result.group('ext'); + return unicode();
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/pdf.html b/documents/_build/html/_modules/ufp/pdf.html new file mode 100644 index 0000000..baae07e --- /dev/null +++ b/documents/_build/html/_modules/ufp/pdf.html @@ -0,0 +1,231 @@ + + + + + + + + + + ufp.pdf — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.pdf

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+import subprocess
+
+
[문서]def toBmp(pdf, format='BMP32B', dpi=200): + """ + @brief pdf 파일을 bmp로 바꾸어 저장합니다. + + @note 참조 :\n + 고스트 스크립트 문서 : http://www.ghostscript.com/doc/current/Readme.htm + + @param pdf pdf 바이너리 데이터 + 오직 낱장(1 페이지)만 존재하는 pdf 데이터여야 합니다. + @param format 출력 포멧\n + BMP16M: 24-bit RGB Color\n + BMPMONO: Black-and-White Color\n + BMPGRAY: Grayscale Color\n + BMPSEP1:\n + BMPSEP8:\n + BMP16: 4-bit Color\n + BMP256: 8-bit Color\n + BMP32B: 32-bit RGBA Color (기본값) + @param dpi DPI\n + 기본값은 200DPI입니다.\n + 양의 정수만을 취합니다. + + @return BMP 이미지 바이너리 데이터 + """ + cmd = [ + 'gs', + '-q', + '-dQUIET', + '-dSAFER', + '-dBATCH', + '-dNOPAUSE', + '-dNOPROMPT', + '-dMaxBitmap=500000000', + '-dAlignToPixels=0', + '-dGridFitTT=2', + '-dUseCropBox', # PDF 페이지 박스 내의 내용만 저장 + '-sDEVICE={0}'.format(format), #출력 형식 + '-dTextAlphaBits=4', + '-dGraphicsAlphaBits=4', + '-r{0}x{0}'.format(dpi), #DPI + '-sOutputFile=%stdout', #출력을 표준출력으로 + '-', #입력을 표준입력에서 + ] + process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE) + bmp = process.communicate(inData)[0] + + return bmp +
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/random.html b/documents/_build/html/_modules/ufp/random.html new file mode 100644 index 0000000..d809064 --- /dev/null +++ b/documents/_build/html/_modules/ufp/random.html @@ -0,0 +1,200 @@ + + + + + + + + + + ufp.random — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.random

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+import random
+import string as _p_string
+
+
[문서]def string(length, chars=_p_string.ascii_letters + _p_string.digits): + """ + @brief 지정된 길이 만큼의 램덤 문자열을 되돌려줍니다. + + @param length 문자열의 길이 + @param chars 문자 집합(리스트 형식) + [a, ..., z, A, ..., Z, ..., 0, ..., 9] (기본값) + + @return 램덤 문자열 + """ + string = unicode() + for i in xrange(length): + string += random.choice(chars) + pass + return string +
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/shell.html b/documents/_build/html/_modules/ufp/shell.html new file mode 100644 index 0000000..deb17da --- /dev/null +++ b/documents/_build/html/_modules/ufp/shell.html @@ -0,0 +1,192 @@ + + + + + + + + + + ufp.shell — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.shell

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+
+
[문서]def quote(string): + """ + @brief shell에서 해석되지 않도록 콰우팅합니다. + @param string 문자열 + @return 콰우팅 된 문자열 + """ + buffer = string.replace("'", r"'\''") + buffer = "'{0}'".format(buffer) + return buffer +
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/string.html b/documents/_build/html/_modules/ufp/string.html new file mode 100644 index 0000000..cbbf53c --- /dev/null +++ b/documents/_build/html/_modules/ufp/string.html @@ -0,0 +1,193 @@ + + + + + + + + + + ufp.string — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.string

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+import unicodedata
+
+
[문서]def removeControlChar(string): + """ + @brief 제어문자를 제거합니다. + + @param string 문자열 + + @return 경로 문자가 제거된 문자열 + """ + buffer = ''.join(ch for ch in string if unicodedata.category(ch)[0]!="C") + return buffer
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/terminal/debug.html b/documents/_build/html/_modules/ufp/terminal/debug.html new file mode 100644 index 0000000..8e6347c --- /dev/null +++ b/documents/_build/html/_modules/ufp/terminal/debug.html @@ -0,0 +1,194 @@ + + + + + + + + + + ufp.terminal.debug — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.terminal.debug

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+import __builtin__ as builtins
+import ANSIColors
+
+
[문서]def print(*objs) : + """ + @brief 디버깅 메시지를 터미널에 출력합니다. + @details 빨간색으로 강조된 '[디버그]' 문자열 뒤에 주어진 objs가 출력되고 줄바꿈됩니다. + @link http://pythonhosted.org/ANSIColors-balises/ANSIColors.html ANSIColors Module — ANSIColors-balises public documentation + """ + buffer = ANSIColors.sprint('<Red>[디버그]<reset> ') + builtins.print(buffer, end=''); + builtins.print(*objs); + pass
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/terminal/terminal.html b/documents/_build/html/_modules/ufp/terminal/terminal.html new file mode 100644 index 0000000..3387d0a --- /dev/null +++ b/documents/_build/html/_modules/ufp/terminal/terminal.html @@ -0,0 +1,203 @@ + + + + + + + + + + ufp.terminal.terminal — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.terminal.terminal

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+import sys
+import ANSIColors
+
+__all__ = ['feed', 'pause']
+
+
[문서]def feed(*msg) : + """ + @brief + @param msg, ... 화면에 출력한 문자열 또는 출력 옵션 설정 + """ + ANSIColors.clearLine() + print(*msg, end='') + sys.stdout.flush() + pass +
+
[문서]def pause() : + """ + @brief 사용자의 입력을 대기합니다. + """ + print('[Enter]를 눌러 다음으로 진행합니다...', end = ''); + raw_input(""); + pass
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/ufp.html b/documents/_build/html/_modules/ufp/ufp.html new file mode 100644 index 0000000..bd92f54 --- /dev/null +++ b/documents/_build/html/_modules/ufp/ufp.html @@ -0,0 +1,203 @@ + + + + + + + + + + ufp.ufp — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.ufp

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals, absolute_import, division, print_function
+from trashcli.trash import TrashPutCmd
+import io
+
+__all__ = ['trashPut']
+
+
[문서]def trashPut(target): + """ + @brief 대상을 휴지통에 버립니다. + @details trashcli 패키지의 trash-put 명령어에 대한 인터페이스. + + @param taget 지울 대상의 경로 문자열 + + @return True 성공시 + @return False 문제가 존재 할 시 + """ + out = io.BytesIO() + err = io.BytesIO() + type(target) + TrashPutCmd(out, err).run(['', '--', target.encode('utf8')]) + if err.getvalue(): + return False + return True
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_modules/ufp/web.html b/documents/_build/html/_modules/ufp/web.html new file mode 100644 index 0000000..82423f6 --- /dev/null +++ b/documents/_build/html/_modules/ufp/web.html @@ -0,0 +1,343 @@ + + + + + + + + + + ufp.web — ufp 1.0.5b4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + +
+
+
+ +
+
+
+ +

Source code for ufp.web

+#!/usr/bin/env python
+#-*- coding: utf-8 -*-
+
+from __future__ import unicode_literals
+import cookielib
+import tempfile
+import urllib
+import re
+import chardet
+import os
+
+from . import path as _p_path
+from . import string as _p_string
+
+
[문서]def trimFilename(filename, **options): + """ + @brief 웹에서 다운받은 파일의 이름을 손질함. + + @details \n + url coding 풀기\n + 사용불가능한 문자를 대체문자로 치환\n + 웹에서의 공백치환을 감지하고 경우에 따라 해제\n + 파일 이름을 다듬기\n + UHC로 변환가능한 인코딩은 변환 + + @warning 인코딩 변환이 잘못될수도 있습니다. + + @param filename 파일명 유니코드 문자열 + @param from_encoding 입력 인코딩\n + 'auto' : 자동으로 인코딩을 파악합니다. \n + False : 인코딩을 변환하지 않습니다. (기본)\n + 기타('utf8', 'uhc', ...) + @param consider_extension 확장자 고려 여부\n + True: 확장자를 고려하여 작업합니다.\n + False: 확장자를 고려하지 않습니다. (기본) + + @return 변환된 문자열 + @return u'Unknown' : 결과물이 공백이 될 경우 반환됩니다. + """ + #옵션 초기값 설정 + options.setdefault(u'consider_extension', False) + options.setdefault(u'from_encoding', False) + + #옵션 처리 : consider_extension + considerExtension = options[u'consider_extension'] + + #옵션 처리 : from_encoding + if options[u'from_encoding'] == u'auto': + fromEncoding = chardet.detect(filename)['encoding'] + elif options[u'from_encoding'] == False: + fromEncoding = None + else: + fromEncoding = options[u'from_encoding'] + + #url 디코딩 + filename = urllib.unquote(filename) + + #인코딩 변환 + if fromEncoding: + filename = filename.decode('utf8', errors='replace') + + #url 디코딩 + filename = urllib.unquote(filename) + + #전체 파일명의 앞뒤 공백 제거 + filename = filename.strip() + + #파일명에 사용불가능한 문자 치환 + filename = _p_string.replaceSpiecalChar(filename) + + #확장자 분리 + if considerExtension: + ext = _p_string.extension(filename) + if ext: + filename = _p_string.filename(filename) + else: + considerExtension = False + + #이름에 포함된 and표시 제거 + if not re.search(u' ', filename): + pattern1 = re.compile(u'[_+]', re.UNICODE) + pattern2 = re.compile(ur'\.', re.UNICODE) + if pattern1.search(filename): + filename = pattern1.sub(' ', filename) + elif pattern2.search(filename): + filename = pattern2.sub(' ', filename) + + #파일이름의 앞뒤 공백 제거 + filename = filename.strip() + + #제어문자 제거 + filename = _p_string.removeControlChar(filename) + #filename = re.sub('[:cntrl:]', ' ', filename, flags=re.UNICODE) + + #파일명 합침. + if considerExtension: + filename = '.'.join((filename, ext)) + + #파일명을 반환 + if filename: + return filename + return 'Unknown' +
+
[문서]def dequoteJsStr(jsStr) : + """ + @brief 자바 스크립트를 위해 콰우팅된 문자열을 콰우팅 해제시킵니다. + @details ex) abc\'asd\' -> abc'asd' + @return 디콰우팅 된 문자열 + """ + REGEXS = [ + (r'\\', '\\'), + (r"\'", "'"), + (r'\"', '"'), + (r'\n', '\n') + ]; + for before, after in REGEXS : + jsStr = jsStr.replace(before, after) + pass + return jsStr; +
+
[문서]def loadNetscapeCookie(session, cookiePath): + """ + @brief Netscape 타입의 쿠키를 가져와서 requests session에 설정합니다. + + @remark 쿠키 헤더\n + # Netscape HTTP Cookie File\n + # http://www.netscape.com/newsref/std/cookie_spec.html\n + # This is a generated file! Do not edit. + + @param session requests 세션 객체 + @param cookiePath 쿠키 파일 경로 문자열 + """ + #임시 파일 생성 + tmpCookiePath = tempfile.mkstemp(prefix='.tmp_', suffix='.cookie')[1] + + #임시 파일 객체 생성 + tmpCookie = open(tmpCookiePath, mode='w+b') + + #넷스케이프 헤더 작성 + tmpCookie.write('# Netscape HTTP Cookie File\n') + tmpCookie.write('# http://www.netscape.com/newsref/std/cookie_spec.html\n') + tmpCookie.write('# This is a generated file! Do not edit.\n') + tmpCookie.write('\n') + + #기존 쿠키 파일의 내용을 삽입; 윈도우식 줄바꿈 -> 리눅스식으로 치환. + with open(cookiePath, 'r') as f: + buffer = f.read().replace('\r\n', '\n') + tmpCookie.write(buffer) + pass + + #쿠키 묶음 객체를 생성 + cookieJar = cookielib.MozillaCookieJar(tmpCookiePath) + + #임시 파일 객체 닫기 + tmpCookie.close() + + #쿠키 불러오기 + cookieJar.load(ignore_discard=True, ignore_expires=True) + + #세션에 쿠키 설정하기. + session.cookies = cookieJar + + #임시 파일 삭제 + os.remove(tmpCookiePath) + pass +
+
+ +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_sources/apidoc/index.txt b/documents/_build/html/_sources/apidoc/index.txt new file mode 100644 index 0000000..d3a28c9 --- /dev/null +++ b/documents/_build/html/_sources/apidoc/index.txt @@ -0,0 +1,23 @@ +.. ufp documentation master file, created by + sphinx-quickstart on Tue Mar 17 16:20:08 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to ufp's documentation! +=============================== + +Contents: + +.. toctree:: + :maxdepth: 4 + + ufp + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/documents/_build/html/_sources/apidoc/ufp.gui.txt b/documents/_build/html/_sources/apidoc/ufp.gui.txt new file mode 100644 index 0000000..3c66c09 --- /dev/null +++ b/documents/_build/html/_sources/apidoc/ufp.gui.txt @@ -0,0 +1,30 @@ +ufp.gui package +=============== + +Submodules +---------- + +ufp.gui.notepad module +---------------------- + +.. automodule:: ufp.gui.notepad + :members: + :undoc-members: + :show-inheritance: + +ufp.gui.pulse_progress module +----------------------------- + +.. automodule:: ufp.gui.pulse_progress + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: ufp.gui + :members: + :undoc-members: + :show-inheritance: diff --git a/documents/_build/html/_sources/apidoc/ufp.terminal.txt b/documents/_build/html/_sources/apidoc/ufp.terminal.txt new file mode 100644 index 0000000..8e26daf --- /dev/null +++ b/documents/_build/html/_sources/apidoc/ufp.terminal.txt @@ -0,0 +1,30 @@ +ufp.terminal package +==================== + +Submodules +---------- + +ufp.terminal.debug module +------------------------- + +.. automodule:: ufp.terminal.debug + :members: + :undoc-members: + :show-inheritance: + +ufp.terminal.terminal module +---------------------------- + +.. automodule:: ufp.terminal.terminal + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: ufp.terminal + :members: + :undoc-members: + :show-inheritance: diff --git a/documents/_build/html/_sources/apidoc/ufp.txt b/documents/_build/html/_sources/apidoc/ufp.txt new file mode 100644 index 0000000..4fb692d --- /dev/null +++ b/documents/_build/html/_sources/apidoc/ufp.txt @@ -0,0 +1,102 @@ +ufp package +=========== + +Subpackages +----------- + +.. toctree:: + + ufp.gui + ufp.terminal + +Submodules +---------- + +ufp.cipher module +----------------- + +.. automodule:: ufp.cipher + :members: + :undoc-members: + :show-inheritance: + +ufp.html module +--------------- + +.. automodule:: ufp.html + :members: + :undoc-members: + :show-inheritance: + +ufp.image module +---------------- + +.. automodule:: ufp.image + :members: + :undoc-members: + :show-inheritance: + +ufp.path module +--------------- + +.. automodule:: ufp.path + :members: + :undoc-members: + :show-inheritance: + +ufp.pdf module +-------------- + +.. automodule:: ufp.pdf + :members: + :undoc-members: + :show-inheritance: + +ufp.random module +----------------- + +.. automodule:: ufp.random + :members: + :undoc-members: + :show-inheritance: + +ufp.shell module +---------------- + +.. automodule:: ufp.shell + :members: + :undoc-members: + :show-inheritance: + +ufp.string module +----------------- + +.. automodule:: ufp.string + :members: + :undoc-members: + :show-inheritance: + +ufp.ufp module +-------------- + +.. automodule:: ufp.ufp + :members: + :undoc-members: + :show-inheritance: + +ufp.web module +-------------- + +.. automodule:: ufp.web + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: ufp + :members: + :undoc-members: + :show-inheritance: diff --git a/documents/_build/html/_sources/index.txt b/documents/_build/html/_sources/index.txt new file mode 100644 index 0000000..5c4cea0 --- /dev/null +++ b/documents/_build/html/_sources/index.txt @@ -0,0 +1,22 @@ +.. ufp documentation master file, created by + sphinx-quickstart on Tue Mar 17 16:20:08 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to ufp's documentation! +=============================== + +Contents: + +.. toctree:: + :maxdepth: 4 + + ufp + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/documents/_build/html/_sources/ufp.gui.txt b/documents/_build/html/_sources/ufp.gui.txt new file mode 100644 index 0000000..3c66c09 --- /dev/null +++ b/documents/_build/html/_sources/ufp.gui.txt @@ -0,0 +1,30 @@ +ufp.gui package +=============== + +Submodules +---------- + +ufp.gui.notepad module +---------------------- + +.. automodule:: ufp.gui.notepad + :members: + :undoc-members: + :show-inheritance: + +ufp.gui.pulse_progress module +----------------------------- + +.. automodule:: ufp.gui.pulse_progress + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: ufp.gui + :members: + :undoc-members: + :show-inheritance: diff --git a/documents/_build/html/_sources/ufp.terminal.txt b/documents/_build/html/_sources/ufp.terminal.txt new file mode 100644 index 0000000..8e26daf --- /dev/null +++ b/documents/_build/html/_sources/ufp.terminal.txt @@ -0,0 +1,30 @@ +ufp.terminal package +==================== + +Submodules +---------- + +ufp.terminal.debug module +------------------------- + +.. automodule:: ufp.terminal.debug + :members: + :undoc-members: + :show-inheritance: + +ufp.terminal.terminal module +---------------------------- + +.. automodule:: ufp.terminal.terminal + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: ufp.terminal + :members: + :undoc-members: + :show-inheritance: diff --git a/documents/_build/html/_sources/ufp.txt b/documents/_build/html/_sources/ufp.txt new file mode 100644 index 0000000..4fb692d --- /dev/null +++ b/documents/_build/html/_sources/ufp.txt @@ -0,0 +1,102 @@ +ufp package +=========== + +Subpackages +----------- + +.. toctree:: + + ufp.gui + ufp.terminal + +Submodules +---------- + +ufp.cipher module +----------------- + +.. automodule:: ufp.cipher + :members: + :undoc-members: + :show-inheritance: + +ufp.html module +--------------- + +.. automodule:: ufp.html + :members: + :undoc-members: + :show-inheritance: + +ufp.image module +---------------- + +.. automodule:: ufp.image + :members: + :undoc-members: + :show-inheritance: + +ufp.path module +--------------- + +.. automodule:: ufp.path + :members: + :undoc-members: + :show-inheritance: + +ufp.pdf module +-------------- + +.. automodule:: ufp.pdf + :members: + :undoc-members: + :show-inheritance: + +ufp.random module +----------------- + +.. automodule:: ufp.random + :members: + :undoc-members: + :show-inheritance: + +ufp.shell module +---------------- + +.. automodule:: ufp.shell + :members: + :undoc-members: + :show-inheritance: + +ufp.string module +----------------- + +.. automodule:: ufp.string + :members: + :undoc-members: + :show-inheritance: + +ufp.ufp module +-------------- + +.. automodule:: ufp.ufp + :members: + :undoc-members: + :show-inheritance: + +ufp.web module +-------------- + +.. automodule:: ufp.web + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: ufp + :members: + :undoc-members: + :show-inheritance: diff --git a/documents/_build/html/_static/ajax-loader.gif b/documents/_build/html/_static/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN literal 0 HcmV?d00001 diff --git a/documents/_build/html/_static/basic.css b/documents/_build/html/_static/basic.css new file mode 100644 index 0000000..9fa77d8 --- /dev/null +++ b/documents/_build/html/_static/basic.css @@ -0,0 +1,599 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/documents/_build/html/_static/comment-bright.png b/documents/_build/html/_static/comment-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..551517b8c83b76f734ff791f847829a760ad1903 GIT binary patch literal 3500 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 A2LJ#7 literal 0 HcmV?d00001 diff --git a/documents/_build/html/_static/comment.png b/documents/_build/html/_static/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..92feb52b8824c6b0f59b658b1196c61de9162a95 GIT binary patch literal 3445 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 Xn!ZpXD%P(H00000NkvXXu0mjfa,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.2.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.2.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.2.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.pull-left.icon{margin-right:.3em}.fa.pull-right,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .icon,.nav .fa,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .icon{display:inline}.btn .fa.fa-large,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .fa-large.icon{line-height:0.9em}.btn .fa.fa-spin,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.btn.icon:before{opacity:0.5;-webkit-transition:opacity 0.05s ease-in;-moz-transition:opacity 0.05s ease-in;transition:opacity 0.05s ease-in}.btn.fa:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;transition:all 0.3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all 0.1s linear;-moz-transition:all 0.1s linear;transition:all 0.1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 0.3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.35765%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:0.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:0.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}input[type="datetime-local"]{padding:0.34375em 0.625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:0.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:0.5em 0.625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{width:36px;height:12px;margin:12px 0;position:relative;border-radius:4px;background:#ccc;cursor:pointer;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.wy-switch:before{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.wy-switch:after{content:"false";position:absolute;left:48px;display:block;font-size:12px;color:#ccc}.wy-switch.active{background:#1e8449}.wy-switch.active:before{left:24px;background:#27AE60}.wy-switch.active:after{content:"true"}.wy-switch.disabled,.wy-switch.active.disabled{cursor:not-allowed}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:0.5em 0.625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:0.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0.3em;display:block}.wy-form label{margin-bottom:0.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:0.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.codeblock-example{border:1px solid #e1e4e5;border-bottom:none;padding:24px;padding-top:48px;font-weight:500;background:#fff;position:relative}.codeblock-example:after{content:"Example";position:absolute;top:0px;left:0px;background:#9B59B6;color:#fff;padding:6px 12px}.codeblock-example.prettyprint-example-only{border:1px solid #e1e4e5;margin-bottom:24px}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight']{border:1px solid #e1e4e5;padding:0px;overflow-x:auto;background:#fff;margin:1px 0 24px 0}.codeblock div[class^='highlight'],pre.literal-block div[class^='highlight'],.rst-content .literal-block div[class^='highlight'],div[class^='highlight'] div[class^='highlight']{border:none;background:none;margin:0}div[class^='highlight'] td.code{width:100%}.linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:12px;line-height:1.5;color:#d9d9d9}div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:12px;line-height:1.5;display:block;overflow:auto;color:#404040}@media print{.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight'],div[class^='highlight'] pre{white-space:pre-wrap}}.hll{background-color:#ffc;margin:0 -12px;padding:0 12px;display:block}.c{color:#998;font-style:italic}.err{color:#a61717;background-color:#e3d2d2}.k{font-weight:bold}.o{font-weight:bold}.cm{color:#998;font-style:italic}.cp{color:#999;font-weight:bold}.c1{color:#998;font-style:italic}.cs{color:#999;font-weight:bold;font-style:italic}.gd{color:#000;background-color:#fdd}.gd .x{color:#000;background-color:#faa}.ge{font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.gi .x{color:#000;background-color:#afa}.go{color:#888}.gp{color:#555}.gs{font-weight:bold}.gu{color:purple;font-weight:bold}.gt{color:#a00}.kc{font-weight:bold}.kd{font-weight:bold}.kn{font-weight:bold}.kp{font-weight:bold}.kr{font-weight:bold}.kt{color:#458;font-weight:bold}.m{color:#099}.s{color:#d14}.n{color:#333}.na{color:teal}.nb{color:#0086b3}.nc{color:#458;font-weight:bold}.no{color:teal}.ni{color:purple}.ne{color:#900;font-weight:bold}.nf{color:#900;font-weight:bold}.nn{color:#555}.nt{color:navy}.nv{color:teal}.ow{font-weight:bold}.w{color:#bbb}.mf{color:#099}.mh{color:#099}.mi{color:#099}.mo{color:#099}.sb{color:#d14}.sc{color:#d14}.sd{color:#d14}.s2{color:#d14}.se{color:#d14}.sh{color:#d14}.si{color:#d14}.sx{color:#d14}.sr{color:#009926}.s1{color:#d14}.ss{color:#990073}.bp{color:#999}.vc{color:teal}.vg{color:teal}.vi{color:teal}.il{color:#099}.gc{color:#999;background-color:#EAF2F5}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical header{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#2980B9;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:0.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical .local-toc li ul{display:block}.wy-menu-vertical li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:0.4045em 1.618em;display:block;position:relative;font-size:90%;color:#b3b3b3}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-side-nav-search{z-index:200;background-color:#2980B9;text-align:center;padding:0.809em;display:block;color:#fcfcfc;margin-bottom:0.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto 0.809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:0.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all 0.2s ease-in;-moz-transition:all 0.2s ease-in;transition:all 0.2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:left repeat-y #fcfcfc;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);background-size:300px 1px}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:absolute;top:0;left:0;width:300px;overflow:hidden;min-height:100%;background:#343131;z-index:200}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:0.4045em 0.809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:#999}footer p{margin-bottom:12px}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1400px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}nav.stickynav{position:fixed;top:0}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}.rst-content img{max-width:100%;height:auto !important}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .line-block{margin-left:24px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto;display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink{display:none;visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after{visibility:visible;content:"";font-family:FontAwesome;display:inline-block}.rst-content h1:hover .headerlink,.rst-content h2:hover .headerlink,.rst-content h3:hover .headerlink,.rst-content h4:hover .headerlink,.rst-content h5:hover .headerlink,.rst-content h6:hover .headerlink,.rst-content dl dt:hover .headerlink{display:inline-block}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:super;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:#999}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none;padding-top:5px}.rst-content table.field-list td>strong{display:inline-block;margin-top:3px}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left;padding-left:0}.rst-content tt{color:#000}.rst-content tt big,.rst-content tt em{font-size:100% !important;line-height:normal}.rst-content tt .xref,a .rst-content tt{font-weight:bold}.rst-content a tt{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:inline-block;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:gray}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center} +/*# sourceMappingURL=theme.css.map */ diff --git a/documents/_build/html/_static/doctools.js b/documents/_build/html/_static/doctools.js new file mode 100644 index 0000000..c7bfe76 --- /dev/null +++ b/documents/_build/html/_static/doctools.js @@ -0,0 +1,263 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s == 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node) { + if (node.nodeType == 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/documents/_build/html/_static/down-pressed.png b/documents/_build/html/_static/down-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..7c30d004b71b32bb2fc06b3bd4dc8278baab0946 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~&H|6fVxZ#d zAk65bF}ngN$X?><>&kwMor^(NtW3yF87Slz;1l8sq&LUMQwy<>&kwMol#tg zK_ydLmzem(vK1>2TzUEGl*lj!N<7$PCrdoWV0 z$w0*Ap!bZ4if7h;-yfL#MC0e;t{xY+$l~DX2EWYIPet1cohf^BdG+jXhtuq&W-0|c zKPmlKv-7OTjb}T)7@fTGd9y~u4{g8An;)c2U=w=nwQ7}zVDc>n+a literal 0 HcmV?d00001 diff --git a/documents/_build/html/_static/file.png b/documents/_build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..254c60bfbe2715ae2edca48ebccfd074deb8031d GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMsm#F#`j)FbFd;%$g$s6l5>) z^mS#w%FV~i&ZxO9L3Zxqw8>dd4I&zcKG){Yx14xKr0

ZQJ$m%mv17-NAAj}g)$7-<-@JMA z_U+TRK=AR}yLa#2zkmPX!-tO_KYsf3>Hq)#%qnY_1Fd8&3GxeO2wSmci|LJf=|BO- zByV>Yl`U*PX977no-U3d5|XS39sLdkFt8q|+|QqL_#ErUf6I%zFA7b%b>3$hFGGFs zc72AL|61pRJ1(+5wNdg|xP#*`gQ~lOnTFKiIjl#S3)+QV=h{~`9{M=hx#5uZ&-tIF sG!8onYS_8EFr8v&@CavkqYey&g)1epR*Fkm0PSV)boFyt=akR{044O6bN~PV literal 0 HcmV?d00001 diff --git a/documents/_build/html/_static/fonts/fontawesome-webfont.eot b/documents/_build/html/_static/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..7c79c6a6bc9a128a2a8eaffbe49a4338625fdbc2 GIT binary patch literal 38205 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 E0QL`y%>V!Z literal 0 HcmV?d00001 diff --git a/documents/_build/html/_static/fonts/fontawesome-webfont.svg b/documents/_build/html/_static/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..45fdf33 --- /dev/null +++ b/documents/_build/html/_static/fonts/fontawesome-webfont.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/documents/_build/html/_static/fonts/fontawesome-webfont.ttf b/documents/_build/html/_static/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e89738de5eaf8fca33a2f2cdc5cb4929caa62b71 GIT binary patch literal 80652 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 qx{Kk=rVu5YQ9XR<GPS>b$X_& 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 z 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


V$fDV|Iw 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 0 && j < len ? [ this[j] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( support.ownLast ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v1.10.19 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-04-18 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document (jQuery #6963) + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== strundefined && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, + doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", function() { + setDocument(); + }, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", function() { + setDocument(); + }); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { + div.innerHTML = "
"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowclip^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is no seed and only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = "
"; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !(--remaining) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +}); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + + +var strundefined = typeof undefined; + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownLast = i !== "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery(function() { + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +}); + + + + +(function() { + var div = document.createElement( "div" ); + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( elem ) { + var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute("classid") === noData; +}; + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[0], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; +}; +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + // Minified: var a,b,c + var input = document.createElement( "input" ), + div = document.createElement( "div" ), + fragment = document.createDocumentFragment(); + + // Setup + div.innerHTML = "
a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + div.innerHTML = ""; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + support.noCloneEvent = true; + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Execute the test only if not already executed in another module. + if (support.deleteExpando == null) { + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + } +})(); + + +(function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) + for ( i in { submit: true, change: true, focusin: true }) { + eventName = "on" + i; + + if ( !(support[ i + "Bubbles" ] = eventName in window) ) { + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +})(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!support.noCloneEvent || !support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + deletedIds.push( id ); + } + } + } + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var style, + elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? + + // Use of this method is a temporary fix (more like optmization) until something better comes along, + // since it was removed from specification and supported only in FF + style.display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery( "