From 97378998a5f8c031444fd7a0c1b1007e9282df4d Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Thu, 5 Jan 2012 11:31:54 -0500 Subject: [PATCH 1/7] Break the docs out into their own branch. --- docs/Makefile | 130 ++++ docs/_static/agogo.css | 452 ++++++++++++ docs/_static/basic.css | 532 ++++++++++++++ docs/_static/default.css | 256 +++++++ docs/_static/fonts/Museo_Slab_500.otf | Bin 0 -> 62180 bytes docs/_static/fonts/Museo_Slab_500italic.otf | Bin 0 -> 66376 bytes docs/_static/fonts/OFLGoudyStMTT-Italic.ttf | Bin 0 -> 161252 bytes docs/_static/fonts/OFLGoudyStMTT.ttf | Bin 0 -> 173520 bytes docs/_static/fonts/YanoneKaffeesatz-Bold.ttf | Bin 0 -> 121352 bytes docs/_static/fonts/YanoneKaffeesatz-Light.ttf | Bin 0 -> 129136 bytes .../fonts/YanoneKaffeesatz-Regular.ttf | Bin 0 -> 128564 bytes docs/_static/fonts/YanoneKaffeesatz-Thin.ttf | Bin 0 -> 129060 bytes docs/_static/haiku.css | 406 +++++++++++ docs/_static/header.png | Bin 0 -> 16588 bytes docs/_static/images/arch_layers.png | Bin 0 -> 27645 bytes docs/_static/ir_black.css | 70 ++ docs/_static/nature.css | 245 +++++++ docs/_static/noise_dk.png | Bin 0 -> 22763 bytes docs/_static/sphinxdoc.css | 339 +++++++++ docs/api/basexmpp.rst | 8 + docs/api/clientxmpp.rst | 8 + docs/api/componentxmpp.rst | 8 + docs/api/exceptions.rst | 14 + docs/api/xmlstream/filesocket.rst | 12 + docs/api/xmlstream/handler.rst | 24 + docs/api/xmlstream/jid.rst | 7 + docs/api/xmlstream/matcher.rst | 41 ++ docs/api/xmlstream/scheduler.rst | 11 + docs/api/xmlstream/stanzabase.rst | 123 ++++ docs/api/xmlstream/tostring.rst | 46 ++ docs/api/xmlstream/xmlstream.rst | 10 + docs/architecture.rst | 177 +++++ docs/conf.py | 222 ++++++ docs/create_plugin.rst | 679 ++++++++++++++++++ docs/event_index.rst | 271 +++++++ docs/features.rst | 2 + docs/getting_started/component.rst | 75 ++ docs/getting_started/echobot.rst | 390 ++++++++++ docs/getting_started/iq.rst | 182 +++++ docs/getting_started/muc.rst | 2 + docs/getting_started/presence.rst | 2 + docs/getting_started/proxy.rst | 42 ++ docs/getting_started/scheduler.rst | 2 + docs/getting_started/sendlogout.rst | 94 +++ docs/glossary.rst | 35 + docs/guide_xep_0030.rst | 201 ++++++ docs/handlersmatchers.rst | 4 + docs/howto/stanzas.rst | 30 + docs/index.rst | 179 +++++ docs/license.rst | 5 + docs/make.bat | 170 +++++ docs/plugin_arch.rst | 2 + docs/python-objects.inv | Bin 0 -> 105830 bytes docs/sasl.rst | 2 + docs/xeps.rst | 50 ++ docs/xmpp_tdg.rst | 249 +++++++ 56 files changed, 5809 insertions(+) create mode 100644 docs/Makefile create mode 100644 docs/_static/agogo.css create mode 100644 docs/_static/basic.css create mode 100644 docs/_static/default.css create mode 100644 docs/_static/fonts/Museo_Slab_500.otf create mode 100644 docs/_static/fonts/Museo_Slab_500italic.otf create mode 100644 docs/_static/fonts/OFLGoudyStMTT-Italic.ttf create mode 100644 docs/_static/fonts/OFLGoudyStMTT.ttf create mode 100644 docs/_static/fonts/YanoneKaffeesatz-Bold.ttf create mode 100644 docs/_static/fonts/YanoneKaffeesatz-Light.ttf create mode 100644 docs/_static/fonts/YanoneKaffeesatz-Regular.ttf create mode 100644 docs/_static/fonts/YanoneKaffeesatz-Thin.ttf create mode 100644 docs/_static/haiku.css create mode 100644 docs/_static/header.png create mode 100644 docs/_static/images/arch_layers.png create mode 100644 docs/_static/ir_black.css create mode 100644 docs/_static/nature.css create mode 100644 docs/_static/noise_dk.png create mode 100644 docs/_static/sphinxdoc.css create mode 100644 docs/api/basexmpp.rst create mode 100644 docs/api/clientxmpp.rst create mode 100644 docs/api/componentxmpp.rst create mode 100644 docs/api/exceptions.rst create mode 100644 docs/api/xmlstream/filesocket.rst create mode 100644 docs/api/xmlstream/handler.rst create mode 100644 docs/api/xmlstream/jid.rst create mode 100644 docs/api/xmlstream/matcher.rst create mode 100644 docs/api/xmlstream/scheduler.rst create mode 100644 docs/api/xmlstream/stanzabase.rst create mode 100644 docs/api/xmlstream/tostring.rst create mode 100644 docs/api/xmlstream/xmlstream.rst create mode 100644 docs/architecture.rst create mode 100644 docs/conf.py create mode 100644 docs/create_plugin.rst create mode 100644 docs/event_index.rst create mode 100644 docs/features.rst create mode 100644 docs/getting_started/component.rst create mode 100644 docs/getting_started/echobot.rst create mode 100644 docs/getting_started/iq.rst create mode 100644 docs/getting_started/muc.rst create mode 100644 docs/getting_started/presence.rst create mode 100644 docs/getting_started/proxy.rst create mode 100644 docs/getting_started/scheduler.rst create mode 100644 docs/getting_started/sendlogout.rst create mode 100644 docs/glossary.rst create mode 100644 docs/guide_xep_0030.rst create mode 100644 docs/handlersmatchers.rst create mode 100644 docs/howto/stanzas.rst create mode 100644 docs/index.rst create mode 100644 docs/license.rst create mode 100644 docs/make.bat create mode 100644 docs/plugin_arch.rst create mode 100644 docs/python-objects.inv create mode 100644 docs/sasl.rst create mode 100644 docs/xeps.rst create mode 100644 docs/xmpp_tdg.rst diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..a520f6a --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,130 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest + +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 " 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 " text to make text files" + @echo " man to make manual pages" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in 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/SleekXMPP.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/SleekXMPP.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/SleekXMPP" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/SleekXMPP" + @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." + +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." + +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." diff --git a/docs/_static/agogo.css b/docs/_static/agogo.css new file mode 100644 index 0000000..8cdbf9c --- /dev/null +++ b/docs/_static/agogo.css @@ -0,0 +1,452 @@ +/* + * agogo.css_t + * ~~~~~~~~~~~ + * + * Sphinx stylesheet -- agogo theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +* { + margin: 0px; + padding: 0px; +} + +body { + font-family: "Verdana", Arial, sans-serif; + line-height: 1.4em; + color: black; + background-color: #eeeeec; +} + + +/* Page layout */ + +div.header, div.content, div.footer { + width: 70em; + margin-left: auto; + margin-right: auto; +} + +div.header-wrapper { + background: url(bgtop.png) top left repeat-x; + border-bottom: 3px solid #2e3436; +} + + +/* Default body styles */ +a { + color: #ce5c00; +} + +div.bodywrapper a, div.footer a { + text-decoration: underline; +} + +.clearer { + clear: both; +} + +.left { + float: left; +} + +.right { + float: right; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +h1, h2, h3, h4 { + font-family: "Georgia", "Times New Roman", serif; + font-weight: normal; + color: #3465a4; + margin-bottom: .8em; +} + +h1 { + color: #204a87; +} + +h2 { + padding-bottom: .5em; + border-bottom: 1px solid #3465a4; +} + +a.headerlink { + visibility: hidden; + color: #dddddd; + padding-left: .3em; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +img { + border: 0; +} + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 2px 7px 1px 7px; + border-left: 0.2em solid black; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +/* Header */ + +div.header { + padding-top: 10px; + padding-bottom: 10px; +} + +div.header h1 { + font-family: "Georgia", "Times New Roman", serif; + font-weight: normal; + font-size: 180%; + letter-spacing: .08em; +} + +div.header h1 a { + color: white; +} + +div.header div.rel { + margin-top: 1em; +} + +div.header div.rel a { + color: #fcaf3e; + letter-spacing: .1em; + text-transform: uppercase; +} + +p.logo { + float: right; +} + +img.logo { + border: 0; +} + + +/* Content */ +div.content-wrapper { + background-color: white; + padding-top: 20px; + padding-bottom: 20px; +} + +div.document { + width: 50em; + float: left; +} + +div.body { + padding-right: 2em; + text-align: justify; +} + +div.document ul { + margin: 1.5em; + list-style-type: square; +} + +div.document dd { + margin-left: 1.2em; + margin-top: .4em; + margin-bottom: 1em; +} + +div.document .section { + margin-top: 1.7em; +} +div.document .section:first-child { + margin-top: 0px; +} + +div.document div.highlight { + padding: 3px; + background-color: #eeeeec; + border-top: 2px solid #dddddd; + border-bottom: 2px solid #dddddd; + margin-top: .8em; + margin-bottom: .8em; +} + +div.document h2 { + margin-top: .7em; +} + +div.document p { + margin-bottom: .5em; +} + +div.document li.toctree-l1 { + margin-bottom: 1em; +} + +div.document .descname { + font-weight: bold; +} + +div.document .docutils.literal { + background-color: #eeeeec; + padding: 1px; +} + +div.document .docutils.xref.literal { + background-color: transparent; + padding: 0px; +} + +div.document blockquote { + margin: 1em; +} + +div.document ol { + margin: 1.5em; +} + + +/* Sidebar */ + +div.sidebar { + width: 20em; + float: right; + font-size: .9em; +} + +div.sidebar a, div.header a { + text-decoration: none; +} + +div.sidebar a:hover, div.header a:hover { + text-decoration: underline; +} + +div.sidebar h3 { + color: #2e3436; + text-transform: uppercase; + font-size: 130%; + letter-spacing: .1em; +} + +div.sidebar ul { + list-style-type: none; +} + +div.sidebar li.toctree-l1 a { + display: block; + padding: 1px; + border: 1px solid #dddddd; + background-color: #eeeeec; + margin-bottom: .4em; + padding-left: 3px; + color: #2e3436; +} + +div.sidebar li.toctree-l2 a { + background-color: transparent; + border: none; + margin-left: 1em; + border-bottom: 1px solid #dddddd; +} + +div.sidebar li.toctree-l3 a { + background-color: transparent; + border: none; + margin-left: 2em; + border-bottom: 1px solid #dddddd; +} + +div.sidebar li.toctree-l2:last-child a { + border-bottom: none; +} + +div.sidebar li.toctree-l1.current a { + border-right: 5px solid #fcaf3e; +} + +div.sidebar li.toctree-l1.current li.toctree-l2 a { + border-right: none; +} + + +/* Footer */ + +div.footer-wrapper { + background: url(bgfooter.png) top left repeat-x; + border-top: 4px solid #babdb6; + padding-top: 10px; + padding-bottom: 10px; + min-height: 80px; +} + +div.footer, div.footer a { + color: #888a85; +} + +div.footer .right { + text-align: right; +} + +div.footer .left { + text-transform: uppercase; +} + + +/* Styles copied from basic theme */ + +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 { + clear: both; + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- 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 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; +} + +/* -- viewcode extension ---------------------------------------------------- */ + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family:: "Verdana", Arial, sans-serif; +} + +div.viewcode-block:target { + margin: -1px -3px; + padding: 0 3px; + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} \ No newline at end of file diff --git a/docs/_static/basic.css b/docs/_static/basic.css new file mode 100644 index 0000000..888716a --- /dev/null +++ b/docs/_static/basic.css @@ -0,0 +1,532 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2011 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; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + clear: both; + 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: #efefef; + width: 40%; + float: right; + -mox-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +p.sidebar-title { + font-weight: bold; + text-transform: uppercase; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} + diff --git a/docs/_static/default.css b/docs/_static/default.css new file mode 100644 index 0000000..21f3f50 --- /dev/null +++ b/docs/_static/default.css @@ -0,0 +1,256 @@ +/* + * default.css_t + * ~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- default theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: sans-serif; + font-size: 100%; + background-color: #11303d; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + background-color: #1c4e63; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.body { + background-color: #ffffff; + color: #000000; + padding: 0 20px 30px 20px; +} + +div.footer { + color: #ffffff; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #ffffff; + text-decoration: underline; +} + +div.related { + background-color: #133f52; + line-height: 30px; + color: #ffffff; +} + +div.related a { + color: #ffffff; +} + +div.sphinxsidebar { +} + +div.sphinxsidebar h3 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; +} + +div.sphinxsidebar h3 a { + color: #ffffff; +} + +div.sphinxsidebar h4 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} + +div.sphinxsidebar p { + color: #ffffff; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; + color: #ffffff; +} + +div.sphinxsidebar a { + color: #98dbcc; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + + + +/* -- hyperlink styles ------------------------------------------------------ */ + +a { + color: #355f7c; + text-decoration: none; +} + +a:visited { + color: #355f7c; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + + + +/* -- body styles ----------------------------------------------------------- */ + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Trebuchet MS', sans-serif; + background-color: #f2f2f2; + font-weight: normal; + color: #20435c; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li { + text-align: justify; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.admonition p { + margin-bottom: 5px; +} + +div.admonition pre { + margin-bottom: 5px; +} + +div.admonition ul, div.admonition ol { + margin-bottom: 5px; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 5px; + background-color: #eeffcc; + color: #333333; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +tt { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} + +th { + background-color: #ede; +} + +.warning tt { + background: #efc2c2; +} + +.note tt { + background: #d6d6d6; +} + +.viewcode-back { + font-family: sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} \ No newline at end of file diff --git a/docs/_static/fonts/Museo_Slab_500.otf b/docs/_static/fonts/Museo_Slab_500.otf new file mode 100644 index 0000000000000000000000000000000000000000..84ceaca567afce3fbb0fd80ff76f5abee39e9688 GIT binary patch literal 62180 zcmc$H2S60Z_weo=yJx*9n?pU!9`>#vii!^1f-O+{%^6-BU%Cuqc8Vu{A6SYk!N zUSf*{6+uCYC8$(O-jX@v_jdPyL(w#U|Icze+h*RpdGqGId1VI-88U#XNQF~M%DQX! z?p9H+^dl*%{9%gP`=ZCd0fWsO>-tdCu`LwU%(utjprkK_TYfQEm|%* zH+=|2(N+{iO>p&c_Km-HK9i!DClsaJH`(3Utzhh`^LQ^F|JzN*3o1{u7%acR|8*yO z1x$a{sPA2hdU=7OR90Tj(|zg71MwDJ9e-GFXD|0|ihXf-9!^naZoWSL0qM-QOYnTDe56wmjz92f@mpIcYQFzA zD#KW=WKynT0#8*59wkMal}AW@DFM&LGELQ_CmYKON=?rf=RqrF?LlW>9{V2Q`VBjFe(UHKbgrMtE#VS>xY!SaQK9 ztf=1jtUn&RP=WY#5amvJ<2%k&bG+tAdE#FylX}D_{qPxo{O>0{?S@bG!*|6iK6rO9 zzTu2@TT!j0mcGU7lkmQH)z8@4hi%#8)1RwDyk7)&$#X?5H8Zv}OoGWDd*Oq9u%c`b zGO@4LpQzhI>bEmK8Gw*EQ*QXamjvZhyyk;*?Q_`q6y63S=A9AO?pU7{mb|6oR0%e3 zN7Ens-r4M@@Z2 zRiUa<<`hSLO=&0#QVKn21tvIkWV$Cno`ZM zKP_;CY;b&Ssa80Wc2pbWgzXRu?Wqn_N2(Lm8TqOs(q~ty8}h>LR1c~r)e9-957ig3 z(4QKB%zF^^EmGbPYA7{~8cvO%MpC1w(bO1fEH#cAk3E}DEua=tOQ;pp8fp`@joM26 zK<%KmQ$JEaQM;*K)E+8^+E4AJ4p2W+ho~deVd^OI&SSWe#Zf1zQ}j?HRlCu{aU8bb zcub_n;#j%U&eS4m9X+1%qFrcL9Ght-c$|bYgras*C#Xy;XUuudTFJyj5+h z`c~Ff_Ez1je640!MOekus$JW>Heb7E?FqHriP`)2*oGC>y%ll06YJiGxI0f>qH<^@ zU6HO#SHZelVn0?Wsw*xjl8kk8R@JR)T3JbTx0C7)unI3#w;Q3}zki=W*MEQd{i*jS zY3=*?_opc8{n_{D-k*Pe;r+$;mvChle-FQJfiO^pBboa$;xp_s+GN;ew9aUm(I}%< zx?Kj!5*aq>2h!W8^-Xh3tDZ(b`jd4lo(bZM@}J&Cg%6Hxkt#p+r)ilt=1P<|2S-2} z4;+hmv;{ST{)ygA$I$!e1NfFWTk+5PBRB`j_(M}>3W}y_b*a@vykad>p@ckI$ge~R z1qz`+DZDZx)kxqUcmL2b-%wPA#$WBh!``dr_**fdDwTv4;pF`ar>P}Q$VNEzS|dsH z!D%xd8O>BA-e4rj#YkGKkeIgNrRUSj==JoE^g;R*eSyA8C(@a87M)AKqJO6i3WY+g&?>AH z^%XXXR*E)?P6{VQAH^WWIK@=OG)1sto?@9|m12Wpt750(pyH(BqT*LYvf`=YrJ_Lb zR#B*UuVj>!l$^4LQm3q|Y^1bPc2)LP4pNR$PEz_QLzVNC5z1)gCgnEeKIIAJS>^5n6)?SX4cPasM&Zk4>LcrP&2*Rdb8bT zab{P{lFZV~3K%oSf@#FGVmdS5GOmmt6Ur=NmNV;^?aV$VmO0B@XYMl@%uD7C^NuaY znzJ?8daO0uo^@geu)|qbb_yH7&SICaYuN4VA@(eLlTBe?vVW+`sj90QsO(fdRKr!1 zR6(jms9d6J*IySFDwY#y$CrQz_De*2m{<7ravD`CV_ z`t6JDdgA~7(i`5=Z-0|#y-mvfr8m6gUuRKU^7HYX?C#_}2_@SBau0pv!vLv^KGN@i z$$=>N`UQG$n4WwqHRmV&erwW@pGo;!sX0ICcd+!Nzw|q}1TX$2#la}LdU$#| z`x}o#Olk@+DG!nA3y^+?;E)C2|Dn==1xmj|z)9rd338yNrV)aJbk<;`42Yfh`&iW(A&ehrH!L} z=z<3ur*=+Gfqp(7-V;5%JpyJp`}+F%On09a=auQ`@POo&H+#D^!MR4mWH(Z<6>Pam8|Vo4-Y@hE|YBdo z+r4@5i3noJi3DcxsRU}tnFwz2nFw;pi3E1>sSJAYsRVxUnFNcQySI;*hj$S)CZ{4i zrl%4_CKn`_OwUEAOwL8POiv}qOfJZgwWrw|2Ca58eLl7Q|=O zev_R9+*j!DLN-SyvsN$g3fJzH$KPZ}`4uK*% z3V5ghq3(mq3AL6&)e|byD9`bPozu8q_RMU7%)CD9}@TXjC6iPeLUG zC45wxP{KvU3iT#bo2Y{dQGGe8Kt%+#9twr@IGQ?5p&o#;BJu8gV>jTJ^ws4da=D^h1DDwU!i zYfw3%3zgI_6!nCn-%%(8(|;;aqf;m-)Ur{@Ld_E;X57CJ)wf_uROozZRNhgBr>4>h zB}J{HP>WQUF{lA5D%jKADTR|6-IG%Ers!Ujq7Oy)rWAcCl>8O_D7tS2MgL0lWl;|A zgR1LHY9lIWfeKc!Sg}!&pe(2Csq|FNSFTm=RGu=cWY)=SsaZB-jk4w&R>y8vF)Ciw zLFKMmpgN>_Uv65tJLSigkF8);VM2vf6`*3Pii0aIs`#=}wMySt%CFp`@;m! zn^W&?{b}`AHfY?ywZVgiQyOkdrhpipncWlyeS10pMp`G4zp49oigM-5{$EJ=)y0q^y zxvOQ@Roz;3+t%$*rvRt4?mfGY?*4O+20eQBIMUO;=k1<`UL$*D^tS80sZaSnTl(bn z9n|-Dzh?a+`M^zs+WmN3wa-+M94jp}FjB?DBG09^GjJ-C_ ze%z7qHse=MP)+ciaLL)p`GiXgmmw~(u5Dd!xlMGt=I-sDF)?gn-XyO{8IvbXe&R82 zish6oQ@@$Ic&fqE$@6>9M_yK5N4$G_AN1jUHu<*jjh*H+EzZx{Z>4_~{{sPi0^$PO z1s(`e2Tcq*8C)sYFF0ws#q>EdD$iIpBQvC9$mEb`A!KHinT=+4nK^3a?3vqVUY(gY ztNyH>v%Eu_h4v5i4t+8E+u0LmFPi--%qGk=Y+ZQ8@TuX~=eW!<%&R(Y{=9_wX7j(D ze{lZq3x+K?vEbRlsSB?!%ve-yQNKl#7R_6fwRphdGmC`?n}{J1K@s|hEfEKoD3&x^ z(tpW!OD^bHy^DU6{@v2?OP54eiu8#*82L1+LDamcQ_J{e;mcx{H($QuJLPvnzFYC# z>lFi6T#RO;dqmHSzO=HzN}rWCSG8ERY*p6kYOA}izOiP&n%!%ewcXbSuRXV}&N}yX z7uWOa`>nsRq0xrP8&+>f+t_*I!i`Thwcj*l)AR3pf8X!>f#17z(VrBuPtwaz3UyB^ zms<#n3kMn&vk*ltYDg!DW+00tR^*HZ#1q2`m7%VMutEi$NHkM?T{=^f3^jS8&k^1P zo8QZO|Ni@M>OD0!oZ@ahgkhRY_B&xE(}3mDm%baO$;)ZLs>wVd3MSLn?q9pFgb6~F z<~~gBEH*Y-E~!DgB?t!JgAR9LOfY?A;X`Y?!0?O4dD%^l}U7vf8yC z3>CJ*Q2K0MM#7Uk<&l>f{q2tM^=#fM;dd2OSeuZZqlL*NcLFrjo{9_-^_mxvsW$SQnpcAwGLJ#>2&V z%2XHeeO~=r*b`Wh+75ccS83tF=JEO6@?mc_cO)K0YDk3wYiJHFa-M<>|1wL(-AQe( z;tu6B#!@5FSVa^;H;&)BbnyNUKP}MfxINn+Fx(;i*wxNN)3`S&Prk~Ts^=qA+!6a} zV>-9j=0|Ii&&B2Q(4qxP%=(RN)_BmlyS&<QMFoC}HSPA`_ zYSP)xP;(+Qf<{`XbqH$Q1vPKSI+6;`qz0+0C9RK<=66UX-uM>SJXRhP-?{^pjv@H1 zwNTd?YB)j#eCsYzAHuh4X-Ok@(#V0-Q84OVNUBScY4|=>c?6bdAb>1Mg(cvh zO#ER@#cm?cW z0*vnmt;s+#s6S~<#*+z`i5(2mJuxHYrb1=F;oJjiCsC4Q&`qV-* z#DeQf4`{eHd9?ARW?UayU0^-F>Rb%qJVTBVNCrwXx;&4s$J z2WE1&&RPh5(5+Q7au}z1By@zF0}!kQb+Z(rA+7olt)9O$$SbU*>zi^^tuR@er8yBC{G-S>$c&{ z(&d|$es7s^drX^-y#{xv-z{0M8{Uo4r!|3k(BQ>e>}E}3cENTf4+FrLxn=08Qg6U9 z8uSp--s*$R1+#1}X$K6_zzZ@c8wS06*hJ_>%vkc!Fq+}AAOX&4)^ArQ?JANPd)<2$MpHv za4cU5cX3c_eItQpb6HW}; ztK*W^u1!eH)`D4!d!#yP*wwmO@BQOXPQfk)hc@d?7%i6s=8&N|cQp3F{ZlSZP9uke z&*qyQZuVn}mU}Xd+}Av~c6{@C9uy;=2ei|6?=jM`Q};6|yo8f(kKn{(I<^3gzE;Kx zff~X+s}D7Py|&}$-FzfVD$eSGG+fPc(6}G;I?pzY{+xFT_~*b>=m(>S0;-c{q(+0r z#ELJlNI!Wk<=M@;ZNBX@vSYKMm(!4C{H%Wi@o(tt*UD^ZzCpa1Jnaq$_1@401tzvXn=W4-pq=Nm_$H|3HNt zKm``aHf)e*Xu!;d6RUPcO+ZFb+ZymFVBk?CKNL%8}!_6g{ zU*pf-=5t7R1GdMgGgozL;PuI1^AJw|hO=-rM39KW0VDzU?!9pa=(Qr>PA%a=?QNC`_Sc9=dFCCiVHfobMLuZ+WRgS z2XE&$Om<&B!jjx$xxJkp8{%wLFc8u-ToBSy4b`q~i{@XD*BG^(5t>x(x|4Qhd)i#UEkB34LvCT*un2hrx2b}i3 z)@3vwqUue|XN*KvjPn}WLn~0?-zGelfBpA>e!3x987iPj-`#d(0VE2xJ)A) z1WI*$e?;g(-E)si*2F?fGy|=hPT@l*xi1=Psg9SB8JY^gMaT@#bjlQwDQt)Kt?bBm z5DHPLBnpCA#8G&=OlWI}F24#kvAE*s%IklX}`jQsE|qYj!GxCDBMA zf+A0eKpYq8v6)ta)d0E6`tLe_A&$c#RI%v&D?t){UW;EEAHauzsN{z7N+C4yG}|KL@YG zg;@oCP(;6(MCNt6&SE$H7;CIAiEJ{0y~Ri|=1@BimOSRB<9hu)jIbpvSt1;Kl1g^9 zd(3jNhNHGBwNO!?eC{`)VUqdJu${~RM}dd!+<~7hV0$vlW!tfP1bb%b)v^0?4W3XrJI^vtQ>^LEgd74DVu%wrv3lr|WFi@|> zMRMWR@Sk|nOX$LoF`b^W+<|e1I0i8d(Z!e+%%m~elWZ;6vrD%w+$Yt)+H)&yTdl~Bu|K9$N(b}V4f^8#k~?XyjI4+9~$C@jLr_6 zQEIY9*~tyY6I-ysndVGd;%pnwzp_C2u^d!@x=;tokqU@fTT%`sr#hrADTjiTEw8?f z!#5xmb`?#Mz4;QEixf2g>aYj*My-j_rR+TYFjxD0Ok$Va$Ymx(O|T@X#YB%>W~+wF zhFwrywRhLTu&ug7LED_a)%Kq@Zd@=wH_&h4RAeX%W$2NiY|d92xrq&O6X%SiA5UK9 zAGN)3rOiX;?6uvgziGi4JJJNZ;YzHrBNN1qSOW{?p+2q{DzPJdg9c6=%h!GVZU5JG znaM8wXAHL_^^pmwp(V}{qyZGhU{z74w#l6msnRu#J-T+T*CrkErJ;=T59`8zvHT@D zi1nMj45_jKbYa4_%~&N8<7n857D+AF|re{mOE>H=C@7-5Rugmg^x2ZS>vdx4_~2#!*h3`8YpgqB~+_>sLnxM zhh5#aCu*;s+jEQOk}h5ibkU8 zJ$IkxPpi}^NM}b=>7O#eJ`e0Ol`zx-b|<$Kj)FZ=WWo@`D>5V#6ku;S+7iifiaf=k zQXc$~r$n~1LDOU1z?gA-@3=JgJj<6E`)!0 z)3V2q9mlv>Wh`Z0+~WC`*+=s~tKTsrAZ_AtFz^$ofCRj_Dl z-Vd;Vy9NEF0flKS%1fi*5pyGnEWm2HTj)99$IP9zV3t(zg7x#(|NMy!4qmL+MXL1c*R9*k3zV>pxo-GQ zrkQoB&6{PJdRAy?FmIp?TTzJH-t=B!=eu-vx-z?|2HM?gU)cHKUD6I$msX;xcLcJO zaMBqSSh7Oa^~ewM8(@*Hj1ST{f_-5EvG0=duCq$LOVnO(39iappw}P|t^;qNE_s9O zn2Zs|Gksb0w2sO2Dq*j3l|@HkZ?a0=rf?B(H0WTe5;hbr(mZ490>_{Nr1l9*?3)OV zSAlzI9+LwhFS%JUP)ozb*GU_d245ZfU5^4cH%q^0cCc=~YRaa-SUx{-1RFYU#d;kC zso?7#HÐ5b0fA4K8vdi=vH$9>xK)2FK1kV)ahR>#HXL~F9aHu5;XJ&5f*%(nHQ zDTiZu^^UN#u6N*FIxvam>Dh2Fmz$Mt@f*v~hMFX0IGl^-Jx)B9Y_3GWB@t7x1d9_zq8vL0?AIgQj z8OlQ_vLoZ<>O=kC?_Suljh~pngw7Z=qP1mX`x~GF>h_(2*lW|>bdxi#s4~e{I~_<9 z+|5vu7QFg6LYfGFNRS@Mg@f7LtRwIpqKMd}6AEgA#o>G-mKM(m`3OtGThhxRjkHn) zM$MFfcS%Rlyk@gHq&3gQ=URa3`t_8TCv2M&^KL^O+6+uUW{1O)1`b!iGKoH%3p?_Z zhp|D@7}>81m#xb8Z|iy21V-QYTU(nBzkt~SUSJU^Kdgmn4sUUps!M3BUH9sYCVky6 zC+}HaJ3F>zluk|D^obxO;!rORHU}=7%Zjsrt%=P+0Cgf!|HwYOx^mC9wTt!0Q6H+f zEdBH--vLA&Oze2SHrNHBgGzmrOiTrB8az+znr4197h+x@L$BOSGu4stJ9#DKvL$>C z+%;&g6SS(eD_5-L&nKel;5>8sR2`QxJ955=fr~y)+k07(TK0q@^+^2;!hqGixIHI# z>2S~&&zz}qRn_V0YRhxko%`<9>rh1QtFaz(=MC2I>g2V|2iM$5b-YQc_i=XO)z7d~ zzdu1TqQUGXY|2*dv4E9{?ZJ-4QBBKDSwFZNPtHNN#15$Mf@a8dQn7xoo}&Vb>1aKU zPrBhudzG5#B?RT?nnTrs2HB{?R~24s3UceQop2iyRer2j=qe4T&;jS}A>#5-IGZRw zZzex)W_+G}{qByYgG#?PVlztqSE1Tg=%^Dmi4(Y0CAMRvu@%pH>8+1EV2ZFwz zz!TQt3cD_PeyEN-M&f#lZU6qn*!IS3F4ov^D`eyOH?j&+*2!a8)XebfD4Bgdu!-*+ zY=?_2syX=k@x?XI(veJ&Y>Syeel9YD6&lhU6(uuhf`8ShK{Q7#O$|z%^i5FIQ<7$U zuEm?=#FsA~IMlAyp>xwF9q+&8)o00=L}1c@Bz8$R2PPX1<#5@1NmY%5gr63w9Y)S| zyftcc)kV(5b15?Os!6_fZYokgm#vRP3@lUa3fVl4CuTARX6X#ORWF1}8hl=J`%Geb z5jSg(l-_LAlczfM4rA+o-0yk^C!frUZiuXi*km9h`UWZ_V)u8+CLfd*>B8srl%Rr;{V*&PQCatsiAc0eDwezR_m>Tu8|X#}o{ zV=ImTE?V`%9th==%@3vb%7Gr~9do#>LqKcVzjgUd6zx=x&%AuzGN$7WUH>hEH^*rY zAK4s-Tqyofkf&}+`eoI-Y?@a^CMn~(A_b~t(c z7p216MEX^>@)h*ckdB}UzP4o@(s_zXKX*x}yVKfNJj{X0iKH^&I2%`Zrx4F*`&TsG77n_!$4@-Y{JMqSxt! z=Hh%NxET=Jpl{>)_Mzu*^Ke00mDCaXCq06Mu8HO=AsFSMAa43fp{wQ^3vCQt8K7Bc zD|BV9CXyhB>qxoC2;-P}fs6fQ>1zADt-KY)G1n7GFv_1h^iPrB(yJgy_!@$gtFWT0 zELeyYQS9&VjQMVxxGjRrGs^F~0RDIKOuPXWMJ?Q7TagpYf}n_LQuPr#7Hr{(QZPfE zizp3dAKYmTCzzWE7^@CP3J?Qd7|(t7h>9q%8xQMBK8e zikc6D`<_XOM9a1y4VXDI=Y>cz*1Sz~*Yh^Wt4M8!R2IxgC)~U1&va(hE6BtY;X)$4 z5@zB;AE3NeTQj8#qdzwFdh)NwGWPN?Mu--16o5D)X5=hlXc20VD1Sz5oxhdGW#g>K z^JY3ATAd7igGMs0Ayd32SWfW9Z9(;58TvEnurgg4cTLkr=nB?$_GEx6ICzO9y{%of zeiM%>*fZvup$)N4Pl0Z#&08X+&F9(Svu5B{;gUx8;X($SNHmXmvM3!_fC@<()U()` zaqCtgW!+Qh7wG3r>%a0P4=U9w`yX)nsq`s3b9Jv&FE6j$5&fNBdT7ql(9wjQNm}x4 zRCVld5#;h)iwkV}{Cc=7UnaJH^r2s*D_;;>P5K{w?2u=dGz{AGMNhc=y@99;=~qUq zivxB8Dxoh`1?elWBHS(F^7VErUhC3SsM@j{Mu*N_qUZ71<@%M|FVAhl*Htx4@xh6& z(%bvj)e)7dN&mTia~C3H>K!m9aqE5a8xP>l11|ptOwc@F53f6Yn!mrg@f%C-K*rhA zP+r%8b)GeRINy0rPAy9WeAqBj4xxTYkig&MnBU58EL;B4ZwXDMeMatdNgs_sVgxw)>cG{U$i~v1~Bn0rF1j z?4#`KMFuO}3tv)O|=QKs6kq-MEi3=QhlLLW3p` zqBE68#l0#?PLIaf-t#tU7uDHcj>X-(e9}eFpS#KEdtIqd%&prIB~NPhaJot6wN|N5 zp|xQ2)%2?nk0z1LdCJ$g@eOUr=sXw=c2|kr0rtl@1}v}EW5FKcrQOMj#Fq&i6EsAk z@}P5pCwK(OSG)!7NIX-wFVtjz9L-E5ZIC%N?3Xe(sIX>=`Q=n-l*&yehqi`PqiWyoE#g^S~_#tEI!Dv5_yvT?1)S#pKv#K-IDc- zHtE z6>bdMqBvfKSdjMkS3I`H{Soncd;Yg2np*dpp`Ah%m#gRd$1wUSeS6tY_$A?1?3D-C z_x9EEm+{)@ToivRcWzo6r{GWc()aFy#Z4vj5zIB$e>{WpbL>qR%chKv zZQFU=L_Po0C`Ny9=dt}eXO7_)%ux*`mW!?Wp7S`XTYpJ2Wya=hrxK$M>Q>KVoxR84 zqFRM?)4-1x$d9Z#FiB`ZA4O#ew{7=n05__cY?ide9iX=0!Zc>dI716f=__rC3!`2Q zS;@38C^pz?xBWPm0C>R)DWlln|D z+ZA-o+>MKtiQ6l?qkrCeQG0uIEJ|DT*aXr;166-f9rz*8&DGz3q7H|CdjgFDO|%l! zh1)d{oj{_InG6x^MawgNOf)$wVR%^v=X+)@Q)3RJvH0*2G#0x|nc}Qd?;?)LQ0^~H zof`~oG#!NnsArOiLi;Ol>y|m_?+>}krN;=anpw;IkWJl!6TtKxL2S@i_+0_GL_-7Z zy}@VgnvdzK=i|pQ`h9UH5AX7s$TuWYLP;yFnz#!#H=w~esPK#V@vC5w+2cNU_;_KM z=IR-i6Y|&%>rl&HtkQ?i3lHO)64eHGhI_MzJ$B50%y`$S6MA@@)a#r_F!~d{^0Kbp zOiCVjp#Mr9S&tc5FmWWNSSPM4>cn*=ofxW!O0kkvuR+!Z1D}2yBt!+9CrE-pN&*?9 z$$(nyPxIp?8S4kn8=yM@<@9`%DAY!T%+PgzE<`mZb5vYPgZ|ca+DqcVIo$4DTZrMD zus!k0Jtb@(sYxts2_rJdc9v+Y>f?SyHK6K&MhD-JW14$Hp(761d6@H-eo~-(f|ieh zw`eqOL%hyT3j*e_Ijq0U`9lB3nvLw9ALsb%xC6dE3j_S7e}_o+9j4O%Fn`zib3a@; zI{ByZQT&FhOtfmmD%^n3BO# z+`Xcf*}v1W+Rz=1uee!5stGNWq?$!B3~Km8e+68xoVW#Ru!Bt#g-7CqF$gaY87Isi zB@@Q*cP0#Z;)-45{wV6?iNDuL0rwyg)z5CkB=48z+GTmJ!8{4!KW-^JAYpt$QOExl z%HR159dV+TJxjf}{N*&=X;nN=!3$OI61?H+Kk=!sJ;yvQ|88F6=cuClq0}LI7;#yo zi($8hC|`5~7U=8O^!%_}jDEy~zP&~rJI~{_PTQcV_Gq(-xcm^O5YkSo1}oh3wvo+~ zw}8WK*b)n6>KcoGVxN3bwtbRR7y6oPx0%{Q#Rg4Hq7Tp{ik8g3Zxa1fldYvDi@DkV zNt+9>%}n<6Lv*A$)1Jv>ZIPAMM!qF)JkqdN2{ba@B9Z?c^dwSk=Q2m)7)WqMep6iA70nz=+Wan zhmSnw6{kC978tsI%Ma_MeR&ZcO|D`AVkeW2bD3#^AM8|+K%=^EWLZi_Y;M0#MOOF?G-oJc40-rB~B^uwu4##Dz z$Xk(trclXW!PN19djrD@2YCP=d&eJeb5 zB#Gtrb$U#~9NHz4*|z8xBYKEH2((B=N(=#w3asBWC0&VAou(hTr$Y5og{sA1bFKgC^=|U}&Ib-x4C}{^?m6|Aq z#)d6l#+~5fmbR5Wb*_Hl7Wau`8Taa`IFyfHbE#j-LE@=UyYy)0{ncn*&Bwun^5Wcv za<7%bBJeP z4;cckB!p4J+^}a(L51A2;LYZ71;VBR^rlkdp3KI0kGLDmmaa!b7d(Y@&j?amQu{{LFJP zjs25tyFnNwr-bnBp%oKGr|dLzfI+u??eV6rcQ#DTuBI|Asz+?4!3Zs}Pm`X`Bo z_g}~l;^U@PmpuW3zHpO?`80ZU>=(&yf1Xkp^C8vM{8H`79tz^hTkNEeW#XieUCK!z zt1Kr4p_G$CRBpxI0(T?k>^jNc%hJ znq_oy!_E5+8kC(HsM6xy96FDhV5d_boS)VyQ8=H5w#}EI%!$km&f!APF4;}k%qCvk zf05?`uI_Pj({*VuwXK#rVFf)r?X@FZgT^}!-mT|btMqZ+Sx-_=7VyB49{aEUlK)e- zmJ4{&;SQSDXsh1jE8Z{~ZLTH`2$vB(vJb*+$p_(7DIbK{|G@|0RGB^qc|sQxg8%;r zNP+}NvDi==k})TYNSP@iC9V`wX8s4H#FdGZxd=-p%LPlS95>TcnKOawlDKljI$ zAGaAQmXXqiSWP7t=W)^J8;e7U@r%C|L9#x)%TN+6mv*e2A}#^QlFK%|j0&p(C`{WUM=P;-2M|^J7~@>A3xdC&W&Z z`TLqA{=^Kn^Uzjp`%gJ|6kUFb6}hy5K|=pDb9DacnXoH^I~ER$iWE6fiSrBoPHa(B z;IoTI<+(E~m9ibBx5(r1iRfo`Fd`?`MwN&_8im`KZG8&#MZ)( zGTt1GCcqWw3v(+Oz6++0=D>*@jQEO0u#J_VtDy|rbMS>VTv>au6 zNs;L#+k{@owExzQw8S6ET_%oHR4$kNZ@s3td&}TK=|Oq%@tE9`m3z61nfW*(yTzHm zJ69>NA545=@ozh}>)104%mU>z8rD2l!WyB6=J~T`EUJ4k8X+>-5Xqt@7$aR1J;nwH z34PM$1e+huLF(W<^B1DVchvLXc?`ig9(LTa$aO4b;+-KUbO+C(!Z%@;>kwwE>*%$k zEYXpyvgk-=_p{@rF}id2HJ*C{j-S@Pd64*G_pUj!w~M-7TXIK(dgIT`PS4HbM{8?! z?A*lHCwdJ=;uX0iAy+bbCe4yOlj1-0Oq%r}{I{ydF2K_~UkAB$S;%1RczR8{@64jDy zE=Z{K0abCwyOq)0j88PD;zH2Ri{*}^`xpCBlSaoTaY^}~_%=beLI;!OUcKGu8Te;!XT`F;J3wP zOP*VByl_;hmA+IIVNODk(abOnq65&p@!+4ERi1ystU`hXk0P%L6Dj>^0?O#iA=>LD z7b;2UCrb(Fq5nZXKUubT9=~M)$iklH`(laj5LF^prlXCw|u`J>kV()V)LM*AM>6{vL zXc52ZCKDVve)WFsiOc6V^UFU9Qx!v3KMZDV%z8|lGGU~a92UA`;8WSAJkuQz#1n>K z*d%cwf>LbxQP4rD<>@9ZV>CwM2-QCcz$itmMWGxXn}ZJVD_JhYW10tohzvd)wv-j9 zVGL`E!7bba%ek*>lg%wR=P8%CK712@p^q|{<`8adOy4df`Z zC!g49Jo)8&Buj03k!3=QPfKm%|9c02&B2j^vCp8kXv8#>4nzLqF9*l)slkB@LTAmh z9BUS>yW4YUnD7iUxuBbwbV&}kd72~2(#mHK{!_>eOawu$wag*Q#m(V2>|^vWXvGe* zXCm0)DOe)zUu?)sy%t86*_bi9=<@NgI4!WpII1bI2uHODE-qVwj7yPWQ~j4wEeZY> zH;_fE9>#xr!}T&DBc0I%`nMv(zn6`mSkvE#4F4zyD)}KdTgWUNril((780WMnl&vT zkU!$V#BSSt?38vx#HNMo`FE93LFZ0=7$-Gb|BvIOPJJRyiYz68&>kJz9xCDML7#&K zlOOyKjiW{AIdQcw)G~%<{aS39dX?_|ui6VwrN?Qq_Gp>Y#c zP*jK{p1EX}#EtFy1U^a``jZnxVsVD(ZKAn6$e~Q{fuL{`ySRgqBmy0vJ`SzXf3$cb z2<4!|xjP|xP9FEimxxH?444bzTv0QnV2`~d!aiCQ8ormH-%>X8XH1~qQUv`L*iqQJ zXx%qi^Gl?e;x5VJ$>H3sVoRZUTn_bD9pkdYOGVr1@STq$?zr4=Ip_{u!ZFZ0hcb#* zDh?%~6NllWOdNldWa2OlA4MS#MIt$d^d;EJBGGU1KEO-UeE{=!hyPZ5 z>BD~-U;0vtFXbKuBzF5uQ0OxMvQ3HwHJ+;h!SunZt)sxQPzMc;c~XIS!ZmEqskI zqo@Ze?qw-u>o-~1`mIRWD#oiQtG));XV5^z>brl8)IUGM>AMn?UK1Q;Hf4&tr#T|c znLSH-!R7s3tfl=^q~(2xvosTw<;fWH5Y`)o++u8qxbS@l^+a6!0q;I5&=_h7HvglU ziGGNPqnw8YB8t+5JDPc07H!<9-L-zlwynJLUS?c?=lBuYnUOP=&*F*sJDa~XJO3v* zG)e6v`NYWCec(XZyzGuB8votAKgDt7QpIv;x#%kSF^_Z*tNoWD=Td5-kXvsqJe6_* ziMfd`2|=1vLql6JEm2Dd!4yRy#uP;jA6;nsR8BBrV^BPmvk=*|W1%;iL*EFB+A3o- z{D~|5Pz;sh;kgua+K5VYgtlz{%_sSP9S>g_FymwP6@tGh51L@HLsu;IyJMIwhRDm= zkR&g_EqCJb;_q-NA3G;b{m`8+_v0P^6nV$rXf%@yLrd9eDv@N#(-s)_u>F!4jKLWL|xP+PJn#znRlF0Z--nKGARn*%a#vP{*_NNeKDWxbeHBUj9-v2ESF z6DC3)V!G9?dHRr$J{J9^?B^3Ui?c~FcHuA zhZw49{@I!^?~*x;`~LwSA}S3xdR7z;{oGCuSz*9z)}PICB4G~}zl9;GQhvO01v?*e zA!TOBJ0%VlT!5u=ASUrxoB~VV!f4UXmR9iB8C9Sc=GK;CI5!t(N4vPNY$j_30-E56BD{Xi0avCtk8Nm1K|?YPF2~DLtkdujb9RKP+Gz~djeI8 z_6)Y7IP)J}`imVtL<6=s{V2SU?_ zP!oGq^|M55ut8??r8+70F!y1)*u`s~ZI$F>t6#LorsG%+$FXSt*<@dQ<`*4LX~)|* zqWj>w>1M@Id9&h%yjjt$WOV;}Z1;WIt*4lj%&$ERkqGJV=|cCFBcA`d z?U>KBje?Z25+UsOxX7nFbFg)#L}f~sM+u!+)YZ!ad7+JY{bo1r5Q*_d>xbT*`v z&-F?Uq4_mI47#WR(NOKR5_P7cgaIVnu;9x?w#e>0PZQ86bONG}<7esm3vY}9HK}jt z`0xCnjPWutmqhS6aSH^vFPGgD)(YPgN!})6cgfzd+$nhr=1}fovHc^tT-v|&kAg06 zuc$p0muJ!>msZl~M=?S|H=OM$m{gu)>arx5a40z5#*>yTIVC!>e2F}#vK=fPFi-xx zPqk)DtySVh2bstd$_C8s-#TsymUGh_Ff23$rl&fjna3BvV`EI{KHP`qenX>$AcOecCy>b(U#o4aN>?3IW5U}U4aF(016Xl zSRdMr*?9~M6KbM_@#UOzLcb(HR%+fWUc3yKGKo@b>v5t=aVotp97qh=j$gQ9fO zR!I;=$pZ7X=EBZWOFDTVE&*R6lj|dSKOP1GW^&DiRb^&!ElwRKE&iB2EEf8fUis&W zYlAVLSkkBSiN$^eNrV_$LM5NZM$Bhu zL{2FznmJ0c3crD%(sN_iyOt(dhF^R-%W(GRvJAiaILok{@eUcINz%JF(697Nh%`Jm zCc%60i6nU0pGt!Fs*EIfW%sx~_W0v%OVaCq-gD9Ar8wc=i`Uq7+}(H}n|Pj^ns}NT z(NKZ|v@DdQ0u)iemyrkXd08kZ3Id6Jj9*KUM_!k(Ps}JC8V;dFVIVs0WOz|12+z%Q z_%NP-bu0swR=&6mRkd=)Y2GyB^vv+j5ksiMht$x*QPrYgRQ^0(U9T9tWXvx#T+WF2 zHX%|>iMTHu21<#2FyDX#8|E4i!%j@n`bfD3Rv%|LFROwTch6*MrL2j3395L`%i&WL z6J#ahYr?p|qP&SiRbA6vGZ3z_DQ9+>Y@_-Am~dpTnqtCvP?|@)kaAdGNm~2D{AX>DteiB5z|lZyUhhd>yo@q$4c@#`Ir!Zl-Ft91%?Y=w0ZNA4VGKh zV!}c>!{x*>GF*}+s%8gApYY?2NzX-nu_W*Lo-&6wQd|^1oe#Yv(Plnw#vCbh`je|F3@i2_1j@ab~zGR&T&vFZ{^-B_D%M71SBq-!x+{(!Y_X-h83AN znIi5td=O3&`d4%1mM%&qQo0m9TzdEH~q*n7j!_q}xT<%azm)ip`J zOd?f8dwu|Bko)T52l<;PZ$YPbE?}+EN?QEc3{h3WFK3Wtf4CFz6C7F6p7_TiGxx^O zlYIAo_gxKR>Sr8tl%$RMpK&w&h%88#5%gzJlAZrI$)W#u87&IinSG4;qR=B56~?Hl z&j%m0n7+d)fjgghkX^t{#}5b$5*D#HPn@~QLtS>=dgFIT!{?$4VMQ{C z8K8p3;jzQIYq?m5Ap=Q8*QqO_!uVFI#q0OaKV}JCo)uu~BG&d-LTwShytH!F%5^+` zYi1;KgZ!)_>Xx>ol8&2hXp5h1LK4A`^F9~0DWBuVd4+AshHaSTF-^KyI7PZxI3@Yr z6x0}h7Z!oH`3b1QojD;a!mlmIgE!L^Zy2N-C&e2l@x~oC0dF+J8&C1G1K#w0sHNOb z7|m_zdJDYnBECSMfTK#Wq8DtORMCCnU0hZZ59yhc_za9Rsg#Vsr%GBFYHZq^@Y7LkMryJIf2fj#pBx_3oQxrrJ3(axsv&evhMw|s z9iQU|@H%UtGMV-qrirt-3VwM|ex;f571EQ4uXVzY8eOGN!xbgCKut}?ty>ux-EXzF z>)yR}>s#H^(e5xv{9bWBv@C#@`AXq8i~KkBS+cga^wm_drnW{rR|}gy{P6XuWN09L z_&QlCadG)DuB>F_+;ECm{=e$J13rqP|9j>xdj|m`<~YCvF7y_H)Pw}kC6AH`{N49Ev%AS%a-k@H zKkqyHnVsD!zxmCt&Ft;m{^0%kx`+4cLDKtm86rPYF1=s(B%1f@B{{Brn)mB8cTd_5 z&MJl{cPz~70FT(NDB%)&y>Oo`8VjJJUU4_sTzdY-9H*HKM}80*p3R@ zy?x!(it@Ag5n%BwHNnk zemHlegH5+A+@tWtmf7)h;{W}9DYnY8aIeBwS~6FjKgfIn*RPuadz-QB0zP-{e0@Q8 z9?mOO<8=l(I>v0b%pUC=^wGPex`XysmVJ>8JV;r`RI{ry`wHJsUc$am=6?P!>DD=& z4_Ef!?cs22G;{uI%G@cAulX0sam$;o&PtS}Ccb+2{^SqFN!JFmzIlJKqb9zV8fD>$ z`JL^luF@>zVE)rDG3dkhLaTmuErM)8)fS!1Uu5xn7W?T{n#5Eye8IJ{XP-HnofC1o zZr$)!b?TlC&&GGy?Q&px-TD|J{Z_+wj9HqizK5*|FxwRY8M( zS4NE)_|Bj}Td#I+9SRA2`PHGr-V9pLoucw`R9^Vd$_37N55gHQD|ghs?afonM_~yk z`TG_)nowBtlkiWq>vXRl!?{)AiEY>{ODk?xI9ynoFg$z#A5MRXr_)`CuSobLAFUOuqD|n2YcA%@uw`Hi zfaaac$zAv#|FTpMPhIiatbPWbx-#IYYxFC;oSfCUbGfz9k(W_i%#l~R>@X+mMco+~ zo1I%P!*-=epZInF_Dp72Y{%Sz9zdVRym$w*U3IlIHiMp+eWs1{HWq{po|xAr!EIUr zaN%xjvE|x<6)Agun1T1L)2;abvG1NyN2On?)A*|Yoaueu7jCIG!E4F4)$wH+zc+Xj z#}v3Bv)ZOePh_s>q9br-h(X-6T@@ddDNZ?!irOyFn-*JYoE(x)#)EMfQ)*nvge9$qovWp_CwsY{VNXbiPy*>_jE1$s=!It z^gc6nYP141EWDhg26tKkRSsk2Qn|((CWbLi4C9>`T^?WC$606 zzhT?4pH?w=TWK2)eiv9c(voHcv5 z!p2)|*AnXPQrJ^gj_hh(xaoI}iVArQCP1KyDPeDGE1|rU-*xqK`*?x z(z^IVc&)`pS;8&0l5|W)&*Wx!*bLzS#m;I7!WxDC-(@*@u@Jft3$F)`8y-;h5IC5)R55@y2iA^D@>TznRXn_k6Gl z_~fQJv!biPS>EWL58OJn;VpN^9N4e?_uEgUxp&T)Fg_@M0B>v+EnEqg{9TS)T`t;E zey->m%i1*$;p^d;V;*b6GS{$)0n9Jt4BR?4@5BR~jzfJF=dU-er*3=wMF)S8-x|q3 z4zQ)XH*fMslN@3+Y;h_a$I`)KcJj?gCELy6q@cuD9ZmNSv^1;h`Dsw+x zJol@>3y1oJwdwe3>pJaDI)i$)Q=DnRtTueh-@!1eaG#yc<~#5`$}vhxep_G*zdT(} zv$Q+#AI?|?+|IMEc9zb&X0Wa|PY1g?!ign6o!?i1Z>GceSK{YO|D$;bpY`^*ApSj{ zHV-g>3$}Sk_*>4g7cS9Fx7el} zGus2EK9iNnsxf=xT>ebQ&SM6T1YB0;^JI*%V&Kk%an7LlbMW)CB7%>t$KT|yaQL|8 zm02SPZ_eWFJNIlomGN8W(B{2k!b76(;saWs!#$s~bUU2Y`c}-fup{^UmE`ctn4Oy zm$yX#t2K~4^8)iltE1fSC$y>_!0X5I`jNZ}S}lt%aOxWE>C|CS>FmIi2H=MVg z7S3DwoDM}@iedkf=2C3F=2C2ybLQBRT#9`=|6|Ri*vtpI6f5k+a3A*R|APB4_VScd znMc`-gL$Xv`V3Y!lf8W%u1ar<{a8)$m5yCQ*5yE#h2xt&D;5Uw|PNW zb8-KOruFKcZOWbwV*fqbmaVqjc`1{>23OoI@L{Y$4wgLEp7itfLyjyyqmHFR-(U9! z`AuL|b#G3t5LVU8nmkrIlqt4SA1~YO5RPa*lkFbW6Ad4y^(Y?#y!MEG9+?Jf5sHJf4sP@Obi?^mr2UQeQWZCkYMV9;X~{Cq16b7$>|;Nla_Bss0z+HiDKIo8>Ozp; zqUmX_I%#xQCR>|n-o?JP^BTwSarp?=>KII4O;#(C)#MR8Jd)SsH659A?b#c1va&YS zsatnIox1e~~jQuBcOds%41gj+upK-@3}m1l)``hVfQu)xhc48lyNC-WxMev?W;azIkyu}w&2DN%Vy3h0VUpa#R;LKTlf}O`# zrSGPjzgcZ(=Xk?()-dNp9aj{$TKK;Fp31GocGjP*Qx+}JXQ~gyOcihSi{^gk*;l7n z7+h}NN$Zwr%UL$m?mQIAg2X%(1RuARS*6-1xxGv5Bsop}`-^!?9ADu7Dww7^g{84( zJkK(WpV>Z9ac+xGMx#@yZ!~ZE-0N*Zy6wj_<-{Jw?@qI@G`cO9ZOAZhV~KX&1z!O3 z#h2_V-@sQ~*;CD~^MII+;|9Hr?}0HNOjo6tJ#g11Op8C9Qk*@Ohw@Rudz9<1s~j^2v!~R{|JqlEN$S z+EJlRV}2a8WhBNo?!Cq_!D5Dbn(el4-MHcS(QUCY9bW4>bB3eo>Svc9!wfZ=|7Jgu zvgxaZj_ZT+-gzOQLv;Vh$o9V+cldoEq#*1x`!0>H$z&UH%(uteN3_OLXUusv>Lxw} zAIZ9K%(hrFRt|X|D|wI{33hD-nhrk)29=6 zolW0gKdf(b|5jpQAQfb@RFKVoNYr1PncOB7q*p3E zbC$iIY5o<0C>5kefr5lVK|0}qc3*x2sUT5B6eOJY&=ur@rXZ1;g3QzvBro0k^l0NFuuE5vM5!Q&Ph3G}3I*ApW@e=yt|3Brpdp(JHDvSOtRXWCHDrU- z5N3MfD$=+%iwQp)Ghyij*G%@3|JEDHhdLfQdc*c|T>Lq^tx=rwaC>H+>acwjSNo9F z=7`I)=KUvm|HS~-jqiPpl@HjK_|?wL?Qb|8YmOox`x)DhO2#%D0)s5zc(!?N^zFnfBUqvg@l@C5(q?nBOi z{znvN&rZ$iMWtN3aws|L(l$7+Oh8_jWKQQh&b}Cmzn@MFZNQ%n@SE#A$C@Uy9v9(w z5g*g7=$dnmpTv6S?PUJ;dCTrCznniy zC7nw0XLB-bW6m(BL?z3rZpwHb-id`S zXP=t9voc}u_}=oDy761^db=j;EDBgPK1KXsJ%d*`&$3Ul*fh#U-!y+RRJ_vp@t;2? zG20UHN@oe1Enn&QT0YA(Ug>PXE1h#zXTMK}Msu5doin2bUgw;%OyF@!{r989>zr8e zI%nGSbFAFX6T4XXvv3KmlEHDryoq(UpM-r}lhc@m2kzedg)?X}{+AXzwNI^%zb21z zuvp82oeKZJ^5HUP{71`5u}>`vcPad1OY(~SJMIMjv>Lx}E`?|E0SkKY$a*2%XSgG> zYm#NoJ99?kr_E?Ai8`|dDeUkey5Tqr!|RBCY=NDXS)0x5tU_!yUM7@{t&54mzP2ta z8d0+iOvr( z1ABA4=!aiufM~>y%-#NM?%p29u}*m&%(7k2Ogen>WX#^iBi;qG@xcA>g>%1le3B{_ zGD?rVOyO~saeT~%DR`=P#xL3M+uC9M`VJc2yK8KM(=o6&syVmDT*K;dgzypS2_L+C za_}KqDJ){wjYFWsx)bn2i68R@U)U_q(AOb|{e&P2_*6p2 z=k$R71AqhcqXC|DFJL$QVIOO8#=IMxJ7r;gToskAd>2>t{mKHY3*i?%2p*wl&iLna z&~fs;^}A`jto}Q^Tt2LNceY?Zis*T;YN#loN+WA?n)FJQ=^cVdBd zcUP1B?6f-y*YRQv0&v+4g%e&;z|R{3g+c^Q6h+{=j=<#yAOQI|bYmBbNTDlJSu?oS zttV_z;2u0mlwwauoopETa!iY`T`#At{C>e#UkA;zw2vF`>MMc6N5CkK?W8z=8vmPP zBO7b)@%HMU6PB;p@Z0LngNM914z72FXcPf0tke?$-I=%YFn=5#VIRwWI(ZY_nJfoR zkKjxe|FhC;-(2Yycolvj{?l%Od27S=6}kmx5l_(e_4RQ2iV>D*_e!vOBY3N#RtY42 zf>ufJ&%oZ7`jooE?_5~pl(QK!B`pS>w?*AvhWT(>9L#xW7-Cq zp0oChC#fD_oriYJcp}R29)370SD+phA38_QD6ShA<=-|l%{bI&0&6MeCVx3M;oAiD zAjOZS9JVQ#o#55{0rS&wKYrY=8k=>2Uc*oD*BD+JYCpkGU*P&^0qe5B!iRolP4&$v zlln>7vKK#_SGJsMTLsr?J0XN3`Vt3eNa)Cc?~Wp+h!1jzs>%{NB6h6E)9O)_nQ(0) zzLwjB);=Tab|hbtWn>LWB)^iwExakwqO4BLRc~hRbtl431X>M;GX`W{O(!9>R$DHm{-lwV0OFn&kM*956C&A~S zPmW?zN+~sz)=D2`xH3waq)b!RE8CSbO1g5}(!kQ%(#JB}l4#j!IcK>H+{4tn#7sU^ zFOqEHNA8oSfprDsRaP@mYFBRocYpOJvEizMdKLLMP~WcRq2*T6Q`Y(rWuopKwDnhS zqfQR$gsEAiCF(`sj*@lieWD=GMY^i_q&Mz9RIx7#_Y~*bplvxdg;bH{F47Hcd&+ue zQ12LO+yDedJIkJyphQ956|xHSU#I30{45OIDf(XrEVQd}>NNVkx<~fP(Q7WCx&ZZ( zfF#>rC#xi8IT$;Ytx5rl4Wtq3g#)K<>OJ&+1U+S=&0X|<7d?pHaVPQS80Qi-9rpr; ziCA%WL1MKQBV32k3&^(s=RPp31n65xd0-LZp#NOja`1Uhs=+7-QYQ-24B4D?Ax z&wByw3~=-zYfxvc>^BP#pCY-qzJ-X9(z@zyV0IA{td6nE7U;{fMQQgI#De~E(BBR8 zcN6_x1g5v;_{#uBwwGQrz4eNbg<&i{qy;z^rfvqeQ^4&_fZrUrwNTF@cMoz;A~%t= z!Wcx|JIKvLZZ2|fp>7NH9CCg^PAaILkK7+o_dX~ath%U`_|n%&SyEcufmXSwE95E% zb#I{VHPp=q#vEg~C*kMlHL_5e4URNIesh$!08Al&EfFIS1wM+7&vE3QM(!a%xg&Fh zd}kv!8@V}ToVpF#-3V0DM)ey?4g-TLDBT1|nG%E2sKNBUuA{wxdR9tO1ZuaE+{p)= zV2q#<+JphJ(2#I74RF%+QQVgOr=fHgN>8Cg&@Nw&&4t`^$Q5HdEpr6zb|NPkIZ0BB zGDtPhH5im?1X&LQMqUq@2Lmv!dyd|-?gBn-eYFyT9+(V7K5(|dXR2_?yf_4J( zMYndIkOhzLp;X{`2@uafPV5-11-2m*cH|E1$PL(tnTzshPATfh2|mQZrJDD`5d*P_s8`P|}H%!(oE# zn28M|wt+qsNg2|FR3nW^8&ZWlM`{AbtE3}oNjf9OkZz9#)U4w{S2uSG}X2RPQ49?*BG6>J`ja z|BnQ9mAY14^W>4i%r67v#x1DVARh%m%~rG2L^Tg|zoedn_4&);!7#wvb?REtiFzJ0 zE77=s{%^z5Jb?iD{u=`{>@fm#_z4Adg&Ggq9aN92IXG^Ehk5Ghhr@@h{tH1}u6~bR z_p2w=OdNUYP4s;Rn)@B*-v^6-AFO2>xkFH*b4K!wS2TZb-z{*`hT{t1+>%CN@S`(gVX2H zZwl6rZsE_-`0+Hyt-HT;iS>{S?qdTLi_L$SPl=T9+Yi^Nha-d)UqMjst1fxmH?lDQ zoxmCt0s4Gi-HtV=xXyt-pTHV{U~Ne-Tiw9y$klutchFv(vry-f=SW0LBN)1l6~ZF~ ztR+eevR8o#q7eix#`WKmsyj;V2fWIaJoB*rpwGQR`rsPY4|wN7W3PFKWsJ#4wOWs= zWr9xL;kxHyeIw@q{hVo(X&eA=?*r2;BiDPX9>hqFK|ZoD@@%ZvWx&(L0|Kza46oOe z^A<2+LOKK{D7~lYq<4uoq{v8hI9_E7H1?YR0OTH_2-YVDW6c(Peo(+TL_Hy|()w$( zlrpT1GaI^tRgVUvP(IvYq8yTh`R$&XA&;B#oLAgZ7_Bg7q1U3GoMSaC<-Cm90l7IS zy{+epb&m_QFL4D5u3l9y<0z00qaV*yy^cC*B2PUp&lkj51PxPIjV#0?C0kqds8-+m zS>2&-!IPhWcO0|oHlsG^BQ;2@EMc*-4ET^JL3f7qE`CFKqyS3X0cE64cyFLd6Y5sWC1C6S2}luEB*OngM;rlaiVS>fC_-Yw3h6!?S0^f`7R>vsuOu>gM_(i!O z;McSw0e0dBR?c4fFe;*-^XM@NWBWzjjA!yqNPh?9i{76LP*-p;Pu&Q4$&+IRhd|*A zz&Z!N0$oIpd8o5r;4d(O6-&pj)dVzvW*Ysvr-lT&=M}#OeEExlCUJ$&?b_(jC+0c) zqKx1jo_I>bFNq#p*Lo4T`W5gKRtsnGoKvEGHtH9q-bV%)`ik3AUfkLlb_!BcSi7*i z@T$O)L3@ngeWXTdNvS4{T4|yDKx^)3bDE};z((&0dMqd+v{@gGcgO}Ez1ISF#Ofmt z@f>92cW6t-<2>O;8Z)UX3Km&BrId6ucCE~d(YO7HUjX& zZRR#0X{p;>a2uMTt#m_2Xt++)InkEbgVowXt?E?jI$6kj%TSRPTVopd>~u&+#Ievk`|mSZV?Ok@j& zJUlH93p8p=YeYyqqS#RNQ=UJcWKgc z#VlPCeua1yLMVP!be=C>L+|OPd>$!IVg1=2csx-G7t*jKjNJ3_-u?fRP!hL1(HHjB zkS5O(&pWJFOPUWgjlzuS*}~(F;+?#BM_(3i>HYAoy*%E|J4kg>1N#bUle(lH3C51G z5WJ0l7P}6b;T?Vp5=z3b(;%EgUW%HXaXu=4?Ct&rCSM-BAe7kCcG(S}UK@f?{(;>h!4CXN@$KgkDpi~k{6 z01OwQ?;d0+Ng%Id|JqJ6p8QS@pl&irA+xcY?I@W;Qb|6UNB*EbWIeS|JNcPbqERG? zcA(MZKCtVKvOcsgupL5&)6(=U9DZ~>j;H8UI+K_a25`g_7RY+CPr78&`)pQQk0*~r|OM*^DXyC@N#^6>H?3~c} zCO8*dz`ItYHK_I+s1<26EtZxkmgAmL*8K*&5eLzuxT=70RL~DG4sqDzD5_!<;vk4M z^rH@BjgSUzM5A!HhfVqMkEsAs5f^lf0G0uU=*A9ZTqJB_}D-`nJeh8jvM_r6VJDSRI_+l*L z5IcKA^rI?9UKRZZNgTvE2=IONC~5}E`Zj4Z#97-}CU%z<#z0WbJ=#D+E!IWq9trL& z&|Og~w5onV6mqBCH$bXI?OYTe--2>cuezLp#4MymJNRV8iWsH0SQ%WT7`KpvCIzt$ zFcMHiYXZrvi9=XdKmCkM1ToJ%1-n=@)PYWE2SMsBG%Aw$EHq9;VYMjAe4#xl#r9hZ zt19;S8FPY|ADB$dY z?Gb6Zoc}1Trl$?{G*nMt)YC3{IzUgy>gg;!{ZdcY>*+x~HQ?+0nna(7rlxv2L{I1F z=^8!#Lrcw__4IQ+y{@N!5R*Bd_+xMTM9lS5=p;IszDNH-KftX2KAlGYNoQd8pGBvO zx!)}IZkGZ^exRQN7O4SgOoxHj9Y{1CF4Gt~1bpd0V{wkAZ{ggD4#gR}FwuTH;(jd! z_LY!_F_?cu+$!-ga=rvs>&z=X@@5mW`70a?J#xnqAM>G5%=8f=XlD9WuVpfAB?0sc`XQZ7|3&9eC!I^@(U0iA>Bsa-x|n`Nzotv* z|Dm7IPw9O68UC@bfG(tq=;y>_S_$jnxdM~xFFFGMZg`uHqNC{;`VJjS$I*9TTL+Rs zWH4<{`=R9&=$yBfUa&yz{-lC8m?dBpN$Sz1^c(su{V!ckzoXyNALuH&`mf{>6HN!y zpXo1j3*Ab$(O>CrbUWQacm9<;K%Eb$%do;8MMjg!bOnva|3QAFYyL_epgsqvYw0@r z6J1X?(2aBxO`w};;$O*w&iz5k(p}^|Z*+t#HK*}7`%CNWhnb``*312{b9n%sIL6_5 zV=9fIFVmjlsQ~pTblimV({e2$?!^-UCGR2ndhNl4`tRW&p!iN%SJXGbdT6T%0f|D! z29q+7vG&A|_JgE71-W?_u+bMJTxbH|$UFk+`5ZHefGe>;`N#6!tlx{4zR3L?vMOqc z{=}MH^h4+$==VPE8Rq3-(X%nKq6@bi9&2h(@1?&ENMU$$nhD{ z56wH%704S&TBEFyDVj7fMWAg@5@2eM^fl5Fu!gXf4AM!6SofR$zkF*~Ng=MT`Zckd6LrG)P zJfz|1dn?LbL|jO!n(@qJ+DFQob4hvAV&X8(fsL6<MOq_zq)eiTbf5$`k_H+#*iE zu5KC#vepN_Yud#^Bup7M#38wYb98)J;*M?=jj{LQS(#Ab+%!M_#;F9bi_BXDhGZh<`T!#zrV%mK_%q?)9?pns8QegiZT`~WZ9 zBW+8{A%^I&3euXOZy`U%qK$iuh5U^L48arkD0nh}m?dw7{E7ZGI*d22Wh!VO@Ni4% zZL;6Ulk`KmS;#G9hrU9F3Ythc5;PO|KP-iuOIa%+6*>SpwCQOz(A`eks;cBeTl6XT z(N^b+kX4~C=MejYF3=k(yFzy$zotIOgANHf_L`1GeqX>7at<96a$Yn=UVzM-k20Zy zptpMpn!G0S4nlUXgLYd15BgCog}w@%5qj%2g)Y-K!8ef#z0y;u-{9pVr?3NNp^L%} z2)^s~KAL(!Yg!Cs@u<}nMP03x*eKL8Lj)ktx z!u4{g$BpS?(%kGrI{S2io(u!bVI&N;v7tGURDoVJrZ=IZu_PR^EuyfAy-msB&2mIR z*Z)DhNrHXef<5{GdC#Hm=g8}b;<_PXImBo6>oBDC5v$X~q$h0!o81aJ5)OM8f&PWv zfz2^f)M<+LO-M`7GZ?X@X*=m-ozgk~GuZ41dW6(5)rAZwu)XaO zEu@mE18I)5HqxfB(E_JNh`JOhyEYLiY!-coRH0)Kr<1xe4o3bU;P)Y^Bja?8Nkq|B*t`j(24awGYqT@! W7p-UXVbmL_!xi=L>>?xPxc>`YHjKFd literal 0 HcmV?d00001 diff --git a/docs/_static/fonts/Museo_Slab_500italic.otf b/docs/_static/fonts/Museo_Slab_500italic.otf new file mode 100644 index 0000000000000000000000000000000000000000..a8c055fd45b67ffd692546e95e061b088410e2a1 GIT binary patch literal 66376 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 MHaGM|jBkklA1QS;6#xJL literal 0 HcmV?d00001 diff --git a/docs/_static/fonts/OFLGoudyStMTT-Italic.ttf b/docs/_static/fonts/OFLGoudyStMTT-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..91956cba15845ffe237ecf6ba6a761179c75d0bc GIT binary patch literal 161252 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 QDf7M=UoA3s(+w;BKM9Fe`v3p{ literal 0 HcmV?d00001 diff --git a/docs/_static/fonts/OFLGoudyStMTT.ttf b/docs/_static/fonts/OFLGoudyStMTT.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dc900c2967ce26ddbd76b6ddacc429cb047baf1d GIT binary patch literal 173520 zcmbTf349#oeK-Ehv2*P;v-iELT}dlxS6XRT*Xpt?%d%wIvMkHCgx2m#wkW>(7)Lck`3m!vc$33d55X_}<`(~#1JHhpun#CpHajAWdY_uqd0 z7SBF2&z#TizMg?Fgb)osJW)qRrdO}e{BSE_zgWd+Y{l^M5!*}LZo-_K#D4pV$u;Y0 z#B*OI%s*`|(YLFc0DU4Z9BSILbx;fScRT z62jH*I({rAd4(_@_%Mz)>^-{g@NcVyFA?H;jSzOvzC$2F(4BD5$sQ6zjpuOW7j|W+rBLJ-zG$U_Rx`CJBGgZvy-_0%b3v5 z5AV4CDEBdb1CC#h^HW#tIK1Z%AN#=P2=hn-A;SBP9=Z0|kbUV-33D3v^gn*|nmtG3 z8(w)5*Z1N49fZP$BgD}^=G*4(``>Jm`vpeG|GMhak1h5WAGo-ZpW@D8U!r5?KU~M1 zySS2U;`d&BVE%4?%DmI!QS|H~I>KH}uCVLygvVxM`O`FCQ&S*O@% zaml?_&-{e6F)T)j4R1#O-Ac$2bVGET{+rypd^Z^+sf+WRJYPdLapxG!h1IaA7@ER-7028pN&bU$0`htC4*G|Q zkJU&P`#$D15@$Y&?cd?t4fEe){*~mJ|4o8;|19%!G#>X8%zHG_`=B*4SCDb8gXFn9 z?sJ^@xGc6q*xrKHg#9A+gShu7T6+Em>}wd`jPXyPCD7KBJll?b1!-o#i(}Kc|MS={ zpk;{~Neg1#xL5KADlpf!+r!)#WF=-V&g%5ql z|E{O>Olj)>+Jm+zy-}Js>28#;OlDpnpi%IMNvD)gK&zBj zD80UC|DW%UQyfxy{x5x*belW|IR0tRdw}oFm^1i}(*A$x!Hbk1C{Mm;4?Z<{V<)86E9%4gsk6SwG1UI)MZX-|HIbNc81`qDcsJe$G{yz-dIFHeETpCShr8r?pC z_GPpWqm7~+CFCNc>BWm^RkR1to$)gFGZ0G{~i%%HaP% zdldL`qkqTRCcDwU$3K(*Ap_{Si}x_^CqYhAd2O{Z$aC7d7urh5mnCSu%oiXd|DANw z=aDxcYu*5VVb0`N^VgCeTMuOS0*2rpy2ow<|3F?s9>us?v<5T@cvpZUFSdtCj9-C% zJNmuo2hb0p2amDCfcM{{mvR0YY`=o`Y3!?L>#+?PjrVo2Bj}&PSQQQDu`BUTe~Eq! z*Ks)ZA@m~lr_lz%AJ>tX$sfPQu}|RG9T<0$L9`~clW0R|eGB_b(HGEGqm|IgREAu7 zCVd{BLEq`pbMU^Gw&@(`d*fZ{dztTmF*>Kkar505-uu$~;$4}=_oMg7&i`(4Zj1L= zyngY%^n41l#p8?5_%HCH@S!llGbk(;ucP-f=W+SFF1)8X4p^DH zPn}JBF3!)-<8CSPFjHn$;pz~s{yMIHiG7{@5l1+IQ_QRDQzR8KuP&QcZ(F>2{vYOF zm_I-N{QQ^a8|IxCPhGtG;_Vl&y?D*V$%|_)PFx(jxZ+~hPq+Pa>rXfRbn2&LKOOn$ z(w}C3@}s{$!QNxd2v7h2_fLRS!aqR41jJ=Gp_aAvZ?V7Z;2&*TS8{-$jR-`9MK2SD z*olKUiHo?2N;KjjUg9Hu*y=$NB4H9CQNTM+62Mi8)Q~jEkXlkl>OqGMq!CtM4i;H6 zX(0vDO4>+~lt?@2fE4Z`-K0!NbyAampiQYBB4r^!>~S@L!A4e}gwGr0yDXb-uPxrJO$ zJ_nt55O+OJ4&e7B`6Pa?MI&S%IbrtJ&mnRXHXb9-klV;Eauv`3zYYHmlbe}a$xd=R z`2hI@qcI-l8s=K&2IfZQI_5Zmo+Rf%s~=!aGPg5#&5%=@r;C%Kp0K|VxI zkq?vm$php*@-gypjDM7TntTQv_-kgAnSd=k4q9DJZe-Tr>M??e<#pm6*AtU7`pV<8 zI>{^v=|XO%f7Tqkc{cT$&Ujlw%{r4${jKiEHS27Cd}?NSX11nT=kiyEQu^TJOpQJ` z+pP0>dTC9j=Ej-7i~i+o6z9$SA^Oj=(M*kQ%gyK`$7jt0v$MFLE$`g2saY5DMw&T^ zr>9PC*%H+WZX@Q6T61Xd(vXz*XsL3cS(o#vo9RPd#Qjq`S2vbP>3sc4olMT0+H-10 zif(jAYieerr_8-6YmYuqvEELNsx^3sJ)io%IUPqnRnW!UmYGy)MP_8jfz(WD_fG2; z^gJhhG9H~em0EFXWJl&y>Qu&jTt+8TGx{LT#Qf-E^}#)K2iLgFC-q+l)zm~&7ft~T zxM&RTwtnH=@P0VWozJ8$EId4uni*dgt#Fw8VgUsO2 z5HtR?3X(K`>B;Ny=BZOtGnt)u`^-=j9g`UXYx{_L6kp~ucXLVl=&zK(~Hs&+Tx7g>|AG7}iNwNZe z(4&wHMesa421ukX$O{6#HvjPI4V=K|ZS}&0utB(A_>Ncwv-lu(U1RQ}MhkT*WhtrYP$aiB0 z;#2X*5_^-i$$wAXUo(+*r60-ssP?;cr|XOLkJNuR+nN1n_J!;#jjqOLn<7nro14i; zno}*VmPcDEg;!cPwLMn+Xz|CT&$l1wh;=;KxvKM>u1|JZA6 zt3JBw;ZJ-zD1Rj;o8&cxdj@2rv5_|~M>H6v7^uYAW^{3WtEV%cEi&f zUfl5Nh97PC#m1k{9-X~u_T=nGXCIzDJNxwPi?grJ{%H0Wvu|(u$)>k9{cbbAS=}7l z+_2^TtzZBf-*sx&$9GrvT)*eeJ@@bV z^q$A|RQH_Q^U9vr_q?&^?LF`8mG=7f_3d};5ACnr-@3nV|LFed{oD5++JF82JNMte z|I_;)+h5&(ZvQL$U*G@6mES$^`2$}$@XUdi4t)Q>j}QFvz;6z+2VDmvha!g~hwBd) z4-Xt(d3eL&orkYFeB{>!oAvE#>{J@)dk*N*+X;E7jHym~!r{@r-}BiBE2!|!hV z%}wOyTW|5)TD-00_J{6x{R8*jEu8$_sgK{Q-?#U}kq`gk{_Xew+XKIQ@a>O0^wDQO zHt?|*K3@IA@I#?L+wfH#m`!jES_V}M)@$ls5YCm`G^DlqlcaN-k zg$KQJVcc=N& z>gm|&hSTk*2T!j$J#%{Z>7%D_I(_o=M^8U|`t0eaPrrEj)zd#Z{fpE8eukWJoC%$& zJ=1!o@670#=`-8U96EFTnLE$if9BI?9y?P#bMDM5XI?+^#+kRzymMAM>pPn|n?Kuq zcKGb%*)3=HpFMW=*0cAXedz2XXZ5qso_+c3YiECQ_N}wO`!fG!^~PNTK*$lO<|k38|vlRtjylTV-g+GoG^)-zW<^VZjoJzM+iOW)}E#?#MDKKJ5t z-+k`&=YICwThIOGdGfsSyzlwM^9|1zpYMBqNUw{7g^Y@|5^g`-|h8J32=zigv7he13$T#&D11}D}IPv0!7q576?~7M`>!okK z@vYyz6nUxVrTs5G_!5nSawIr^j@iS$gsmD_PG2IG28QISFxR^HTm`YlTs0|@Nj_KY z@({*}P9!Nl$LRe9om{B872?4$ULv)8&PYpdRvija_?+%m4Ih)!gT*SR5C;Z0wOTMw z)(Zu?6O%{)!?A)fz~D+=^XNiZcWXvnPr0o7Jack=LsxCEtUI*1WK(kqn?|gFvm#~E z+7{GmG{#pdc9x0(zfbV{0;OU{dwoay0E;e@7QDVdFu@cDm@adqz_u`%w2KjiATx3C z=Q304i4Jbj+>$Ndo}cV&7z`vhIqYz_dCq5dDT*kmyx>&%+Cffu=Rep-5djITR$A+cpt9f-EMZe-sRyWubiGgVVC#a zkcg}AC-85&nKR7o?6*|`aalU=-udU4AF}nZcuyequJ0}w%cn~v!zR9I4D2r!E4yt< zZfUY*vjZ1Cq4% zQpLG+G79Jgt^Hu3nzpuTigSC@K^&2+eW{?!rRrXDry}j8&yYNF&LC{Ds7tE8BXvR3 zx0m#wsypbWy`(2qV+|;HvREBAFPobhUnAx8wIzLAH5%~}&DO13igT^ajW|*$88_g9 z&d4)M_WyP@@#hp?-`3*N!{>}y`|o)@b?%uZ+kfk&2lPpdXU`cc>3GXIeVaNbZwq^K z&n(&T+b~YB&na}5pR?0$E=Yg%S#_>vHieCq>Re%E3q5=9Z~M%%d+6@mDE;O2Np)`R zWESV)uG_7b~uBj)c>`b(d5oIa_7x1iQtMsR7Kas^|w z!yVA+hsyflvVK)rKT_6@mMeHT9qlQT!Ei8~?HOG;d+@ld*i$tvg~_$swjVlt)sdqu z|F?h4plk6Of)GQ|!m8FEY-QiJYwcHys7G^Gjl|9H>u!-*o~ z42~q2g+1_CCXIWUccJ`7Ic{OMi=Npvz?;WJp_f;tI93tGZL+BDm0c3Y*fd{6*eNj) zmiMY*+j5V4EysGqZGvFacFL?xlqJm@6oIqc+LOeV!Ey zHZjr?_A9vlHmVB-=MONyU@yW4-cR1g*hyt0q?W$CRJDubW(ezp#mYvz0^Zp;Dd#Ho zjo2i19<16?(D#;%2JuZszp0@6FI2Zkq=*Z)sKySkM5I{lv6!W+sQ0M)4PddVYK^D` z!@0gxs@`Dk8sk?&2&gyEho}U1-l10O%_Eii9dxk11%o}RaWxol(0qt-Gi2r#zveM` z3D{P(r)0Y~=$YEMmkP}t9z9gnZ_te7Bo6j?^wF|juT@qYJV8n0YEQMXt)qW{o;j%L ztz}|#*fq}+{+8CkD^AeS22Br^sk|LvEOCp@#BsKTY47YBU`(w;g>H-id6W`72q=w% znY5*spoJiySxOwD5NCbD0?A|`uj{?O;KJ=pl~pPZa2@R}oO$gaX9xTEZR$`=;c9!w zcPxs%XUf#5^rn@W2@easur=JrFdjs~VD_NPbN7sBrv;`W| zk#MFy2(sBOMC+W*O1#NE__?yn?p=A`Zkdr>f@%v&io@q%WFBhM&AHp`b^YGyEk0FY z!`ml|ldW-R2hPR`-X&4D-?QBAZH_vb?@vdy{8dek{y)6#)i+?PwawcOIg$XO3~);rQ>2K5Vjn2)Xz%J= z!cf6Ot&vQ+g-QE^)PgaOc2P41;)EJ7pf1a{!Bv-!_g*`lYRiYcEp>&U&nqdibn(Xz zL~H`@@W(~|iya4>c&4r#wFlfR!}yY&Gnw(xRIIfp;_qHU=C7LR?7V8ccVI;-);t); z5Hqv(p-fuy)%iTo_>%MDnx8kYtSUKjvhdHVAMD}yK)_~$Y!k|(&67*lbPe3Ox}p8* ziyvBl|8UpF&#fKl8az4PP`++K_y3an3VRN*tviv4sqCRP&ry*iU`ftm+gK~US#eR5 zvc@tgx8?S@U{Y=qsUcMDUuy34o2X~>519Bq2%H{N4LfjIE4^8%rQ(Owh9LxMRigkZ z7&T4L%4mU7%IFd~H@9lE0L6byG3o1Ap}NZ4GVY?c0CQKwTW_ZbJEm1Ty7nBsg`%p88m>ez95#ZutCu>2sspkLEF%6g6GNzv|))xQ6B zI_A<0)l2c;MFj&;+ydc1kw~pnzmLiRkU$FyErih49f7Hm9Qv+Cc{V}W=|V!3#4{m`-?7i7XICGM!r)wadLYx>&9uh$x)b6cTTd-r5kjTPc?fzR%>o}}d<|jrxaonoEbZVTlrUTpY`O%KgN5vEAK*-I!ak-pG6g+1 z*3`GOAo&}6dKw$bJq<3w-nOJC%LHa0J-VUMFEoto{KAge&+Hk`3$oI><=AKNOl7`_ z{NeIv3Kyz=>zRU|K2w02T6ks<&!qC(L?(SGMVRs@PqSX(oY1iRPad|$d<#0yUM9j^ zhuq;(#J%;Vg1)50=tBj)>w@koR*Ru}DLgHcbt5nU7>b0m22O zWp3gEDu@7@`rbo_yiR$7w{eOZa`MVr!QnrA*yoZbAolIyC}-o>3QjL`i?fyEiw-%` z;Z?d^PRS9HTNF=cSaB42TdP9}W4uv}J3~^tBiIoE+AyEw{4bfenP(8UUrj1$NP>!k zg%oJw(++1&_mqq#@l6;BjNVev>n`YGanZnc7c0p+%Gk*u434@a-K?YV2Irez&;SE7 ztDk{(hQN(8i{_aCYfZo|of(eSW4DD#GLn2cU=ux(s2P&T2=22Eo1&<)?0#Gpnb#!I z=G8@!VHEibQJ7yYS+sxEF4&x3aR~6-FptjpP2@%7#1hCq=vtwwK(14NE?Lk+7YrBV zQ^-Y0B7|4OuNNYnv5zYyi1g#W>xGgQa#ZF=zBGrq5U^N8sn@amk67vUfX^cU{XoEB8E z>oI@5=C9BE_0wM)oKtiaT=TA<0PDPhqtqMlm36JGW5Wx#K<2$R0mDB3B`<&(bkIT3 z91R37jbnqF{1nBYQPb50HeEK6GF0AM-!T=J0}Sxx&bVV;;ef0@V2`VIHEvIXa}{3V z6`Smn1ruj)lb4W12_Q>U@luUsdEu9DGkUO~GZ!eZ;GZvaM#w~6C-t<8!2}C#rfxPU zD%+WaL#)xZ3 z3u??C?JYnr*xp58qf$92GSuGid6_m`eJs<8ww+#

dhU58_@v>7L%k7Xtlw`Uei%AYZ7?vCWlk1sxvoOx<-%CzaT7Je)_ zW7pzS$r+yt<;?ix!nuFGaPFVw7d3Ez^A-nM63Y{M)MZ_!HgCNLuT}HwpBt6%mFTrb zHqUxLdd(V(UT!ygp~%=Cp6hYFt5$ayoqG=*dA!KSMLPEDJg?F5SOwrnH@1d%yz{7y zdW`7Vn~HqXJUQV)vQW`oO`9n!rEy!rCl+TFU$b!a^-~M3FTM67H(ryPo4PTg)G z;pV$$&Y7_!H!*GYv^;$h_jgmWR1xPEWX;kmjxw`?ISEO#%a;_aESbCNqqlx^vtHbk zki4v?QXN+nO6HY~y|lTD_=~!%3GzT zBn|)f>kEgia&H)S(4raXd7ZD8m*m}ceOhr&UdHyjGZ$Z-_5$UZe>n>=BAehu5aAFV&+Zve)Q8F|1oowX6a^M^O41W{0H-I^ju|v zzs;R+o5uEX)Dj+lnh&km8hJv(r}o1*TjTp4Hf)UXFC zvUSE^4!DxH@e#X;p8fb7!-R&$=NKkVd`M;EFYVw8dr~rx*4?v7)jw`Z=BUK!8+c=y z(@e9&YmSDg+^8RW(s>D=oRgK3o8B-xn4f*MCY6H;e~^@{1&Ph?zMh+*cj+vB_w}62 z$w^D61k-~vQgYLB3a>o#y9vFD6?6Q|#sBS@i-T7hvj6>=$3G)Ip|1bSyvn!>$Detk z9{u2#8Vf)4%Lln*?0!o%H3}%{!y@g+o<= z`8pcw?|84uSo>uBmA^R-ZxihkRbigEEKMv|G-ts8ugkw>(X=IV@`AG$ z7Y65Ls@b+OcakOnA4;8`l2w?i@3UvkOi3Kf&R@Rfy?Uf4;5W5Fes9q@ePch@ygP23yP`Pwk&Sa!&du4Jl3kcxJU=CSTDD%Lotp5= zmOs@yrf+Dh5wBfZK09N>)}`fhGO|karhD~h1L{wHS*z+kdu3JK*m}CL;mj*vG4L40 zmG6xB*l(Hk;F9Oqv@S}|vs`EVRmvs$>na^jyenkBE3Ww;SbjPl|0YV)c;&|luiQ{) zRCgR}efp@>_f~mY?NNfZ%;{4z(+lPo7A`2v z%*daf*_}8^9}LVWnwIs4_b$I_QBHP2QTi=O$r-^pAKkfY?HzR+W=&i7$9Jr2{N%RT zQ}WU?X6CHj@~785a%%q8XvK}yTg$Uk^3pTa3-=n++Jx$aGBwlYOti}FM?HR$)+4wL zJWQ}DlZB9zg%(^!(FQ~C<*Bk2-zNFY)5V+}zA|^)C z$D`1=nI=N&(Zhp$19QXxBD(nDay>uPh7uq&<}mfA19UM=j5mT zYie40#%~i}_B&r^zI(YaI7tIE6ES9WAUf6p8(XXGl?85Kx&>DHe!pWp=1fG?|I=G* ziAu$~y@#~qQ~6qn$-`c6sMeZ}+)}gBrj5nV-w#ciy!7g4-5*a9bTFk%(($kVOma5^TOkGx(HYqtB%XRez#?d7Gz_;SsJtYTfLViNu}cboeKY_R*}+C3n*zu!lEe!Yku_n^Dn&6)YLp# z@A=>L-lky{|%xHj)$T}~oRyoVubNGp zG$Z|?)a=wrsi|$*iIYb(@Rl0MO_-8!E;lXhk)U2-a_0X&==R5HS^n`uIf*G*$&<1a z_6nvE%i)%BExQ&vsWSFYVy92@&l?^JSQNrF!3w7z)#{uy8M!7C@Ra^Zs~{T1d}34T%j zm9tac|B*(J^=Ef^7mY1>xN-?=nUu&JH^aIAl`|j6$a<}Q8p|0CCm+9`@&C=`$~Su| z+{h~D84~W>zV{QWSASyf_VIsztZ3f!g;(e2l`brrU$m^S@T&>QdbRbWNm?kQH@Rjg zQm3coXlPs8sP&H4WPQ9*Zz)aB$W~!bOG%!RP@k^%n5G0%(y~%Aw0lDDalR!nVM_XB z?Y7m&26cUkUQU@aIWHw$tDYw1O)g2y(ht%yQd4tM^V8C`StB{&+T_GZNt1HZ($llj z(z4StQ?=MUaq_jgUQ2wYBql0CP1f5jlXaAoqttSBVTwMpmz1KjS|^o}Jvl2qCoOSO z;&VLN9zWq8p75`V=M*h0nLmB{{E~%w73)=3ElNslNli*fo#NNCXQTuZ#{OG5Pt!*6 zlqu;6zt+31Gm?@r^)~Oc#6S7WWUbs*Hz+A7Z%SH1T1m#*^hs0ns&fBV!Y4{JqL4q? zznqenlrsNgNm}leG&vzTHJqB1m^;OPn4FiGl=jD2+7>-MBV$HRtKLqcAeDGmLVDsE z4Hf%4jao}#b$fi69?Er|Ihs6AM$gIq(Uf3z;$7)Eskzf~a&rs$?HZZ#TWW^p&;l5n z;TRuZ_Be_o{wn!>Y$8C-fThVGD)6?{E#?l39>d3l&-(PdWHyPhqs8l`c?vWfXjAL|UqCM!ny|jLr7}Oj7 z>85CAP?@+gUem1^!pupTsaK{5v)=o*>iAOqGw+X!79=M%6inA#VMoSny(jp+Pcw2e zmWRfKugh!G)tUIK5L`E^`VJGzbeNgMhQutq)gBGRpyNM-q9RoR=P%w zmM8-&nO7_*yfUx&_3?3|E8`@uYUp*nSBNos?#EZf;bx@YijzdU`UX`eS4NTaerdIk zrt6yNTr<`(p7_S!c&~J#9aik7cX421++@5>NlQDZG`x;^Y;}fqzN+oWT!ZT(>L7_q zqbTYp-ss5(w_$i4pQ7EAq~9M%Nw|K|;`hf-ZYwWIoss*Atd#U?Gm5fO=jNp3OiG`Y zwpk|@{oc?@;_jQyH%*MG%$j%Ij0N-NPMVfcsBe}`o|2ZIK4V_-r1$zhG}hwp|Ex{$ z_rYdLQICv`H7$@`Jjyh-4*W^Em%f%P=E()U7fDa+LDGpYvW?eO6E+*~bWWTYe{0Ny z5kE9d{-MtXO^g>@8JcoOZu~3oV{O4Jt9Pclu#SHl#5Kc}_rpy2Ot3h|9}k*SS~hLw z{EYmWQ}t2F;=WllRn9ZB_lcM*(*Q3 zW%;@}X_~H5nbVufv}VWa?B)j=WewTM>*N>67Gs)wQWd&w<@NG<>4c6v+Ug#<|2?tZ zZlX^0lw3+n6vMViPH`w*6X~hk{j#boGl=H@V<~ggTQL`_bRx*9w zJ%2E3^~MGBv^Z_nH|Je7tuQ$;BP%m$>9WN0S(DrUsP2ZlS5G_c6=8o>c2h#adzTXu zHY>HI@pl5J5}(lwQbAy|2l(*0n3U)Lu#;SeB z&HcUZrL&6W=pD$#1@C{CV0OW(@y`+@-tW&6ymze(@0uflZ{O|LnAEgD*;xNj-_Lr# zef^;qR*g5f3Af{48=e@DndW8*UuW2#KJyw)LQa}evTETpe_eF`+-t9zKC3W&T5A5) zWeGoKeVo1@n)s2x&ysSL_SJzZ#RvJ=4b)OuV{Gq_-|%2R&y%0sbC-2oi+G)(*VFsr zh5E+}F~|C|>g4N~AzS@>rfZwYC8}nwDNW*4;))5%Zvp2@lRt3k4-@>xXulRDDLJS? z{*+0Rr?hb{L0ds|GH3i`;zu<%kT_@A%4M^>AvAI7h8vda^~k?}O17Q&-@b&jgqIS} zCw@PvC}~I1-z2@7JT192xib0Bl3$oqH0i*kHztQB|MQf}Df?1ZrSzw~ntDy@CsJQc z`(FCB>3^p^DNPxd)Gg}Dd_8Ms)}Lg3Cp#tkOt2`}75siqC^tFxQ0|xW=I2H8^YcHI z|K+JgQ$Id6I`#8YUz!$})?W}T2o-#%a982?rax3vRCI08$BW*YQ9R@P%#@i8GrvEp za#r{3X|s>a{_&h^=6tnyZSjM}Z_h2B+c5WMC2b{tJMWr#7v|qOzh(aY^S{1e+k)>d zcy+Ww(Nf_ zduZ8(WnWnK;;y;ul?S2k6r&K*Z=+ct?OU7q3DL{8=kmv@r|Fp@%5W7 z-SpB;Kicro4S%-b)P^tJyz1uun}58qdgI@0nzrdXo2xfpx@G4rkA9^5BcmVr)vZmp zzIxmBw>|OEtdE}m=r?aKy1oC7j5}`9|7*8gwe`NOk8b_JomqF@dgq}#U)r^HAY)^#!h34`aWPFpgeifH_|L^)e4m&T|F)PL{}(YY z{-0ug{9SQs{G?bAe_1Swe^Z>zZ|B5EbX*)iD3-*(A}-XM0#me-=hI?o{55d}T&*@^ ziu#E`u^g`D4%ewSloGfxuF5sAA^utM=J;QW8{>WArua+Z=J*NmcK&)tykEy#;)CMW z_$l$u_ygj$_yzH<_&ITV{B`l}_(gF?+%N5^fR*v5bzBv91-CQquhD!g{(^XKyjQH| zDQaLXtb-v~4;%Eg&XhnSPuddyt&YR-H^fgVM5F}%LM^qFKx_QJ#N9k~8;rmxjKOyJ zm)gUX68H@4i2qv0o$*{RlZy6I(Ozm`UHmPb zxmHh?s;`LHus#ND+ZHWIsycuqUw+5m*b31pt18yO$JK;8!f>deD_q?0q9nyTN zG-g(+G^OhOe?f64_y1V@c^%)wQ&f|;8dwYKUf^$4fLyAqy`4K z^I-hDIv$FDUwnjIJr@6#jvwc@7x3~h9D$?oDXjVrQhsXS3sOaD;Av8MhSZ;hUm*`K z#($!}epP!1Ql%XEHz8SfNDHK>q@)Edz+pH7N6my}F+Gr`@|7+{eMOuqd!|cQUl*6e zKO>f^1(hCH4cEYR@@cyC^O|@w+z22&jlkR!$ z@CEYoyq+sV`Tx0?rZ=)@=qY?W3`gLosi*k4JQmb=U#7~!%i_ZLFU3;bGgD>Z4RLk+ zVeuN}KQmCKbTb3xT)8&>td6gXcZeJKtDh)SaoF4>%V%m=aH+V3Gk3!6+~IE7Ia87L zTVjRY4WFqP>pM4c=iQ{<1|u*EW6-+I4E!Z2eg<~HPS~Y-CsQ_YZmrl%#W(X9JPuF5 zZrB5@%uK~G^AvfrCNl$P;91xo|Gdr&z(Mjb#Ptu8;?q3uGw@k>2|fp35VPcqm&IZ| zZt+g%SL0_Xe?W?@fDr7#j2Bwl%xrkBHV-HX6%DW7%jdTXm@OV2x!f`kB^Pw(3gL z8p}pw*~GnUG?pE(#I%MMs$*#T=TJ7A4v2duGd)r0>c z`%ad%-C`;h)6^pkYEFBnm<@yRn2vK)R|eH)`+vnem@f?k6~X>SoTgYERLkwVqTZP- zPUlP!_n)EKJQ$d%8Y-wat3NHy)(U~3-ahTri{+`HR@(hmEaA*TwL^l^`3135(IzNg z|4Lk~e}bx06+LO)1*P^kbi7tN3rg+2@>=;WsQTAuuGiB91MA~|F5bwUH>jNuloCEK zZdAJ^C?)s~o5|Zp$iuDV|8~{m!N46n^%m(isCM9s;+<+k2GtIu{s#|G#+W^ z4xJj>3aT||i~W^aWm5<-aN(R+}v-Jv*OA$^S9V zALsZ!^?HM<oaVJ%Y%2A+s- z7e_cV3NLcz?@0Ygj-Ns^pGOH_Am?8qm8Z$cGw@kO*I?jzl=c;#=tZt^Obe>Dpwgk% zLa_!%Ql!-!>HKAJwQ`lC2=;Ta9IoN~T3IGXaqPR|_3lNX1R6F~(!*B$SnyQ_@ zr6GkB)xX-yp_q`XH2p2O3!E8-BXHEz^$)v0q0*YCE7c#p8vvhv5huHFfxE~&XEJM>zp5sS!JY5#}soKT%a*>XIBHGJEc)3Wv z@UgwDZ|{mTP{Isp@ohv5huHKmFI)ha0}FRoiAi>`_0C|5rhS4(Mg z^en#=*KmHVV&fb=%PO%_@pF!B;@=L#5jbkfCjX-HniB68)1;_k>G^pvOW!weomnIn zs?IG|{q(!hUi!00&8Ni0dCBt%phdvG~90 zo{z%|Sa=wYz)|=V&-F#D@icq}J_|3w=iu}5W3gH_w%b?v)jyf?V7FF*rRZ7a%7gES znaasrwQ$U0*> zhG0ExP|Y=0wYKlzQJuM}sm%zC!Wis;ov;hqM{`wgI&a;u2lm1~*w2*%@Em*?o`>!W z&y~(?hhg{x78v1p6kg=alcwzUre+aRRGPHZS-&k&Z)TF1rSYN?wI6+~R-ve`ONet6 zD@s%fE{pCJme77Hp{-t`KFe=(=0@(b0p1KZ%Bm$&`>Wy>QgoZVMAkO%R-2?mHuuWK z3PpetmDab!D)lT%)UtY4yhl;1M9O!%yOr}2wbIQ9jKUafhkHnOFWd+BLyusT1P;PO z@Gv|=4v)fP@Ho7mzdisTgeS;I<09!b|Wu_yTmPDN!t) zthIS!SNRY4*W0Tyqu`Vb;NwN_D$Cj^VNGb z@8_Ba;DgZp+4=Nm=hL5^Pk(kk{n`2I&pKD9;TiSs=Bqzz_LH{(=$`ESz(d^4`kycT z+YXPz3s`0tj=)hfAzAczznK}|E82Psq+TBf)mB^}8@?gx`$uB2+SLoB=hNbP^>!D? zw*Kn|mBa~_&vFzVgU8|hT=M{Y5T4+CH|&AEun(S8G*}?d+773oM`#zwvt~bb7=S}ue~#Qf z#GTJ`{0LUEmlxpW1?mOZkM{Bc_0jA>`+7mZzFrWx$eAbMQ>pHJNdcgu6BbnYuR zX=GrjbpE>NmgiC_{72&59Pdz@bEy>mvRI|3SSnS&EjIF7w>+1s{x#k5T&htr(=E@X z8YMHW&!vhvruDg0BMheXsjt~W>vO3_7@W5w-1#Ux29HDQb7{c(T&ht8^91+rhCQ$s z_Q6wJa~ht3XJJ22F#z3CU8*rO)5=_`83gk&?D;snfSrfo2polOsV>#5fvxupd=_4U z&%qZ==`%^IKvLpuVwz&eGI=c~W@$usnY@-F=I9xhX?^YY#1h$mnc7r86iYR}x=bGQ z@hVwi%L~~O~;~Am0#z_5vf!o+h!MeaNnd< zJl6=vqwpeUo-}2j%X-U3n#O{b%O)*img?)}vW$;| zQt5Kl+CLSG)xumZE8Qoq(Wu~ZS>u=DI_Y+~qVWx)`x?us$Cpe0{?$gf1>UI=w4AzN zxwQSVj{ijU)N)zRcdmi8unvY`J#2_K>6#Xf!>|=bU=+q+2keAh{hmec!KuF)YMyLMi#=;xdtg~#A==-$V2ML*NMkL8MfzOoy7{&cxoTxK6UiDk}k z0%{ks`+aTtc7(j1nZ$Syh2{^eLM!f zLK-$BFbZR^19rkL(sFrUp(k~^=Q*}YSD?}rYH2vnR_O|jjF}fX^Q4JNS4x>b(UMK~ zc2}yL{#Nwp!Ai>MO2uKHU&DEq)0I--+u}yqcBNvk=|0g)6u43`_SZUY(ColUda^53 z68+aU7=ck3gYD3zZ>1FCyB&qc;Bj~YcEcXn3;SR{DOv+7RdSuy5a(TTSIXmly2r&; zs*Qr8+YhT$vR)HCpSVhO#1F*^d4H9j!dF&t+@SKfN^L5iAAp|AS*2E-IRZzaX9HI$ zW}2Q2T&4Lb)3brAG?F8#uJqhbipCyR6D_sMM{7}5Q&+B*x_lhee9CIom|qZQXjE;r z=9|7E&XHnQOMCwymMBWERvr3Xaf$4_T3-8^xI+40t>^NY8@2LhwIaqj@n()UYOZ#* zp7$kjGiPp5Ex9`I5&3#`;8u7$*WVF8uQOXzQ>@l((FyTRxQ$=kr5W4Rs$st^-p!dE z{Hh}Ukj_-{tE%|_(D6>LyoaaQ#nV-j{~A~e>tG1h!-n`@>bH$NV+&`(uodp+N!wrq zMqv!L!w#$6cnBWmDUM*Jqwp9!4)0Ujd$s0(Y^(bYvnNTrCZ2B?RTDOzQoHj$BGQ}C+e-l@3j{l>MKce_tCdK|-yj^juO!J%O z7HOtTiuE1t)cj+aT7&-~-ldXKCdE1}&u^Ad-pf?peFsPBGL`q&#hu*e9`e77zgn?n zszXgHwoEM$(~2!q3&iwVlrkySPiMuJDTbR?Y?-2;bK3?ZiUVb8hnO+g&Uq`gOzjYJ z4>{Zm_rd+pE7{6atD1-4VXSln`y7SG;Bj~#clNAhnG|b203YPHp0zAf4Quv5&svtL zhBZ%W%&JU^by}z48F&`>`dbQCQkik7K{ z`i71jOUu+3HZOAKN%$1M{k-CNncAh7#b@BN@Dh9uzF-n#y=pICGwYekL%H<%Ju#c( zpmJEwm`SJS<0_<qvKLNSGn~0J8_+KQZAMLy=aw|OQpX5 z&2S@UHj~!v@D9#w;jdfOBP*9Czb0-Y-Mdu#luM026nBsZuVX2f8hxfpS}Knl3Wk+s)IOTQHz<<>|=uZdpuu}1p& zv3R3$xJH_JU34FIjUwAmM7KcJD0cm)xRu}Dsg}$d`mk%HkpIxJSMsb;y!wV%r8&Db zQpFo$L;Qb=jy!9aFIXebIz`VHtdVC;&ljvwf5+TI9`?e0&?_R=$eZRtcnBUQpGU~y zQFsg{+iVr>xYUT4M5*M ze7Gpy$lbh3XRUmFLENa3jkWUiE8=F2Y^+r+_Dk_r&fKn6-&)mTUlO^MTTEz`}(s_@4o|}~@GR^n zZv)V?C+ir)T*nyZI<+Ni8INVHQzW;=-1=Q7Uzl$9u2W2~-E8@FiV3DIzfLj1wB^?+ zCWx|prdE!pX}{mKiU9v2=BR{Tt2Gs~wE{0C-YKRj9$u&GN<^*V6g?t+o#yA4iq)_N z*1|d%g7vTkhG8p=z$lEt4%i9L!SnC}c^HOIkopM6qwpeU{3@R7)T8h8dO^j6^~&K& z(a~(Z);G3^)AW?LD;3fXqO)_i1(C2Ci%r_NfhnC9QEP@G?{ae#|rnaaX?jRRZ~ z*D9K=mk$3;yjeC`FCG3|+@z?uUSA~i{cqKK6V^+OFN=4Q%67%8^@>_PvqQFBuc-Ak zu}ZsbZj^;TCwfK7jk=G&$YRCbD3!h~R>6Ka055R;FdTuS@M(Vg415+|g3rMhpx3S4 zC@XzVYkyMoEH^3LSHw(d>?YL$W>DAMq)7fRqG!ZzQf_}IdY&}`d3HcF?bxFfZfn@_Zw8=OwZkK(EbA7Z2)?9euGMr^Yb|Ldb|x9 zJ2JfI4>tYtn zhW-NlCY51db6sGUc)j|uo8;NAi8sjto3Q^T+5hJ{_UipjilwGM7`#cn%ioDxq{dB( ztN$V1DYa};TzyCMeDtQkC-m0EO^Twv!zZm^yt7G9=lggC{w7vOZ(?=yCgR~H;^8LZ z;U?nYCgR~H^}Kw4&na(GR5Z`Pv(S-nlloE4#V&X&Wvz83NLczN$3xRZej(+ zrob1K>rIM{|13TOpM{s;bMSe!rZy=;`kJrWVhM?XN-?}YaFW@&h`xKp;>tTnnmv}J+K${ z!IQGaX6f1Y9DqZde}wyAAcwh5jYCJDn0Ali8}s>?o*&=)|zqgR@E!F>HbfMF7LNVldp-cFK)wDx5-LAZ~NRP zU75DhZOX%Cv5M<$ncHL;^C&z9kHZtN8}`6n*a!Q$!vGxO%wrrs4!y7EHkEPH`+9Cu z85i{|Pw11>DH=b#ov3)b@;pt)oAji&W1rh8xwk8aztx$3=oKTkD<1k+!*B$S!l(J| zGw@k>2|fp3FqQ7#sK!Xqh|nFRdxz4UqvJ~b^$y+H=ZE1495wZ;^MNh;)uUpX`g&W` zBfBg*l5ZiBZ_#~%I$p0f@D@FV|LUD+Tj+6b!P;At%BwnKn{QEse@EP-IiM|S3z_@i zes};LgkEj9MdjK&4)2E#zz1Ou?1g>s3_J_%qb<^y>6L_ARI~g_yucF;L)R=@mA_YdaXm=s@CQ^;wE^jV&GQU?Xu{RimljftL*lcjy+PbRd)0FJ<9)9+0EPs_rnA5 zAUp(*!Q=3L_yBwm_P}1)2feOlE9+{uN_9@rz5cDTo6kQ&>KAy%VQ9N;mEHW*qtJHS ziru!#ZhpFF;Ir@&d=9=~%5G=%q0AKZ$nHc%cgin59)=@u)YO$<(lmi1>3P2=x<2%GBXHEzoxh@XkJs#N=g!;Js+g=}_tUp4Ui;Xwbh}!%zZJbIV7u)33(>Qp z+hxzoqHFE#SaQ46`=X9rUvHNs|3mZ~{dPrH(=(FWWl7UBlG|lT|F#?Uz+UM6o7<_K zw^KWBr*_^hW%|xT{MEh1?Xs=uHFDc!Tk{EW?lp4TWn1$iXZ-5Q?W&jG5TEybWP$Gm z?v@3f7QJuoZar_Vc!4v+a0HH;y8dZ>r6ooE{T;gg6){u&)*Z6gt710CK|R+FS?q0b zhU~V3ku~JwjL^oBLN@_gEpD z|4ejGssfu=VDk!nmE|p+xm|sh3T$41%`32Z1van1<`vky0-IN;-2GbDdxc(w?C<+~ zJ!FOKZ+bmsh3s#7J!FOKZyqKOwtt1nf@%9#VE+o)-`99OWQFW+I?hyJ{|fA1f&DA6 ze}&@Azv-{`LIqx^P#N*Dy--1$ssb-m;Dri#!ROsRsgM^;N7@P^ZG|F|?df=1p;BXB zx+tDQe|b$_xJ~W=YkRDmB@nqeLZ^uf*n+viUD{=4L%(B@tMyTG_2q zmVZmM7RvsF)BDa-#t^g78(S>D&UEm28SsZ^clyE*PvD(?AiZc9|+g-X0o zi5DvILM2|P#0!;pp;BIOt{mGdiS3od_DW)VC0?k+3zc}GQeJS1-LMDt!ajIX@wQT4 zcun*Q#!7j?IX??MV_r$yqf)-`eIDXj9^tQ#VZF!U1*|#@N8l)YO7^c*P3rqR1D}PL z;B)YK(tW|l^3m7T`cKg~XB8!-N+snhI`)dzDwPx;2Nmn8C@EDcBmbylmys&@>nEbi zNEH#jiZW7#r>ZC;Rg{q`%1D(w^{TFPT&kjsR8dB%C?i$)s0!~?5u>VzQC0HJJGy>9 zJOB?u$EYfK$9ZslQAK@GMSW34eNjb>sv<^J$veJ}%SaVvq>3_9MH#80j8v(N{6K$o z8L6U-R8dB%C?i$!i|^o?x{5MVMGL1&WyH4fn&B#y5nFN?K7sW{I39%;IrAiZ%Bjfy z#(qE^IC+5c71>neB3wr`0Zf7mJ8nyx)}%AThCCOc97PHean8}5|aecmm=ol?7x z9qo5w$(=;|okaVcMEjjY`<+DlowB5V<*|#MM4O$mq>nvzu@g(~#F9IS_B&AzD|x4E_ziu4#Jhg~kRI;GWY3=jJ|=s>YEQ@{F&zIqbW$jK+f z!N5HlRr{h?ra7Q{G^+NB=-rW@)L%cRQ3{X!?o#_EU0kAFHoLffm#%+V$A167F0ICS zMO-WY?$W&E+u{!BKI|_1vP*vXosRuhja`AqxZC66y_CUwHFA=q<6_z2UOh{LSj}+_ ztc7(j1nZ%9>E5f^ZL<|dU=+rn-_3Hb<^s%f@I16)??tiqDxUk;TD=!#Rx4NC8b$S} zQMGy~Ul+5q7NT0#4vOBDR;^LWAB$c;P_0qQ*G2D2tCoE(iQbh~E&IGEdRJOCyV9!J zl~ygC|3+uLHn>_ke^d0Xv})RtQ(KLbzJ13Y`=87OSOv)B6sprF_%-4yvVm(|gmZrE}AJ z)2gL&(|gmZ6)T)i?@gZbRmRjXfVdT&~_`jw{lrd6wV>0|G*sn*I6QGV>! z=cDb%8vIy;A8YVqjl7ty^Y&v6eyqWdHTbaxKi1&K8vIy;A8YVq4SuY_k2UzQ20zx| z#~S=tgCA?~V-0?+!H+fgu?9cZ;Kv&LSc4yH@M8^rtig{p_^}2**5Jn){8)n@Yw%+Y zeyqWdHTbaxKi1&K8vIy;A8YVq4SuY_k2UzQ20zx|#~S=tgCA?~V-0?+!H+fgu?9cZ z;Kv&LSc4yH@M8^rtig{p_^}2**5Jn){8)n@Yw%+YeyqWdHTbaxKi1&K8vLlYUdfNO z_^}p0*5b!n%402lti_MD_^}p0*5b!n{8)=0Yw=?(eyqihwfM0XKi1;MTKrgxA8YYr zEq<)UkG1%*7C+YF$6EYYiyv$8V=aEH#gDc4u@*np;>TM2Sc@NP@nbE1ti_MD_^}p0 z*5b!n{8)=0Yw=?(eyqihwfM0XKi1;MTKrgxA8YYrEq<)UkG1%*7C+YF$6EYYiyv$8 zV=aEH#gDc4u@*np;>TM2Sc@NP@nbE1ti_MD_^}p0*5b!n{8)=0>+oY8eyqcfb@;JP zek=;q;m11sScf0$@M9f*tiz9W_^}Q@*5SuG{8)z{>+oY8eyqcfb@;IkKi1*LI{a9N zAM5aA9e%9Ck9GL54nNl6$2$C2hac+oY8eyqcfb@;IkKi1*LI{a9NAM5aA9e%9Ck9GL54nNl6$2$C2 zhac8*5k)|{8*14>+xef zeyqoj_4u(KKi1>Ndi+?AAM5dBJ$|gmkM;Pm9zWLO$9nu&k00ytV?BPX$B*^+u^vCx z8*5k)|{8*14>+xefeyqoj_4u(KKi1>Ndi+?AAM5dB zJ$|gmkM;PmL8F{$YBjs}+CVS0L6(0*$L>irVEG2d6B=as*L23C2My|zz9V`ZvO(5< zOZ13AgKX|&&o4JHV$i^dK?5TO4U8BxFk;Zah(Uwwd|6j|+^hjRH(=)m?A(Bz8yGQY zV8oz-5rYO<-Z}9~j0RcW^m~~aWO>tbjt#QB>GAdkS>E(M)&^PLbf2_AHh1dY$J!v9 z+XC*BHn797fz??Jtj=m+bykCB4ATOQve;zN`|cZMw?{?qyKj`*FN@w~-zc^JT=cuw z8rfyvDBJ#8#~Yw`**D6zuZ!Mg-zeL@DSEWLQF=DL%f3;1{<7#jUybyJ8fD=x>DU%- zl&YPg*EKat)uz|WHA>Z{*UL3Z)uwy3jr3|8>D4yUt8JuL+eojrQNHjs-e2D+UpQ~x zU*9NSnBHICNUye$UTq`2+D7@pIrskhM)|_e>pA*H`NH)6`bPP}^#1xr`NH)6`bPP} z^vb11dBoRye|@9;;ylyO~ zs@_@Os1jj%XMLkegz262jg*B(`E+uiiBix+DQKb;G|5xH)p?hKCQ3mQ`fo!2P3XS~ z{WqciCiLHg{+sYl6Z&sL|4rz>3H>*r|0eX`g#MdkbEoD0R1^AdLjO(ZzX|;}q5mfI z--P~~(0>#9Z$ke~=)Vd5H=+L~^xuU3o6vs~`fo!2P3XS~J2#>KCiLHg{+rN$6Z&sL z|4rz>8Cx}Dt7dG~jIElnRWr6~##YVPsu^1~W2VA$j2^=1A&efv z=pl?A!ssE49>VA$j2^=1A&efv=pl?A!ssE49>VA$j2^=1A&efv=pl?A!ssE49>VA$ zj2^=1A&efv=pl?A!ssE49>VA$j2^=1A&efv=pl?A!ssE49>VA$j2^=1A&efv=pl?A z!ssE49>VA$j2^=1A&efv=pl?A!ssDPi4LQOFnS21hcJ2wqlYkh2&0EEdI+P3FnS21 zhcJ2wqlYkh2&0EEdI+P3FnS21hcJ2wqlYkh2&0EEdI+P3FnaiNMlU}lRa~QY1*U0L z*Qb=CkB8w195r?QHM~hMkM{zni5Ijg>@ResIRZybU6~hX)jbnMYpfNGwW6_BG}em7 zTG3c58f!&kt!S(jjkTh&R@Buhb^S*7@u*`f>S{$@tx}iIc+{~KUA3aCR_W@p&N$Ar zN>|?zJ?hwsmRiwLD_UwrORZ?B6)m-*rB<}mik4cX6Q}M`$5wRGicVV5Nh>;Ol`5PQ z@2qT~c@J+z{SR`k${9$L{uD|%=}53T5-RbERB>{hSpvgpy{-I`bW zzUUq3yEVT3Q_(xncguIb6TJg{x4ibI=pE?0HJ0vcyt8#T{@Sgw{GU4ZyDxUL_k1^d z&v&!;d^dZ~ceD3=H+#=_^X`k?>^b>W?Wl5j+-t*n+(fAp?_k6czMg2tH)w^5$8q<5vcWZr%s2X~QOM*rW}cv|*DrY|@5J z+OSC*Hfh5qZP=s@o3vq*Hf+*{P1>+Y8#ZafCT-ZH4V$!KlQwM9hE3YANgFn4!zOLm zqz#+2VUsp&(uPgiut^&>X~QNFY!bmH5o{8{CK1iNyd8*8-Xqv2LaC2X>Lb`HB3u1Z z*LcPug2f`T*bj7U6-BUE1dBz801+ZU1nWhJ01+ZUga{BJ0z`-a5h6f@2oNCxM2G+p zB0vPoM~DLv;y?s1MDRicFGTP{1TRGJLIf{Fh!_!k5y2M`d=Zf^{48zI`i$U<2)>BO z7yhf?jS#^X5quFLo<#6Sgm@AmoalL+x7B40ao$CC&ij}TQN_&tK(BgB>nu_b~AB4{9j1|n!6f(9aJAc6)WM4JfF zCPK7{5N#qvn+VY+LbQnxZ6ZXQ2+<}&w27diC@PAgq9`hgqN1o&^lQBf-!0WBDvF|_ zC@PAgq9`hgqM|4&ilU+@DvF|_C@PAgq9`hgqM|4&ilU+@DvF|_C@PAgq9`hgqM|4& zilU+@DvF|_C@PAgq9`hgqM|4&ilU+@DvF|_C@PAgq9`hgqM|4&ilU+@B|3_VqNpf} zilV3}ii)DBD2j@rs3?kxqNpf}ilV3}ii)DBD2j@rs3?kxqNpf}ilV3}ii)DBD2j@r zs3?kxqNpf}ilV3}ii)DBD2j@rs3?kxqNpf}ilV3}ii)DBD2j@rs3?kxqNpf}ilV3} zii)DBD2j@rs3?kxqNpf_iejiJhKgdSC?*yCRx7Nnq8KWQp`sWnilL$yDvF_^7%GaP zq8KWQp`sWnilL$yDvF_^7%GaPBCViT-zSEOVyGyFiejiJhKgdSD29q+s3?YtVyGyF ziejiJhKgdSD29q+s3?YtVyGyFiejiJhKgdSD29q+s3?YtVyGyFiejiJhKgdSD29q+ zs3?YtVyGyFiejiJhKgdSD29q+s3?YtVyGyFiejiJhKgdSD29q+s3?YtVyGyFiejiJ zhKgdSD29q+s3?YtVyGyFiejiJhKgdSD29q+s3?YtVyGyFiejiJhKgdSD29q+s3?Yt zVyNiTQp+2GcC^$kExoH_w}0BzS9(o!E2v#7pnQ$nLhb0MoqE3=<+M}px1*ePl+%uK z+SNcJ$MZe%et^JIZNCIqkG4+G$a=qnvh>(~ff5X;HMJoOYDc zj&j=7!}1gDh5O)scmN)RhoIkD(=K&6w@0Dh zh(#U5q7GtF2eGJwSkyr*>L3<%5QRF3LLJ1G4(Y*p@Oq36>B01Rj1K9+^c&kcqygu| zJ);hyM+ecPgXqyg^ynaZbPzo{h#nn8j}D?o2hpR0=+Qy+=pcG@5Is7G9vwuF4tdro zx+T*=+~|;Jow~i*fj2v3bLV6jj=)jq-HRQ>hYsRH2l1hU_|QRo=pa6H5Fa{-4;{pZ z4&pg*7yw-`=I`LX3UhBkbop?=qAGJ5O6R&mRwNAX& ziPt*uS|?uX#A}^+trM?x;%?oFc&!t!b>g*7yw-`=I`LX3UhBkb zop`MiuXWF*h6wOE%T`6FUbZ$#6&p7buo_Wvn*4y8*zeOdIL^e#p6 zXGQNu?~?B>h~ACfCEvXwdN+C(yV1MYjozgdmCxvmccXX7v;LKLqj$-_kBZ)n-X$-8 zLG*6)E_wNR(Yw*R@N$>h2`}l`yV1K8=l@Cc4)iX?dDA=4yAu_+G@fR92YQ#3=HGe;dY6=TQS=V< zE-B6Q4)iW5&GZiRE-B6Q4)iW5&GZiRF6qtr_YU+f)dKdKcc6DE{tt`Zf!-zU`M2Iv z(50~yYr}7@=u-T*Lc9aLOCu`gMb114z4y6G3N*dF!m!uLSlf-G3JSy!%LZAL;HR-F>9Hk97Bu?mngK>xbb89EDDI zAL;HR-F>9Hk97Bu?mp7pr*!{0uwUuEBl>ywlkR>}+)s-8NpU|Z?pKPwau|-lQRo!+ zlj43-+)s-8NpU|Z?pIpx1P&;zmqn*_fV2+qj0Z^Z04W|I#RH^xKq>nAVK@Rup;J6S ziU&yX04W|I#RH^xfM-0QbYBh}RJt#TR?$IHJV=TMN%0^l9wfzsO3_yi!x1^7Y={3@a6?shW?>?-^ zV|woRup*D?{oRMz-+fq7#b>;~`>>*i>HXb@^^B(XcOTX>n%>!cSo!}};E3`+EP6Ec z2rY*r%JXF%d%yM(<;V1X?IX&Md4cPP;RqZxb+_TbQ8aK=cY9aIZigJ@Zb#)8pYeY1 zqw>x>qVIo{`yb{0N4ft|v~d(|995oQ(lyq`Q9OQ3_y1RYYuwsC#{G|R|6|<$823Mh z_mAQIW2AD7RF09#F;Y2(9*&`hV@lEY9EKxs)KrT98aS>LUl#4(74M$;wkxKeysd+hzihx?S`FGPR!;67bx zj=)hFq$`1{H8{p9U_ z@^-)O;A@8A2plza2fedcchLJjNbv#PCr`(|&jZ}&0q*kv_jy3~@s-1H1df`zkKPrc zXM98S>h}k^!-L%6LGJJ%cX&|G?rVnO2pl!_>~924=njvH*6j(kolL*a;e^^hzY)Fv z_XK-JPRLVl>DaqjPsm@UcLASJioV|ar%tF9;a_X=&0zN@&^MqoNQ}-_56M9n9 zyID`j*FN?x;1jClea5?hPbfM$|9&gl2}LKhqKHb=-8~b!)pKk2ajeWYYPdE1I#y;KHryKipW1nv9(~W()u}?Sl>Bc_Y*ryx& zbYq`x?9+{Xy0K3;_UXnx-Pora`*dTUZtT;IeY#~IKZ|$wcVnM!*~iD;A^ld z*rx~k^kAPJ*~iZ^46UCY*~e!_q4m>)eR{A@5BBN7K0Vl{2mAD3pB~xgYXN=rS36~T zDWSdCrx*M5VxL~@(~Et2u}?4d>BT<1*ryl!^kSc0?9+>Vda+M0_UXkwz1XK0`}AU; zUhLD0eR{D^FZSuhKE2qd7yI;LpI+?Ki+y^rPcQcA#Xh~VkDp~2+CIIqkI#%k+ou=% z^kSc0?9+>Vda+M0_UXkwy|T~01@r}G=qTNXefqFZANJ|PK7H7y5Bv0CpFZrBByK*ryNs^kJVq?9+#R`mj$Q_UXeueb}cD z`}AR-KJ3$nefqFZALXkL`}AR-KFU`g_UXeueb}cD`}AR-KJ3$nefqG^N!jPsz)9)H zbWA>}H;ZJ7o7E3GsaBAWD^zEllr`QJ{kD*k*x@90IEfujVuzF1;UsoAi5*U2hm+Xh zBz8E79Zq70li1-Tb~uS0PGX0X*x@8^5jm+=Q-V_TEcQv+!Ms3jhv5hug-?^)XQ00Y zdopkdJ_lbg_0+Eh^v!MU&OW85ens>S?o+a==^fmsWKU67J{>sCm8W&(+dB4@r@8Vp zSDxm|(_DE*SAH#UMpynqbZvV^$}!z9J0owJjsRzL2h(N$jP4-n4qpqL)g7J})6@z* z%N@>ghqK(_EO$7oJNTMmI08pa-QjuJ%X>NdrSl7-*TMEn?VlI@?udT1cz+^#&t|_` zM?V$4m%JbS_p@iSUv1#mbjEwh`_&TmUp;!zMQ)E`1ea8ruX>wOCi34_m%fcA^w%u$M&mTZT7%k z==HJv?Ah#Bzux)r?(%-=$MnADep$?S@cP((>Bsr^TPgb0_O@lbKDJ->w8gwkuy)4vhXv~qAffiAH6Qx&I8za06Pz0=K<_IfSm`h^8j`pz|I5Mc>p^P zVCMnsJb;}Cu=4C56vh!O?#abG`+5=d70Ba9m?E$PkfVBs(_5ju%P@m-|`jxFc zfVBs(_5ju%z}f>?djM+>VC?~{J%F_bR5oAJZ*A=XtUZ9W2e9@4)*isx1E_RBHvcbO zX`2sV^8su=fXxT6`2aQ_z~%$kd;psdVDkZNKA<=z+hX%UwPw=-gR=JbMXP#H*7mVy zPX?Ji8D#cE@4(i$%^zOH+Ce-rC|~?S z$6gaYDEpgU6Fw*}_`KJI56TPgik>AIWR_%*S&~6!Nd}oE8Dy4ZkXe#JW=RH_B^hLv zWRO{sL1sw?8DAY_e07lV)j^G({Z4oGT>l`mB!kS749f4$r{5khD8HM2d%&RlZu;#3 zgYvuSRp^8AyPwXx8VBWf)4Li6<#%7>w+9T$@1{%HAbuaj?}PY#5Wf$~rSDPE5psyye2Ch7h?;AN+I&c*>>d5JQqMIcf4wHU z?=VE2HAI~?Bh2-x?jh>#A?ofS>h2-x?jh># zA?ofSm5WCM=Tt5-MSaIxbT9rKvkB*zO*qGF!a0?W%R29wpmWSA=-u<02|CA|!a3#? z&M~KOjyZ*M%qg5x8TpN_@fx{vl#z3??GJS9HFD=vM&9`U+B*~YD64b-zaeb0hDA}_ zMqHtY0Tof9Zb)5F5qG;8NCJ_Nrml zWuRC7)zT=l@r5$hXp6TMMzyD98CVt7o|a{xR8->&Wj4N0hU~;8SsW-scA~O4P=@S8 zwMw@P3F=&{bj#?Wf`aX?&a+^9Ayhl|JPY?egd6smFO0Pak+0j$&)$=Tfl7H>h z^DI~r)m}Z%f{lev5Nz~@YP2Fqn6E%JS`oC-iXfvEYdF_vMbJhof;L(aw9$&7jaCG0 zv?6Gu6+z0^e0*xOA_yufp&G3Sf{L|JjaCG0v?6Gu6+s)V2-;{x5X|T;jaCFf&I?eD zRs?OdA_#uo6+s)V2-;{x&_*kQHd+z1(Tbpr zRs?OdB50!(K^v_I+Gs`4Mk|6gS`oC-ilB{F1Z}h;XrmQD8?6YUE5tF4Rs_)%%DYA@ zg6IlSjaCFfrk-lFA_y|Y4UJX=L8hoiD}pv!5wy{YAeuz}HChowlPCm@Rs_MVs75P- z;8s+l6+v(-pBk+Qf?H9IRs_L=c%spYpp8}pZL}f?dKHdFD}rEn4pgHRLG+Kfr_qWa z$Pv|OMGz#5YP2F~qZL6Ltq7uvbVs8VLGUd3YP2En>PePM71|>2!tpN z+M727LPWJUZwOS#kM`ybfeKO8#UZPULsl1utS$~&T^s@xdP{rrhCqd=_T~+N3gtz6 z^M*{Dg{&?PfdqxAG42pZ(7E>M4S@vFN|RdHXvC;%R5~qWIxS=v2pI-KhJlb_AY>Q_ znNABC5<;faLZ;I~prWHwj!s(!RX=b!*jNSC+OcwE+6YzOdpR-{RU53Fx_cv3yIPea zS>4f>NV!S2+*-xuNK<#T+etZc)cG~E2g;F%Le@7(IT8_-<)d;WBC5Tu%8`hub~`CY zB8pdgE0rS=ovSCm9Er$}zCp^7h^TfuDMuor+U=wqiHK^qlXBbbq#U^@OnrltBNtJ9 zgOno|`O$7CB$vJlm7C*{aORJ)y&qt8XP+etb4TvYpe-oA&(5@ZcBa*{ zGp&ZD&PG2}7_TafR~5#q3gcCU@v6djRbjlUFkV#{uPTgJ6~?Oy<5h+6s=|0x0roZ$ zvUpWtys9u>RT!@-j8_%Ls|xC=xA7xhRZvffidPl1h5iB+uPPkzs)9P}L#TLFL7gQk zUR9ufM8&HLYA8|hssb%E7b;#=fG$z-s=|0xVZ5pUWAnHpUR4;cDvVbZ#;XeBRfX}Y z(m5brVQul=&@OyKVG9IYRWeKMZD>z+!eNC5dW@QbZ=XtbuBI1;J*(@WeX+Sy$^JWf z_eg5JN_fuLA)0?7^f=I13FmKv4uWr$=zr0ZY4cQKIV1x*)aWn^;Y>zAD$x=zLeIfI zP9<7G<0a?C>Hk6&%c19E`KS^tp{Jv<*HekE(6_{;ae8ym6&lqTLo20{TA&On%i5Lb zjcVwXSQDs3f}&T`pHqnhqtI)qJu98>(=w@aa^mzwB1h$7g3*aa^NikTbdu5h_;CD8 zwwx9*N3;?NHb6_UyIILvmR``CXt`BVvnba$8=YqK7NfTsz1`?fKtiSSQ={6krxIB= zLGLuq+(l`vM8CZN{ROpQCHn0nsH}ceqTeKiyV)PC68$F5{0g04iGCB`?g1^8=(m@l z_p$n>lCdMD@VD^35-q2+-EaJPz&QCJwR0s}ZVB{ZW{Xv#nB9Ned_H04Pa2(W zJbcRNGZxwm3rBkmRig1Eg`nl4-1t1l&?Rd}l^|18){ZJcrl_nPRigLkF$bSIU&tJr zO6r#d(8WkI3}UP8yRkP^h{gIBVTKK{VM8pdi9jr^91t5e#D)#AVMA=#5F0kch7GY{ zLu}X(8#cs-4Y6TEY}gPRHpGSvv9hk9*oD}zAvSD?4I5&^hS;znHf)Fu8)CzT*svis zY={jTV#9{mupu^Vhz%QJ!-m+fAvSD?4I5&^hS;znHf)GxS0OMNHpGU}JUSO*!)P8+ zAvTQW84eX`!v zAy#u_#2FzrY={jTV#9{mupu^Vhz%QJ!-iN!r$H>E(;zl%hz%QJ!-m+fAvSD?4I5&^ zhS)ImvU(7N*svisY={jTV#9{mF!i#~BE*KNmqmrxFq%_Thz(OaD;yys=!qPRJC@M za|-R5D(a)9Q0*sHMNKpxdS?7*Q0?Yj1+F$iHRHDmT&;v&z%H3p)&{NuMY=!MLb!sK z278F|jZg)0-i2z-S`~6v$Wtx$n~hF0dW+FpjoxnbCl=#RjsDE&9Y*g&^H(7+rAM=H ztB{xIJx1>}supaOwP35P1zTk;*eYwmRv{6k?Qx?|7=6;{biN|1kcj9rmIn1AR#BrV z#v04-JfriCzH0O}qcLd2YBBX6_2yhU0sB=*En+$$Vmg7fh3Ew4W}y=zrV}Ej6C$P) zBBm1}rV}Ej6C$P)BBm1}rV}Ej6C$P)BBm1}rV}Ej6J$?Du}ddJOeaK4CqzsqL`)|{ zOeaK4CqzsqL`)|{OeaK4CqzsqL`)|{OeaK4CqzsqL`)|{OeaK4CqzsqL`)|{OeaK4 zCqzsqL`)|{OeaK4CqzsqL`)|{OeaK4CqzsqL`)|{OeaK4CqzsqL`)|{OeaK4Cqzsq zu)95yitv3TDxDB9oe(jd5HX#gxqIS_bV9^*Ld0}J#B@T$bV9^*Ld0}J#B@T$bV9^* zLd0}J#B@T$bV9^*Ld0}J#B@T$bV9^*Ld0}J#B@T$bV9^*Ld0}J#B@T$bV9^*Ld0}J z#B@T$bV9^*Ld0}J#B_qb>6HuVgox>ci0Oog>4b>sgox>ci0Oog>4b>sgox>ci0Oog z=>*phD_i5e`SuoKv9$(bT|=yEh-Doth-Drjh;l$KRL#%6vbq%quA=Wj-x`tTS z5bGLZT|=yEh;l$KRLoAjUz^ZGAbq%quA=Wj-x`tTS5bGLZT|=yEh;l$KR zL#%6vbq%quA=Wj-x`tTS5bGLZT|=yEh;?wOF;)V%1iQRa-4qZM7J7x2VOctrn}cTCCb?v1+Tus;w5QrWU&# zKkCV;wpy&(YO!jNQ_mgMV%1iQRa-4qZM9gn)ne61b}dg;i&Z08QPpDANLEy}ST&Lr zRV`MHWJOhrRa-4qZM9gn)ne6Fi&Y~pr9`z@wbf$PR*O|zEmm!{Shdw+)mDpDBN3%j zwOBP0nGIDfR&BLdH4;%cs>Q0U7ORHyD>+v!Rt@JxRf|=_^OfxRA`VB5!%^dK)Hob9 z4o8i{QR8sbIE+OyI2<(&M~%Z#<8ahC95oI{jki(bZPa)hHQq*zw^8G5)OZ^;-bRhL zQR8jYcpEj|Mvb>o<89P<8#UfWjki(bEpyVzY1DWdHQq*zw^8G5)OZ^;-bRhLQR8jY zcpEj|Mvb>o<89P<8#UfWjki(bZPa)hHQv&%Y%!{Z5H;RLjki(bZPa)hHQv5Nf0XO+ zoo6&`G-A{hrH{pRX2ItO^i;kwuscUj`)nI;nvHh-l=J@dPS3{AJg9byosAUgp{F4= zEXdjYk$jKOhR++ISJ_)v^A$WB4mUtG8Z{d&r_f}9dNx{4R2Habqvb?pfqFKYO;on0 zXQRzTWqW!yvJjQ+>Dh2zRJNyQQ|d)!Z+Z@C-VE(VYxWiDluD<@Z1mL7E63V4Y8>|d zV8o~|R5p5Q7#$Fmb)FjPl(A4*=czI4JT+#Qrv`Lw;g0O`)EK&IK-UV+wfd}vd4}mw zS?8$%Z=0dA&Qk;G)yQnPk)KGitTo!q1=<(JaS>&k! z9VbF%i>HRts@%yIPYs9?l`Wnc5G5*GJT>4-=d#69W43r|==o&bAa&dhs4UkokHDxb z*Srn_c@qSRYR<{)^!15q&dKW_kPuB$F_ToxBo#ABF@J>=#!ON%lT^$k6*Ec2Oj0qE zRLmq5GfBlvQZbWM%p?^vNySW3F_ToxBo#AB#Y|E$lT^&?D8)=tF_ToxBo#AB#Y|E$ zlT^$k6*Ec2Oj0qERLmq5GfBlvQZbWMjB>q$yhu_plT^$krQR3TRhpz?CaIW7DrS<3 znWSPSshCMBW|E4Tq+%wim`N&Tl8Tw6VkW7WNh)TNikYNhCaHy#l+T1Tt|&jzKR4N5;7lzuiS{cKSB*`V~Z zLFs3M($5B^pAAYs81Tt|&jzKR4N5;7lzuiSy%tdV*`V}VKw*8)nf1(aS3D7_X?dM%*zvq9-+gVN6irJoH-KO2-@3n;x7P}+M?zEGfip+M

1Tt| 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 Unoc_Yo%D!bBUv$Wxp)2l0iOc?kpKVy literal 0 HcmV?d00001 diff --git a/docs/_static/fonts/YanoneKaffeesatz-Thin.ttf b/docs/_static/fonts/YanoneKaffeesatz-Thin.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6e26d9e831d9ddd2393f7575f846f23fab868bbb GIT binary patch literal 129060 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 D7N)0q)=H zZA#UX`kMFvXFkL|Jd7nD;mCRDxKT>nC{^6BW*j$4i5sPg8$R+le1hLTNnTImnIePfzI>THWx6k4rU>u5@@l{`W>3nPJt<@Mq)f5hcXdBJ3(vtm z?yVns_N0s+eVHP;uj#R@GRCsXG=^!5xkpweUzqNZl`)1{rkG&+c$H?EVuI;anq`U! zrdMf}$?_>$pPQ~-{8uRgd{xXFQmN~SIZ->i&_^fYW=2|qggKRzE~%E zEbMBnCNXPZEeyjt7=cmP3}Y}36R-`o!y)((yudvS!$-+|g!CwUj3a*Y)z#|JAJuw6 zuXf&|JJe{tp5-NRMzUI*sVCi{^^HFl=csnuq7^hgQmB647Dcw-i|aUlgZj%`G!8H< zZcd&Ri>3c98sE4eZq=;E7U}Q}al7K`7Ie5JaD(Psx5#eO#GTT^7U}S1agR#n7Aep< zmUGPtm5wcnS1;*HT_LUTxlZ@|s<=aA6xX5H>!i}(DqX1&fa_FKnEmhq=MTdXI0~QU zx6i<5;YIiyd>($wl$E}$-HRbT%k|3lXJV!_cD-r=Ge;%pdPVYo6g?w$y-H0|^gQGB zQlNQ(-wwk^`PB&NQTP}~9ygWO1+B{qDGqE^UP&>Fw8zG`%93x1p7-1;OTI1c)KhPj z-F#$^?73AX^!uV`5Voq^`J9vR6g&+(`D+*KhCQ$s4#G#s_dL7+hv5hug-@t<+p6B5 z^3t7uQ}5pJtkX8_h|zvnt$sAUyJ5SY=%VOZ_3b)G>)mz#?}~e5pY2#|yF8dw`UJ;M z!c*`xyucNP;RqZxmG4Eh7N=^r{0_y#yTx>^3EiQV{UR|_^YuGq!*7e(q~~at#15_4 z@;O%rV&XOW-41#18{+l4(hk}AZE>5T{SMvdTjCA6^Bwv;a+-LH?sJDM|0{8q*6;0* z{eLEU-g$>~YgTBr;tqXn`8x4VuJb80CU6yhAb2^j!Q7wT?{3y&Z~me$w;s0@fIYkMiszq(|Xn9C;jmg{OW( z>fI6esy<=8Ly_=x@fr9mya=CzUsoyKp?K(XUQ}CRM=(X@c!y%+-73`~t<<_fUY;Rt z)xF&yOPbr^O@S7rcapvh+V3}LFOS}nsQ1jKiFb44IP@sr4YHN#QN9~wE3;E^=?2-# z?1nwC7oL$dZqSYxU$Y+$a{OVge}Ow3h9hv)l$QQYJ`QOfAEy_mv7~pi!dwC;rmG&jMfbc=+@UAE1^e8h^82pRm9o_>vXa>kFYv2jI08rE z)BN@s_$<5#pM%ev%J)lpD{4slC2u9)Tb1u3rT6Nuw<@ms_%IxSqo#f}sM>*D5GwWmAi5seDPR9wEGKPi?^G_YinjSq#q*@-bt5~~@-e+` zWT#p_rq_+^RLjTox{;mIs(BiEmB>!Db4;%i*(t@EJ+K#^h3BAsv{TkIy$)n2Et#Eq zUO&+=bUm_DGfF-(3SE!vRD05N?Y2|p*L3Z+Q!N?OwcAdWTv1l~sy@LG(oU9LSZNnl z+J%*NVI{8(&(dEP>K=BbhTaBZ5JxtCAxE6;03V>{1Lg z`^d2$dQNAT?B?7r@QlOIcH1Sp`Kd>t?Y0ZM?ULR6T+hH~;YIiyeBPAZh61eW!=v2plza<}+Gp>v*_Z7JgOCR7}{dQg3F%9JRN1%eF^E?{V9$X!%odyQ1rE z)jR%`+v>X&4SpedmEdmGHNO^Z=iRDbo)wRC`~<%`2~WY((CzBo)GWKHS$0#i?51Yf zt(xT@^;g#*yH$hyxp*ErPVUxonU8YB(Q>!!W_z>*%TfEpWS@`UTN# znA`QdFN&@aZr45gNTu%ocKOTfhu)ufyYe+J@Y`WH0!K|<`31Fdyc&OxuKWwpD>L`# z`hOvMW#%5`vP8^PE_-Cpe;2o@rrslaI(>umu!p*P50>1cQvaNexYphyOa4?m&Y36R zNq7pLhMiok3wFaE*b7}d@1b_yL+!jr%Jh*z{`v^_c^-NP!5-Px^g6~p(xlVgN3bX0 zb&PugUdOmceUrDuulqW(z$<|}WPzu}boI{e(DTj`FK}cSj=)h<=RX}N*ZJQP9kPBbVd8k7?a%83T$w3o_N(>X`0 zx?J(Ww5rRA59P#%a^gcdEvRyIUXISo(Rn#KFIU^ix!(`Z!gJ6w!sY0{T=CX->z-q| z%7U%rF~D+J_*>#Id=$HlkRFAPapZCMgvxBWEdMRF0z=xFRUym2EM}^IS|Q87DrS?; zk@YHM^EX7VBCe3lpAo&vu|hWgspx)F1<{}an^(x@Ki834IL9`xz~&X$yaJn7VDk!W zUV+UkRPO#&XL>ze1+`cOwO9qUSOv9M1+`cOwO9qUScUBGd$9d0uzv;iufYBlvcK=s z^;!k>S_Ss6!2T83zXJPLVE+omnIGv)d!Yg^RH%$NZ7)+qNBuKEWcMazohh5 zxJ}QyS2q8pxI=c^E6e{}wB`58^1l$hW_zzJ|E}oqlfAP1uf*Fq$8Cwdvb@jq%+X%i z-|0%OwvV*OSNF;brpH(J$_u8)SNF;brpH(J$_u8)SNF;brpH(J$_u8)SNF;brpH(J z$_viX>#_IB3#Qj&@0AzKGm5u+<%KszuUFhFFPL7hxK}aR&+E1Hd*uuB0iNYy{`v^k zI}g3HX|GCz>77k`6}!wQR154?P3r4B1D}N#;dAioT8>i}uV0ETBbAhqO3Fwjo~opbR1%jeDI=Bg)T=tv zajB9rQb`%9q>NPJqe_(#=j9kxNsOwLcivU{FgyZ}La$e;ly`g&E+dtckxI%)C1s?N z7*$D(s+4zp9oNN`l#xoxNF`;Yk}^^$@BCPQbs4Foj8sxaDk&qC@{6zFGEzwysicfl zs*KoH=b?MbmGX=EDAsd-xl-OSALGd5@CmJ-td#vPs^1mT=*m9X|HopM>coAr?OWnD z-N`=L)^zQ;Pxdt38rg^P_hG|**l?fJ?&EHm?33D^wk7rb5a^XZ`-t}Yi1z!4_WOwT z`(#Pyc!J+L+V7JkeVx90=(?$XtME@o+U?p>Nw_-E1Q-=*_k7JdF*?BBUdzj{IGGL?(F)G{|KG*Wbz{PI7= zO3hK;C7r(_KEl<`i+`kh{19y$7vI_IXb99<(Z1=5f(`(5l#jRwbRkqqJ87S4rn@i95*4BRo}7xR2b< zIo^p@C7u79=$&X)vg%8sccN9P_2?WuGg77bHQ$5R16Q#gxJvVDPJ2CY73+bkvwBxDbJIJ~s-#lWJJG5XF-))Ttzsuym7==6;GJky>Q|Z< zp?9KHsVq1b??kK8xR8J4ooH3^N!P#*fwbu^K;C20u@*np;>TM2SSvp+4AkPsTKrgxA2mlMKi1;M zTKrgxA8YYrEq<)UkG1%*7C+YF$6EYYiyv$8V=aEH#gDc4u@*np;>TM2Sc@NP@nbE1 zti_MD_^}p0*5b!n{8)=0Yw=?(eyqihwfM0XKi1;MTKrgxA8YYrEq<)UkG1%*7C+YF z$6EYYiyv$8V=aEH#gDc4u@*np;>TM2Sc@NP@nbE1ti_MD_^}p0*5b!n{8)=0Yw=?( zeyqihwfM0XKi1;MTKrgxAH(=Dj32}JF^nI>#MLl<4CBWze$*_Z{20cMVf+}zk74{6 z#*bnA7{-rb{20cMVf+}zk74{6#*bnA7{-rb{20cMVf+}zk74{6#*bnA7{-rb{20cM zVf+}zk74{6#*bnA7{-rb{20cMVf+}zk74{6#*bnA7{-rb{20cMVf+}zk74{6#*bnA z7{-rb{20cMVf+}zk74{6#*bnA7{-rb{20cMVf+}zk74{6#*bnA7{-rb{20cMVf+}z zk9GL54nNl6$2$C2M_jGLk9GL54nJz1SbnU-k9GL54nNl6$2$C2hac+oY8eyqcfb@;IkKi1*LI{a9NAM5aA9e%9Ck9GL54nNl6$2$C2hac+oY8eyqcf^_opg z57f(duZSMWsh8#77CmoUkLBwbPpFsW-_#NBTCG=~G%0!Byx#$stdfD7*&nDM1 zZd1>=O+Di_^^DupGj3DQxJ^BFu9uyiquZ19*ts4%*JI~;#%<~ux2b2`re2o!op{|v zy)19~Ell;Yyy;QRdRgA|czeApZ+h2iy)19KPg;-7>(z&PS84BOte4GAuf?ioEml2i zvFcfiRnH2m23af^XkaY2L3VpcX^-VLNbQ$I@2PK)+J7v1bzB2`>KkO+x0SYS8)RG4 zd+Hmc>Q_aN&os!kZ;IYi-yqxiuijJNAPYY!x|iA@3qLB_!VOZjbM(6L2C3Tgy7307 z+Vr~d2C3R~ueO0+ZG(K_wD+?#(5r2rSKA<8_=tVcAYV9l@1}2%FHG;IZ(w|&fnIF` zz1jx(!gub`n+Ey9^yp24d||q^-#{s7pcFJv3L4}KKZSSGH>ec&4n2C)pmj>`i0<1q z;FkvZ#TNE%`Ud&McJ^-i21cP9C?TkG?@A!t_4+ z29*U-J`DyMDFuy`f<{U~Bk`w^QqV{#Xhi>w=)V#DH=_SW^xug78_|Cw-f2Ytjp)A- z{WqfjM)co^{u|MMBXOn?{WqfjM)co^{u|MMBl>Sd|BdLs5&bu!|3>uRi2fVVe)VXG!=)r75@uvHVb zYQk1c*s2LzHDRkJY}JIVny^(9wravwP1vdlTQy;;CT!J&t(ve^6Siu?R!!Kd30pN` zt0rvKgsqyeRTH*~V5BmiwHGlgc>tK zjTxcFj8J1ns4*kdm=S8s2sLH|4@U4{1P?~=U<40F@L&WFM(|(+4@U4{1P?~=U<40F z@L&WFM(|(+4@U4{1P?~=U_>7D6WtFT?IUQTpLwA752n$c1-T53j1&1k6^Ej6R1 zX0+6dPMXn4GdgKTC(Y=j8J#ps6}}VCbT>;Crf0gFr3%wgq8U{*OBGI^gC2EkmMTn- zIyOrcKHsBN&8VVTdicH4=ivpcIt)kPDD6vV<-7kSdcXO8dF^e{`_1>W-+aG( z_e-TcO1xiX*}w8m^ZgnRH@(w*zjoG`-f6yHJ8Mku(%r8W@=klF`F_3g%Jfe2{qm9N zo#y-HBhx$0_sd5c1)H>BlNM~!f=ybm zNeebKhh&C~zO^j$0Bih7>HZh`2jA#=>MR8OVM@4Z| z6h}pIsp#!M92Lb;k-jIX-hCVu#Zi$~_Uq~5s3?w#;;1N&isGm!j*8-_D2|Has3?w# z;;1N&isGm!j*8-_D2|Has3?w#;;1N&isGm!j*8-_D2|Has3?w#;;1N&isGm!j*8-_ zD2|Has3?w#;;1N2iH@V9I4X*xqBtswqoOz}ild@9DvG0`I4X*xqBtswqoOz}ild@9 zDvG0`I4X*xqBtswqoOz}ild@9DvG0`I4X*xqBtswqoOz}ild@9DvG0`I4X*xqBtsw zqoOz}ild@9DvG0`I4X*xqBtswqoOz}ild@9DvG0`I4Vk@q68{RprQmSN=QY?Kmrvd zP*DOEB~VcU6=`RPRFptP2~?CoMF~`tKt%~ult4uZRFptP2~?CoMF~`tKt%~ult4uZ zRFptP2~?CoMF~`tKt%~ult4uZRFptP2~?CoMF~`tKt%~ult4uZRFptP2~?CoMF~`t zKt%~ult4uZRFptP2~?CoMF~`tKt%~ult4uZRFptP2~?CoMF~`tKt%~ult4uZRFptP z2~?CoMF~`tKt%~ult4uZRFptP2~?CoMF~`tKt%~ult4uZRFptP2~?CoMF~`tKt%~u zlt4uZRFptP2~?CoMF~`tKt%~u^ruqG_X4eGsa0C~wbE|?w5qT4d(o|+R;_@#B)Tos zihf$D_ghg;EA@UW%4tP8tth8ey`*32e6PJ}m1cak?eGS8qg2|;%D`5w67ltKgS+|b z?WDcGzEvtRD>&|!Rjc<L=ksWwoN8R`k<~ep=B_EBa|gKdmUI73H*|oK{*Ct+Xgw zQBEt$X+=4$v?y9pPAkf3MLDhNVfl#;!b9*dJOYoxW6*1UTBR=E?MZk_@w`>)GVkH9 z_rm*NH|&AE@C!Wq{qU^X39ZtY*~iuTImhk2R@Buhb@{Ju^|hj|R`so%c3Zj?jkTh& zRy5X%##+%>D;jG>W36bc6@|1(8*c~Nm|tiks6m9aO>G!I&$#=dJucK(A)VERU+bH#Il=?PGeH*2|jZ)u6sc)my zw^8cbDD`cW`Zh{^8>PODQr||YZ&Rsvj&6apQQq6+5$A3%wBdy|dBIj4h9htkx<}JS zxo)Few^6R!DA#S2>o&@D8|AuzYYwdWg9j~?HwRXJLj@R1pT035A$7}6)tsSqmwd1vRyw;A_ z+VNUDUTeo|?Rc#nueIZ~c6sd$eQChE$U78)9}>Nbyh9QAMbY2E>Cno?ABf&L-hnqe z^q%n!`S%ggd&WEDW#5(ejCaV(Pm10%-XSlW-ZS1IUw>2dp79RV@6OTt z#5)w9P45%$P<%GMPrL&?bSOSM?S0}MiqEF^iFZgLruT_=NFk>8iFZgLKJIZ%@!TZEJq%_m}#5<%k)BD6bq%@!Dec~Nbn(2Mw9a5TY;(g*Bdc%pY?|tGO(wnd2 zec~NbozL_>@eajpThIH%JET3+`@}mmLS;URLcCABL*rEDV;p%LdT)4#6li*Hc!v~d zdT)4#v?pq`Dqs8Xyz}C2MTr@K1Bw`bA$kYO0V(8N(Yw44$fv&*y=V4-p2GB=*#jyI zK7SaFz)|R3MF*6->0Lz!l)LF&MF*6-={>Utr1`%H98|tP5Yx5F_aONmB;SMNdysq& zlJ7zCJ*a$r{xBSYqtN*tB;SMNdysq&lJ7zCJxIO>mG2J%hm`L(ML+K$@;yYphsgI3 z`5q$QL*#o%`TBhCZ#|?M)AatyG50UR7@;yYphm`L(1BaFGJEEWW zF!>%P$HU}!m>dt2<6-6KGl$^_9EHyDFgYG3$HU}!m>dt2<6-6XPT+|0x+prYBjk02 zXFNiVN67IAIUXU$Bg)a|dsXleJ)`OMz(;t-Bjk959FLIW5pq02jz@ULBg*%pzS!n{ zPe;k|C^;S_$D`zUlpK$e<5A`4GrcS7sB$#DE9xjY9wo=4>V{82KI}-(%!^jB)j2D}MQbPuNOe2jZI z#yuS49*%Jj$GC@M+`}>5!RWeO$5E^j_@aimSgBJ#u?o`*nh% z*E1hiEb?Ey3;VcYk?GxS#}#e-SMS0;u4rR=7xr;Q8`Hb6k1I+zU+=;`u4gf=(&MP~ zI4V7^dPisKKED|_q5FJX^l0Y^S_mg}Z|^GYUDYRa52kljpU^#+7dU?yj=)h45S3AkoPRjm1;(hKX+(D|o-gN!_#Qof;=~{igz_ zbp5Z2*6=B=e~Rm$;`*n!{wchC3NN1`ms8|&id;^S%PIVR3csIHj=rY%NS;!Trgul4 zQjT8@oK}us6TNrrG&!Co$J69^njBA)<7sj{O^&C@@iaM}Cdbp{c$yqfD@R{*7>>YE zQ#pQ3JK;mB5k99J|3$n&+TS4fobJu^*9ShQGcN`HOf7^f#B}XU`7`Y>4vH5zG7LxH zsHq5lg?876^tOk4bY_a^NPZ9Zd=K|_5BGMDuHbWq;RqZxb%k}>nIF;{5AP+%dv%>j zO8YwZa-Dm*&b?gcUR}p$4#N>RYU(;01NZ3}Ul+YP{XVX6A6K}KE8NEw?$fjT9DjS| zK0UkXZ?D{^XMa7=i4r<>g?~~yQ|j$h>&W!_nNCW5Cwn?N<*A?Rh2@kd zpYQ!moy?SVGE>&cOj##0Wu45Fbuv@dNz1cSKK1pzOShAGu}0P>=dOFjy8=ZB2r; zvX7r-7}`EvvX769LffYc`*dNSF6`5VeY&tu7xwAGK3%fUbAfKz=c1Ud+P@q7bYq`x z?9+{Xy0K3;_UXnx-Pora`*dTUZtT;IeY&wvH}>hqKHb=-8~b!)pKk2ajeWYYPdE1I z#y;KHryKipW1nv9(~W()u}?Sl>Bc_Y*r!|e@w2$5?nXb|vX9fQue;GtH}>hqKHb=- z8~b!)pKk2ajeWXhpNj!~6;|IQ?U8-{r)d53V4oiB(}R6_uul*6>A^ld*rx~k^kAPJ z?9+pNdazFq_UXYsJ=muQ`}AO+9_-VDeR{A@5BBN7K0Vl{2mAD3pC0VfgME6iPY?F# z!9G3Mr$_ejvkXJ)r$_ejkx^*<^kAPJ?9+pNdazFq_UXYsJ=mv5_W7GYFZSt`eO^`C z_UXkwz1XK0`}AU;UhLD0eR{D^FZSuhKE2qd7yI;LpI+?Ki+y^rPcQcA#Xh~*rx*M5 zVxL~@(~Et2u}?4d>BT<1*ryl!^kSc0?9+>Vda+M0_UXkwz38VG`}AU;Ui8z8eR{D^ zFZSuhKE2qd7yI;LpI+>9M)r9~IDXdeQMdhp|tmU_sPqzir)R&$DYbQwRPWA+IzkG z)Z+DDy{EEIV+g*2-W$WuMy8&fV)*`=l1r>sR}v7Snqw`_zB;{do6xpY&sT z-*KNT<|}ypYM=DuwCnLcwY_Z_@2TvQJ#8_^}IBcJ9Z{{n)u5JNIMfe(c}RE*6zpJ{aCvnYxiUAeyrV(wfnJlKi2NY z+WlC&A8Yqx?S8D?kG1=;c0bncN2UGPydRtQWAlD&-jB`uv3Wl>@5ko-*t{Q`_ha*Z zY~HUpCfj0jf15o$Fd%EcEPD0zfUNDbXEz3z-56kYV}RL>0cJM_nB5p)c4L6qjRE4@ zfV}gze&zn%fV^XR_v-*28IUi2rL@;<56J$e*K7~S3vY^Evppa${95!Z#sISz1I%I! zFpDw3EXDw{7z4~=3^0o^z%0f9vls)+Vhk{gF`!X0=N^X%=(QpP%wh~Mi!s0~#sE=w zfT%k_)Eyw|4iI$*h`Iwr-2wUC&*)X+1M<7+U55kmyXoEi1H|D0;_v`|AHeSe_LF^nF!KSMGz<=7ZGcgLrn3+I&!@ zEUCZxokfH4*PEjI4ue>45bF(My+N!ui1h}s-XPW+q|O?o&Kks4gV<^iTMbfY4N_+f zQfCcPXAM$k4az3Y(S3(OEHH@v2c>!6xqGjJ)ZK&9ywmQ(4pMgyQg;thcMno`4^npz zQg;thcMno`52{>zH83P={D+vOdToe4?+~*FLyR*IF>5fS(s47Sim1>QMXMEY zM{N6V8z2dhkkBN6;PR?PtJbQo`z}^xCel`t$-Qxa7YSQOKvb|6v04bI5O!3+Dw+TH zckWDP0%6fg+xM+ApL6EUU7qEf-*cYlKHGt7U$UvBQ(Se~RLYL7YA>CsAWHXZFP*7i zNnCsBOeM6}oFF!{6I`PbLBgB~*Qi9$MkRubN_@ewMkRuVmY|JF1Z`9zXrmHA8$RHJ>{*DiH(~<#3Hk1VP0HxJD&{HYyRcQHh|9N(60GA_!)b9*s%_LC$ozMkRta zDiH)ft2x%FL=gO}fNNADhy-+xMkRuj-$ihZN(60GB50!$K^v6_+Nea(MkRuVuAq%d z1Z`9zXrmHA8pp8ldZB!y?qY^=Eg(Rj?i6FK@dDo~!5L+Rx zQHdbP)K!g21VN_KrcsF?$Q0M8M9@Yhf;K7<#FFTKjYp?=r3yZwQ1a{n{xv z1VY5MQ*H=^h^xgLvNl)Wp?HDMgPuR;#SkG*W6BDK(9hnnp@ZBc-O1Qp&7iSMPl( z8qrgF2Ps7(I@WF^rKXWm(@3dlq!f*;<-B$yDMcd+LA#NZq7iZJMpBAi^sL@NO3{nB z-a$&yi@4fIrD$XgTr0LpO&6u;LNd{AB&Fy=veIrOrPy5w1QqtKq-1u4c>^b=Im~LffI+9$;@m18+(~+d^ zABu06=}2-pd>H#VOlQyVFg(ZN$~8X9c%Jd=jE^>+&%SxnvASQve`$QY@rlMK8Nb2! zEyiy(ew(Fjip3~@-_x;OjEjI(r95P5F13^hfzu6v(+z>s4S~}Qfzu6pWk{x$dRmex zGs%>hWbj^sWXeo3WhR+2lT4XOri^`5mT^^*DKp8GnPkdLGG!*2GLuZ1Nv6ysQ)ZGW zGs%=uA1Ovjri}VXT#_lHJ`$H?%1kn4CYdtoqc1rl$&_JR#3h+BY9Db)rVI-+6E4Y= zfgEv3rpzQ$W|AobKTmK*k|{IEl$m78OfqFAnKF|MzWu1L)y~GZz0(F8SWX*&_9!#N z-hg*xPbWOb(DI>HpuJbl9?{qZc86XC@5){@e+mej46k%JIw58s67F)4!j5-V)tKa_g`i?y4BYv8Qsh_CN5Uc6<#xT9>1>8StN2 z?y~WxQ;zPGi(KQQjOQ7@&iH8K`LW}$Lp zvbrax_od&OtnM|L+{ajaIb%(k@CWeQUd~9)N$`glZ7IiUNso`%osY8HYB^S`0{*zg z_@qhlDbvN%CcS6u_*vsqOm5E^f8Nsnf`#*!)n;D8aAwk4Xccqk)yC-HEdW78&<=HRrzgD?80i;uo^b3 zh7GG>!)n;D8aAwk4Xa_pYS^$EHmruJvzYNfYor`5tcI~I>*2y`*svNltcDG%VJwWt zd0{ndSPeVEYS^$EHmruRGylyQVKt1M5f@g&*cp5<8&<!)n;D8aAwk4Xa_p zYM8q9MV=B?!-mzcVKr=64I5U&hSjiPHB1fr5_bx#VZ&;e8dj1NR>Rb=lAf>{riK+4 zR>RmyabYz~J*yan)iAZKBrmLnv7FoC!fM#C8aAwk4Xa`7=L*gXt6}V?xUd>FtcDG% zVOltIIU}s%tsUFTF8o-43J~=+Tx-}XsB!)XKOHSpQ1846?`!A#+3`8-2U`K6Hp9;) zwG|*rT-L9GUAb82V{O_B@T2orFekGD%&dW5WwFRpZ3SqV3m;=?m|*9xH$Kt$B;z+2 zzsdN`mY)AIev9#2jo*fqs6cB<&pj67Z;jt;{66DqkycoXw8C1X71koHuoh_rdQsY* zHvWw9XN^yZP38P^#-Fz|sCTG>T1+v@N>rHSD@^hgCix1Je1*vzPqdUBc}MO9mo;$B z8n|W+T(bsvIKvw7_JTEV%^J974P3JZu2}=utbuFRz%^^&nl*6E8ZdTFs$8=Mu2}=u ztbuFRz%^^&nl*6E8n|W+T(btQSp(N}=bANe%^J974P3JZu2}=utbuFRz%^^&nl*6E z8n|W+T(btQSp(Osfos;lHEZCSHE_)uxMmGpvj(nN1J|s9Yu3OuYrtLzSXbAqfos;l zHEZCSHE_)uxMmGpvj(nN1J|s9Yu3OuYv7tSaLpRHW({1k2Ci8H*Q|kS*1$Du;F>jX z%^J974P3JZu2}=utbuFRz%^^&nl*6E8n|W+T(btQSp(Osfos;lHEZCSHE_)uxMmGp zvj(nN1J|s9Yu3OuYv7tSaLpRHW({1k2Ci8H*Q|kS*1$DPx`s*DFzFg5UBjen*1(M; zQ#F@s*1$DufWKt0Du3;r;KHhBSoI96o?#U~d|;KCe_+)!ta^r3&#>wlRz1V2XIS+N ztDa%iGpsVh1FU+6Re5MUjAOO3Jj1GISoI96o?+E9ta^r3&#>wlRz1V2XIS+NtDa%i zGpu@sRnM^M8CE^Rs%KdB46B}D)ibPmhE>n7>KRr&!>VUk^$e??VbwFNdWKccu<99B zJ;SPJSoI96o?+E9ta^r3&#>wlRz1V2XIS+NtDa%iGpu@sRnM^M8CE^Rs%KdB46B}D z)ibPmhE>n7>KRr&!>VUk^$e??VbwFNdWKccu<99BJ;SPJSoI96o?+E9ta^r3&#>wl zRz1V2XIS+NtDa%iGpu@sRnM^M8CE^Rs%KdB46B}D)ibPmhE>n7>KRr&!>VUk^{nRd z46B}DwbE)Xyv0y+Ra(teX*E}+)m)WUb5&Z+h3`9Ru1emO-h`{>sSU^`W08rRmodY2(Fr|(rT_sw5Hfqb5)`>an)RvR&!Na%~feNSEbcll~!|A zTFq67Ue<7@YOYH3G8L|xs}j8^4XU{+t>&sU$yb`>D^2p1CizN}e5J`eViLv^4-$@; zgd-+lJfPAxh?s;UCgF%l7++gRIARixn1mxH;fP5%ViJy+Y$GPyh{-l$vW=K*BPQF3 z$u?rLjhJjBCfkU~He#}km~0~^+la|FVzP~xY$GOH<}xGOh{={YgXEn#gT^J>h{-l$ zvW=K*BPQF3$u?rLjhJjBCfkU~He#}km~0~^+la|FVzQ;5(qdGrAY!tOm~0~^+la|F zVzQk1cY2lDWDfHi zwgSf-f*hu;TM-5oGQ+afXfd~mHEM`G7mUaplcgvD&bZvzX z;;p2L8et<`esHR&7h-UY^;A(Kd;!<4?^VTu#*a3R|}W#n=0Di z;_`h{MLn!z`M#;5?^6OUO%-KUd6d_iDsUw(uQyfTN?cxVsz8^H<@Kh@ zyxvsNv;8Y)E_#o_H5S7R3*#D#`4c#-fR`H&8+VO+;^2^0tm!Li`ih#qqNcB?=__jb zikiNnrmv{!D{A_Rn!ci@uc+xOYWj+rzM`hDsOc+e`ih#qqNcB?=__jbikiNnrmv{! zD{A_Rn!ci@uc+xOYWj+rzM`hDsOc+e`ih#qqNcB?=__jbikiNnl<^q(mA;~;uc+xO zYWj+rzM`hDsOc+e`ih#qqNcB?=__jbikiNnrmv{!D{A_Rn!ci@uc+xOYWj+rzM`hD z*C;jHokj2(X9+r*2iJ_6C6uFuaLvG3LNBYhX5cKrZotvkJm+=pUjc8$SoZ7O|319j z&V-G-#yxTFUqO7d`rx$s;I#VS?PJXPRjUt9-x{1&ADmVnoW3$11;Ph9(>92s(Uje6Y4Nl)0oW3$32;Ph9(>92s(w+5$g4Nl)0oW3$11;Ph9(>92s(Uje6Y4Nm`Xv-oin=ZLgU@#CgW+q6^S$IYC> z)6R?^H+N1+8yr7w;WSGdA3tu%@s080R*lD{-4;J??R0ChGk)C0>DKhH_;Fk3xTdGZ zkJFv5O)rlhcXW(;^D*(`#?JSe-w;1;!ab4r zaZ{&j^AF?4&74!3$KuD$ovT{(h#$9b+O)VSe%zAdyW+>Kn$@&;IDXvP>DTVR;>T?` zu8beIbq2ND5ISkaR;YG`@7C796PZnFLzW);N%fK0(~-jXZ8$S zn^jO)kR3RAR7uI$vrj#BqW#SnnSE->#Ie~Uvy1a`3r_8k5g3@CAFxM@14Y@z*+t{C zM`pCTYE)iv;DW+}lE9UPIVBUain0To$j=**T~M4oGBB=SWOh-YWK?$G%8LdEE*+a) z;NLvhzoBPfXm(L?USUC?cSi4cVDV=aOxF0Uy!@=;`PqR9c_pI)S%C`%ULMFQIXe(f zY4M1nys;(48O3?|8HGi;r(Sx&;CNmx&dSNj&MwX>nM48$t{rlAJd?@uy>#JhlfYij z1avK#vdqjr{w;evz4voUbD*RsYh?DAtfJ9@!kl=t{++2jkPIs@A*(o$lUGz+5*Ryf zcz#~-CRK+-Z#4`dZ^TpSPPq{MyMtD>x8XG7n42%^32)86}Om=ZbU~txm(Rl^Af#U4^9HJ=5$s3tnFe2L$Kf0iB zLVmWM&l+Ahjz@?>2@WV_*$M28%pSorBQ0!S26kgk)|kBfi6n#E7LjfrPFaETin6mx z^2TQe&MO=i{X8q7BeP1fNmk()$*MRoA$xdn9%r)h ziKD0GePZFbz=*5@p|>ErxHwhkl0UHjVRq3NZXk2Tqk2ssz@k9z#4*J^1B1p5&&mso z$)e1SC5l3T1rmm2PYC=tJ1bwumy8%xSdf)J5>RA~Lbm6MIYRKf#UMTLmhB$Jz8I9$>&44x$!6=hE-EE#vac_}z6bzWMJ0J7K<@B~fosQS7Y8oOMux=_tyFBWW@D%J zXWI66?Z8&+E0`iPE4U;rWDCTJP7#}*=dzJ~2}3?7^V-yd-#!eg^@e(Ke65qkwx@+q zw%wsSOL+2ZwwXJX=aW}6aJ!MME$BEqmLvTuw$KYW+k>T90oNnzH)wCQ_3{F0yzoA3hwexY_t4A5gq6cLn{Tm&%Z5yG z85XdR0XHYeL@6rb$srbNs%9H{zE|DzN@D^OsZRxPhPl6Z8uAmiGxc$t8s@%^_mwwcPpHg6D@7a$mt&EwG_7<9YeHb2p+-{6 zWV=S`T8Kb4n^eHzZ?3|Au;jxe$sYFVmD$Rx9N0J@OwTWgI*dmaSeRL;EnC|e86XnjA zLJrTX1S_WDgp)@abK{}=Wi!{pR&0gbGnRXNi{O|05}p`iXO!E)mh;h;uU!5so%yC? z<)Xl3rm|mP@<~d5G-nDaiAr-Kew9$=RZ>ahA|YXg?8{7YNYz+?=d-z{eE8Zz=RmZ575zpjGQqKt_jI`7%U6Ph$;7ipn@e_z=IO&sZ)je4jlky=8o+xn> zd2Ss4N7$K!E!JJdeD_t(6Zn^00ysQYU7|eepRYMdw3pRIid`DTnGW|9TkL~~b2#_s zabC~)^`4NeTohW&i4+dudA9Dv$yT=AnK*w5X&%JA1$K5M(_55Y$zAn=bne>}UuQzU zwCa~zKi&1qbs}6Lu+Tyg4peWb%*mdNhUb#z0(eq_lALUVk1)wQ*W{quL~;75NMI({ zv>+5HjThOSz8yS^|2~d{{0Tf;M2vn38bdfExVk3-6Qwa>?~4vjWi{V$RepOzW}Z}Otrppe67hOi8tj{Iuj0* zV;`wWyW{7>x0KRQfIF@?M60YPEPzs_@-YJGDum&d#%rxC2^E)d*2kg#`PxsUI+4c< zxJS~?KoVcC7581sD zK`Z*R+u+|J9ls9k=}GFym~Lty{U*#qnU69y_#pzr+F3)v~%bQAHdkc_vs5imkMBzb3Rb}A!Cgf zIX?n$gYkGhgvQ`yG$rx$OJfahsH{*O1^|DIU%sC@{|`TVteaxp`MvC|!Teu#sA%kb z;JoDg&iRA$8vXZw1V$t1=NsuP1{hI#j^Ch9_;p7f<(4~dI&V2IQ^2;eXTv+r+s>a6 z)dqGtxekHhDFq-Fuu8CyJ;-I&iYYK9z>!^m+3%B`RoTDoM&}jhIp@Eeo7o}kR%au< z+<##%Ynijw`H-=xj~w+%u5ea6e|6q>G!rvS&p0EB%#C5*0XxP_a~3iN^r|xp>EGjQ zNo(dX4wTkBtwmbPv{q@Y)7qr9O-oN}m)71{?^HW$=)e2K*`C(H`IO$f9nLy>@s7nv z{)|5VEc!-&<=oDWH+MSs(Wm(!YtC7n?L5KC*{4|7`V4DHUtmqjROa+|Ogl{DaLzLN z{oZr_Mi1db>}pWsY<4y|P0|i`nl{ZS7?+=)J~q23uW+P#HnNMdM>ge!JGZ#W`QwTT z8|CCQ&dJGx@*9`@d{VRAjN;{Brf)XCx%p$w|JZy^ z^LLuBYreUK(_(6i-?y0EVt$K7E#7Q-Ov}?-*0#E*_04TAY*XF#uWh%t-PN`>eOSAU z_TAb)(_wOl%^inzy!Wub9^Uncew~l#GPp}^*Au$l*7g3bUe|R;r62XvqY93?zuS;* zQ@YLWHox1Vqq`kF>6oG|h`8QeFji#-xld zGt+wq`t<43@3g+BeR=xaGj^R(+c&fC@V*cAUD$WmnWvmta^~DK*Y<1HFSFl|`{nn$ zx!+^`%KI%jYxr5a&c64Y6V92@e{lbw^&i{+?*1Sw@a2@^4CjhhWviWj3FAk z(u^9-TGpIp%~;k<8qK3&JjLeFXr8iWDQk|h<{)eKrsfc94yI;cYVL0~vne(2SF?UK zk5aQJHHT6&C^dgl^QAO*QZpwt$5%6aHNRK0do{OLvn4fGQZpqrPg1iaHAhmjc{M*$ zvm-T+SF?CEhgUOrHGfyLcQtocGj}x?QZpg%$Kq+muIB4%wl3od8conxf<_WFj$m^~ zH0Mz>9yQ-lvmG_pQ8OJi&r!1+HOEmi95ugDvl}(HQL}J0j;J15#Rxl-Roq`ZdRQvM%Iqp8XBuubO4>TYm55+I`Ud)FS`Q zJr7di9%A*x!{qc4)=4~yq#r|K@|p7_W3}>{^EA&r!?|Y}#h-%Kp2O-r&s>uiSn*a$ z99lJ3W^=bS3$zpau)gQ~5BZvnMCJWvE@+wuy+(M8_`gKsf82uwK{Dk~7;1}*{sQ7w zBa1h7DY96KEN&)0tjNJj_-xXpFqp{=g`pnQk{xX>h-TAhhNot5 zY8H&10jHNXEk}ylCbH-6C`F3g>2-*sQJ_bQMog2CTCRSnHN?YwV+Fp}c(Q!K^ z`3`>NkNi&1c^CS-oAmyMdH45#&)*XFz5KtA-}`Bc{WteLKnw0co_~mv_Au)fAL06= z*tf?hjgRyD1S|QT#6~^E^H1~t8SKon$Y~1C{*L@S4`Q`8@kP=!75N0QE+N9wULMnV zwu~7j<;a24Im3)`NcXMeOgc}q3WMV?r2F3E z>D8Qhk2CMl4j4dsIZtQiAaQr=9cCav9(=YUuS`kRLSrlG%S=x-YOn}+_Tp|@%1 zZ5sNThOVZet7+(J8YO%hC43q>T8@sEqod{MXgNAs9@o)w^z#<_c?*o!W9% zsVzq@%hAVj^syX$EJyy!k$<9WPDAF)k@qy@z1&j2&T_S$bbd*$SdjpwnJmP+*>O7U z_!jcQ%&dr9XcUwOT?dVZ#zMb@#zPaKNze_@Ezqsdi%Aq{y?Si(-ISxa8 zIQsk6`T(to?ztJFxZ!)*4Lh3#@hFnsKE0Mw)G; zxkmD-ERV|arz~&E@}=z85;e%C2HCLx3G$QY0j>L%?_{m{)*4B9O_tAOc}$kSWUYgI zmGsCvvV0@YgXTl>rYmpATJfkg+{crXS}esnr22QHR*TeXkyK{r6RK(|7-LCV#`)FF>Rk3x?@k3&?6oSO0@+t1d*x<3 z@@GvXwW>VW$$y=^*U5KX1r&j1a<5-guR#ZE(7_sXum&Bdwq9dMdKdYt^l9Y{ey}N< zxzH#m54sK-4dr7M$MXA2Xgo9#ngrbd-2&YT-G&S&Q{UbW-2wd?x)Zt!x*NI|x(|8) zdJuXDdYCvLfwVqUt3$OmRCA&5W`l-NZ~e8$Zk8du(U>1 zEd!MWUl*(`#0F~Zpw?u4&r;SlhIck_+<~XMgSi2*EK<3SRN_;e)@Lp>3d)17gGNL7 zvB}7M1~Q+4%x56;8OVGFGM|CWXCU(#3IZt6nYGL9MaA}Pm!Cap=Y3Hp($9p=b#t3{vvVO+Gu{YE0A_2 zNzH8q`HVm_L3mTMT(=>wDdhS&D9Ev_rQQo=Gmij!@7ezW=rD&ka-mUB9&{Zv8p@{~ zI+ovGLgS%{&?M*v=oaW!=tU?5RWSQ30-b@>TUrg&9xIbc+`etZM-VA%$Tsd@l3S7F z79_a^Np3-sTlSD-4U()uk~K)O21(W+#cfDYXii{d5i(d5x1BX6#Zt6TXFEwREBVZJ zR)O-l&^%~9v;c}i=U^{$$W<0HJHo8fF~~m?x)i-#M$I$^9Zx`(*FzJbNze_@P0($; zRZT`lw?lV8zlQFF?t<=ywBlat?X}uoYwfkt{sGQC2t5QnjIJJm9)%u*9*6d}QcKC@ zQgW&Hi1*OT26DO{&Ho;}tS7e*gO`UXzd6|69CEt=3$>WsE+)5&$?altyO`WArX481 zOs%QUd<*p^2w4Y0)`5_9AY>f~SqDPafe_WL>p;jl5F!bDjs!kO0_%{#IwXMS1pdoU zkGx39hm>jy?Y<-LQSu@n&r$LlC9hElt8x}GPo~^fQD#*~^+3)mX>IN%C0bh;CM97~ zqE&@jQ>Yb%*OC&gBh<=4trgTtL9G+i`arD?WNjcVy8YJ{YZ@rGskO!4dU%p_C6K0) z=F48|_*Ck4lDn12e;e|jkNoK;BVQ3{Cg;1FoZE6VfHsb1XKQY@W@c+%wq|8(PPQ-O z4diSCIom+aHjuLo<2F2Ax9um;yd6QN1a z4bV-{ZOHc?TIs)q?uG7y9;QU?S;7)l<$0cYf$Kq@o354MP+Q8s-WPTg+Y0Q@N>C}A z+=w#P2*g!`xM~nr4dSXnTs4TRrZ2PwEjS->FQfN2C}V%%%|tEKw-NUI8IRUxe^q*X<%s*qR}`E9u6a0}ONg(ef;?a&?2uc14k zyP&(F-^8@@f_B2tJ{Z~sBb0p8V0V}Yp@%s4FugU8K#xL?L61XEvNrsw*wa`edMlx4 zp(!!#5cni-8Vlkris#T=6?oAe0-80hT^3$OmMDK^|& zvV@+a*U9^(NV7F1=nZS*cR>E#c}K_u9|L$Vycp|pDep0taW02cx{3d{aP3xTGA-oWp*x^oLw7=VL3cyHL5u$T+9IU5 z2q`XNuNiu&p=8bYE>c{96jva{6-aRfQe1%)XClRSk>a~Z@m-|&Ze7jzJDz_YdV%|1 zBn?xs)ggXM$>Vh5D1*w8MHs3;9ua6J_spVXCg0C$!D1~~tObj;^w+DOsV#T4N0uE3 zUG0WUEY<*8+!ym^cPVee+O=iheJW2Oz4b_MDbibt^p>VbPj9?ikse-Dpj)_hE3|*< ztwMSqfx(ZE-bYC9BQQ7!$-N8y-UWY>+$tou3dyZPa;uQsDkQfE$$gCEK1OmMBe{?3 zBV^*BqdOMBZ=-(* zX674ak~pcK)5$!2J9G!+zt7i#k6Q4dH;5W?xMw|IOYUmPT`jp|zhUT6=rQPVXzv>E z4N8{Y--UlH%(r!)Kt4TXGX`d$T(xg3_L9nY1&L_GQwpOxlx4J2GiM zChf+gy_mEUllEcKE=<~kNq!;Z6~gb~n1htm6Ba>Ii;xuictA{cq+OM?r&3R()(B~-t+&=n#{O&BhFUwRwQNJZgY0KYOxi(6`v+4dKcbT-`+*0=VV{-%gbPdE`wc`GH8?B zMH}xf-jPq_9r?sPdaGL!M-Q~HjDE^o8@KArTh5VKp04OKla|G$v~1guBK9_=U84PI z55Pn2WL={*Da1F)3x$Dq}CT8pP$nMUYnn`9zRMgqc`HR@LyPbwBBT z0Mdv6gJ_h~_Q=xw6ObB7dKdzr#r#o++Tc+mV})-zMa@3Hfb8ew(PD zw9{=G;~#0rQaetyL>`|Yk54pS&znnoWT!Q3TESM%|1h)!{pl^Xv+*v}Q7vd23Zcok z@dQB{68#x`zlb~lX#fAzz7XyEuU-GO z=f8IR*M9$rl>7Z2?9Zb;XrKg^_f;CcLyBHZNm06U451C6-q@eDPT)Va*Q|b@QQ|H8 zQzZ2%^@-mzR!&@DD48l&B_iv2(0phC6on+Yxk#=(`CzXS=t$0dg4EDH7JNW_-03o; z{2O$notU);ns#B<9?T8(7ClKR_mTa3^vaGzaZFWk9D(%ir4soXu^x^*carj*pg^N; zT53EHCLG`e=HIyBXWm3u8NE$vR4WE*RPf5e4q~TN2@EQ2}419ftwmw5!pEXd@ zJ|l)d5CeN45w3dclf8voO%7G0r!!YsFADV{{@0Pi66COs_;*=bWB~R~JH~3yIo}d& z+^_z8>rh{2sk&@Pe%c#OJHu&TIPD7Ozt^g#jUDdLZ(SRa^o5}c(inke(zB^l&nDG> zCe<-gEQHOqoun`3IGN)8^$&i$mzGn@L_;ZllGf?osooxMA1Kx8FYf16`TCaQeGCv98_U`Zd5LvGw z)oYM7_7J>Hk3B=GpCQ%$c+O0)UBwvjTxcFNA6fuKA=+WoByDLmwkPES=$r9#A-S)i z&PYWH-ks2<_B+>Z=YC(gdM)>b6#Sd;{GOw>ey`=8XkjN~?)A|kxxY;g-X;frO;`$Qv7UvmCSo%65I{@3wruri&V)G|n|hc|d5Sj!v1THXlO z@hMtLX)5ypj)6@p%k6g(dNzj~A@H7DKv z&*bF)j!usGKckax(e>{!uKaaI12sZh|Lx^KwSDp}Ceijh@Mz$F-Wc=O(Z${!Mu#sH&F+$b2RBX*wU_C)L7k? zYWMtkT3>e#>o<{$8gju7hzD7dCB|y;-@<6cw_~;JfXO_R1C7CKhixy5W`{ZXZ9>m-t*TXlw5@`%7)I#{4?-HV(cXIgRr11v;re#-SP3YO!mU^?~{%|FND2e+IYT- zM7furQF$4akI`hSz2O<&iIr!m^Dg{(J$uf(__keNe-7rswd?7_WhRO|S!y0;{r5V5 zPUeA7vi}kIZ*IZi*|JTO;?G7G?Vh4|JrFtl& zda|v+_;=o)<6FHS3cY_T)k7iGfB(|N&K>^?_T|jH9e;YJti?EnH{!%vj1hHfF%HE#46RjbXbr}}tiRAq z1@)i!Z&Z>!o^v7j`N=$BZVuJT5`XpGKfby|`C)ICcz==p;f)uPmz#tYyr1`;Z}(dJ zruJG(%lMRDJ?*fW&MuDK&0C~=MarADd}+&*w)|-0=|>)Z*!7{c`E-;o;Pn4d=Z!j>m&`4*OEVR^J|i+`hy#JrRk zuP4UMw0AbMZ_-BAR&Hk2#b(|;HuLVWnRk!P^fzs0RClwJmT|V_AkX=0T1MKSv_~3U z*l2vC$&DUpG^NoW8_jC8y|L4{RpS#H4{dyZ<0l%=X}qY({Y_qK@@A6{nyhW|_om&N zKG3X1vzwcJ+Wflat6H4c;+_^uTefd`cdI6?(p#O->g-liTGg~Zz4eSXKWMYC?S*as znBFOUYWno_chbLXcU-$c?XGKgXS?!t8{0Q)-?RPD_P4Zuq?O%slxU; zLXHQ6%1f{SL-@U%-z(@FyOOZ4;@Z_54<&WiFl%NQbL4(bYDRKRy9xaY^gYMD!D4D z=j}c6w!xP+(z=lSX@~M(J3DFDCYL;V@(jjrIw{+X{#Fv^2A*C`EHyk`!_z_pdpU7^ zD90|S@t{h}?+((_irsQAWCvV!;U#_TSOFSfystmUa+Tm>O*{xcpTu;R?vEp~HyDvu z+1=n{8S&x$ob@n$(MUfm%|I;Cxx{}SaSkF~=hH&CkeppY+O9y)SF(ciDxSF-JYU1} zV+d;kzt=+(p-IpU&`r>7g!dc5yN9s+y&bEWRZ`8$m(`S>)s&vql%Ca;p4FgPD~?t% zt7H|kN>(weWEJ)AGO)A^`?HLawHoQkue`srU^7y)nN)m1Dt3_D-;-PXdGRZGtV9kg zN&il}V<>lA!<{ZG4n2A6;#cUI%Rl^M@vA)k%u20xkXyyIFS+(5*S@q~{FdlvEmpWC z_uY!#*K)@j+<})jevc-`jrfau6UlByvfGes4U&x_*#$^;DUyv4?ndVajK2?r&Lw5? zzBq_;^0Rn3=dPdxU&(0ERY>+~a(oSV{5fUhNv^x>Mdm?sh~rPO8e)Co+gQJq@HdF2 z4&Zkswov%o20phMKF?>&U-gfCeqPP-Q1E>Xzr(<<>K}P$m)Gk#vP%3ONhl#~Q5q$o zmXc6obxd<^Nn>RyPqtMLdQz#E?b|Y1pweVv*N9 zjjkorskCd)=l7%iAzLgvJd}HrHS2Qh>W*(Pq+{!)DIoVrB+aW7+HN;XA zkEO;r0ZGn8l1pe?e?Z&%1InI!pQ{a|GWZH*aEsFiNqwJo_dwc1=hA{Zk9!8u+C85+ zE4w1PtLF^>V_zg7SMMwZT>Dk${HMHoAu0K!(va%IEnfx!2`=%7ZGY zapuHkVrx2CD>p{zj#(>k4M%H;YX{-2C5*ol#xAt-2XcXTSANx2{E)joY~ZdBxC_s* zVp%|n7wmPH z>SUMq7EeBC`PI8c3=J(dc?`t*`8DM>B>i{%Wuzg+zw?CU00}NeuUjoA&3JMnPw5?4 zZR-eO;-8pbJ@LqXLw z(j;|t;_X}gDev*bdz{7Bdko*~{Oarm&Tgo8RvPn5Yn|44PshtQ&&)G@uI8E5No}XR z2OdUwd7FGKBxO6|Hec_;>q(*7s~fRUo3K#A{$?zc-)bAiu}jIN1S6qol%=7SgHyro>zE7s&hzJmNHp z*GXTX-*oCDU-PnEuW`p~RZ-xx_R(=147tUbsOYY!^K ze{KJ}Vpq*~u)Y7UQont3z5idQ4|;;(>;r)P0BI{>Ywe^>QKI;Bai$Lai*L35zP&{_#L@Gs2m zZB9v1KgkwKiu&8^6Z~t)wC>rh0RjCNxhff zbhxds2K^!R`POh$W9_!pJEht}rUwpcW_Aht9XiS3MSjJ*^4B(^BFEcRAx zdu(g$v)B`{mCzHhHT%K<*IYVKO! zP-=MoT|#!d@J|XNNWfBBy&pHazqV%lBrGV zt)ctA?l~~LKK8yO8QTH=5BTx(?BB+-t703F&N4K(h@5Xx>7&=aCEQS!NOKBaO=tU# z1{trUWc@x?1y#ou6Lt+}qDXf=7=JI86MG1fuNFSU`&nvOq~>5GUri|>wW&`M)^-bV zhe-l%|2{|i>xgBw@GN{D{0He+8A?1sSzD(ww3Yc7epHsLW8v83*gfQQ13SCd;Q$mj z__6Z8RTh9UkCjM#3`4slZ$@$IJ}DTBQ4@USk6-?g|Ejw5$S0uuV%Gaus`ij)y&LNO z2rG#{v8Q4yV)J89$4X<&>#@*_u;{JnRcQ@3`C7Uc#NJ?EHfiDw_`B$O9{pJk zPp#(PDvq|s?V!S3pAtUT>^`AsJu>=;yE|dq7?O`mPUUJTS1S2kXJNeyon*874H-^3zp^+7wf0H_626wAIY7kqber0T}t|9wB zBcavU=SH;1!B3rK*px^h*Z9=8h4pijxHI{S&06dKOOyrPNS)X;@%Z_=`j`Hnuknf3 z8g;c2?KB6u!Tpcr&Qi{KKL-b_AM2i#rmb$(88Eah_ILE)e`P6zp1PP5Pkpstzy9z; zq4j0f2OXLXvRLD3|2i?n>p!Ki1J7?G2cIz~;tkq+zv5bRD+485p?0^p62Hkfzu(=VS0pVkKbLVRK$>X-KaCSSky^!~$N&oi4OVZ!{7T5b!!@5P>h zu+E&_2qkN4|NWvinPaY6`O&=%efCH{wL9{eAA7r=eOCITdYW+gReBCO{VKaAANXdh zGr6VxwE$XXAu9c}u>4O#Pn@fh`Tng_;>pxs#V1@N!;iT#ClEWG*f?G(G6cFB6$ z$FpPq6Z2^QJ)5)(3O)898tBBVQinNTj<0jxWoIx?)IPK?A7YMZ{F72=KR|nArL|lr zNj$j3{zUA6bG!EuTXk{-Kdip~P5cDe<64TXXSO5bamG6)fnDFlpm!Xt#Y{7eu$ZBM$sh z75f|a$KS5wZyxr3oO);SnEC_TcW6Ge_$l@NM`a(I@D?b2lQ$y0ZSd}bZBD+w$U?+x zL;uYhG_Tgv)-Isz#6Oh3gZtQ&JyQ!XKGp#`Zv{M zCO;jm;a%WuiB~%%HKzBr3+>ykd|NXwxf^p!kCBHC(wxb-;@PCCJ^iQ`An}X&;sJy2 z5v1)WJeiGWlp~#D@_8aDyNNkRN?Rsrd(Qb0IW8r&)A0i^j1+(V@MYD@P| zNcT&mPm;ZkbVr;bXC|pHW?X9y-kl}c@g~#jk!cHOH!18xy7c)j8k9yG`t&CCiH~&A zm|okas>m; ze|p6A-+`1KX>lDzZlsHbK7Ousr7M&czon7=Chf80APRsF?b6y5xiv$J8JzRuI2K8# zgP3+;=6J(fPq>4YPXa9`bLAuuso4~*tt_`i>ZzZ@>;9a;k;;AYn@CmNEgW>I`|9}A z__rDQIkw(6ofP@s@1ie#m7c^`)+T|Yw&?x4gr&V^dsyy{BedkFqhX>GI6e$~b?1U) zdN^qIKf)gSY{dU{j{pAif9O##J+^XwfPH8b;Nzs{XO$En(I!d`wSAhEbN{%d-LEpH za_^VLo=I7-)7mUg)E^!8PnB`niT%6h483ym;{0x4YGZKEfa~=E)XDqxg z9;wvN>8C;Q=*a)C*wctbToxvc*u*8XG_y2mhL0|2fEA(CMnAw3%4Yro|5rkRd_DUi z&W``T(DIaqrS(IQe;WV&amx7{ooo4bBP5U5O`L_KcNj-w?Tl*9 zHns!P4{Z;oA941l*yuD;HW@yYYdY5cOqY?mCC*}Mk2I{wwVb(-r=wWsmr~9vo<`1V m)HIA2Q5T78rd1l=1;w?RLb8$chS4XqkfUZ?JD+>)|NjT*;l)<~ literal 0 HcmV?d00001 diff --git a/docs/_static/haiku.css b/docs/_static/haiku.css new file mode 100644 index 0000000..615ed47 --- /dev/null +++ b/docs/_static/haiku.css @@ -0,0 +1,406 @@ +/* + * haiku.css_t + * ~~~~~~~~~~~ + * + * Sphinx stylesheet -- haiku theme. + * + * Adapted from http://haiku-os.org/docs/Haiku-doc.css. + * Original copyright message: + * + * Copyright 2008-2009, Haiku. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Francois Revol + * Stephan Assmus + * Braden Ewing + * Humdinger + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + + +@font-face { + font-family: "Museo Slab"; + font-weight: normal; + font-style: normal; + src: local("Museo Slab"), + url("fonts/Museo_Slab_500.otf") format("opentype"); +} + +@font-face { + font-family: "Yanone Kaffeesatz"; + font-weight: bold; + font-style: normal; + src: local("Yanone Kaffeesatz"), + url("fonts/YanoneKaffeesatz-Bold.ttf") format("truetype"); +} + +@font-face { + font-family: "Yanone Kaffeesatz"; + font-weight: lighter; + font-style: normal; + src: local("Yanone Kaffeesatz"), + url("fonts/YanoneKaffeesatz-Regular.ttf") format("truetype"); +} + +html { + margin: 0px; + padding: 0px; + background: #FFF url(header.png) top left repeat-x; +} + +body { + line-height: 1.5; + margin: auto; + padding: 0px; + font-family: "Helvetica Neueu", Helvetica, sans-serif; + min-width: 59em; + max-width: 70em; + color: #444; +} + +div.footer { + padding: 8px; + font-size: 11px; + text-align: center; + letter-spacing: 0.5px; +} + +/* link colors and text decoration */ + +a:link { + font-weight: bold; + text-decoration: none; + color: #00ADEE; +} + +a:visited { + font-weight: bold; + text-decoration: none; + color: #00ADEE; +} + +a:hover, a:active { + text-decoration: underline; + color: #F46DBA; +} + +/* Some headers act as anchors, don't give them a hover effect */ + +h1 a:hover, a:active { + text-decoration: none; + color: #CFCFCF; +} + +h2 a:hover, a:active { + text-decoration: none; + color: #CFCFCF; +} + +h3 a:hover, a:active { + text-decoration: none; + color: #CFCFCF; +} + +h4 a:hover, a:active { + text-decoration: none; + color: #CFCFCF; +} + +a.headerlink { + color: #a7ce38; + padding-left: 5px; +} + +a.headerlink:hover { + color: #a7ce38; +} + +/* basic text elements */ + +div.content { + margin-top: 20px; + margin-left: 40px; + margin-right: 40px; + margin-bottom: 50px; + font-size: 0.9em; +} + +/* heading and navigation */ + +div.header { + position: relative; + margin-top: 125px; + height: 85px; + padding: 0 40px; + font-family: "Yanone Kaffeesatz"; +} +div.header h1 { + font-size: 2.6em; + font-weight: normal; + letter-spacing: 1px; + color: #CFCFCF; + border: 0; + margin: 0; + padding-top: 15px; + font-family: "Yanone Kaffeesatz"; + text-shadow: 1px 1px 1px rgba(175, 175, 175, .8); + font-variant: small-caps; +} +div.header h1 a { + font-weight: normal; + color: #00ADEE; +} +div.header h2 { + font-size: 1.3em; + font-weight: normal; + letter-spacing: 1px; + text-transform: uppercase; + color: #aaa; + border: 0; + margin-top: -3px; + padding: 0; + font-family: "Yanone Kaffeesatz"; +} + +div.header img.rightlogo { + float: right; +} + + +div.title { + font-size: 1.3em; + font-weight: bold; + color: #CFCFCF; + border-bottom: dotted thin #e0e0e0; + margin-bottom: 25px; +} +div.topnav { + position: relative; + z-index: 0; +} +div.topnav p { + margin-top: 0; + margin-left: 40px; + margin-right: 40px; + margin-bottom: 0px; + text-align: right; + font-size: 0.8em; +} +div.bottomnav { + background: #eeeeee; +} +div.bottomnav p { + margin-right: 40px; + text-align: right; + font-size: 0.8em; +} + +a.uplink { + font-weight: normal; +} + + +/* contents box */ + +table.index { + margin: 0px 0px 30px 30px; + padding: 1px; + border-width: 1px; + border-style: dotted; + border-color: #e0e0e0; +} +table.index tr.heading { + background-color: #e0e0e0; + text-align: center; + font-weight: bold; + font-size: 1.1em; +} +table.index tr.index { + background-color: #eeeeee; +} +table.index td { + padding: 5px 20px; +} + +table.index a:link, table.index a:visited { + font-weight: normal; + text-decoration: none; + color: #4A7389; +} +table.index a:hover, table.index a:active { + text-decoration: underline; + color: #ff4500; +} + + +/* Haiku User Guide styles and layout */ + +/* Rounded corner boxes */ +/* Common declarations */ +div.admonition { + -webkit-border-radius: 10px; + -khtml-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + border-style: dotted; + border-width: thin; + border-color: #dcdcdc; + padding: 10px 15px 10px 15px; + margin-bottom: 15px; + margin-top: 15px; +} +div.note { + padding: 10px 15px 10px 15px; + background-color: #e4ffde; + /*background: #e4ffde url(alert_info_32.png) 15px 15px no-repeat;*/ + min-height: 42px; +} +div.warning { + padding: 10px 15px 10px 15px; + background-color: #fffbc6; + /*background: #fffbc6 url(alert_warning_32.png) 15px 15px no-repeat;*/ + min-height: 42px; +} +div.seealso { + background: #e4ffde; +} + +/* More layout and styles */ +h1 { + font-size: 1.6em; + color: #aaa; + border-bottom: dotted thin #e0e0e0; + margin-top: 30px; + font-family: "Museo Slab"; + text-shadow: 1px 1px 1px rgba(175, 175, 175, .25); +} + +h2 { + font-size: 1.5em; + font-weight: normal; + color: #aaa; + border-bottom: dotted thin #e0e0e0; + margin-top: 30px; + font-family: "Museo Slab"; + text-shadow: 1px 1px 1px rgba(175, 175, 175, .25); +} + +h3 { + font-size: 1.4em; + font-weight: normal; + color: #aaa; + margin-top: 30px; + font-family: "Museo Slab"; + text-shadow: 1px 1px 1px rgba(175, 175, 175, .25); +} + +h4 { + font-size: 1.3em; + font-weight: normal; + color: #CFCFCF; + margin-top: 30px; +} + +p { + text-align: justify; +} + +p.last { + margin-bottom: 0; +} + +ol { + padding-left: 20px; +} + +ul { + padding-left: 5px; + margin-top: 3px; +} + +li { + line-height: 1.3; +} + +div.content ul > li { + -moz-background-clip:border; + -moz-background-inline-policy:continuous; + -moz-background-origin:padding; + background: transparent url(bullet_orange.png) no-repeat scroll left 0.45em; + list-style-image: none; + list-style-type: none; + padding: 0 0 0 1.666em; + margin-bottom: 3px; +} + +td { + vertical-align: top; +} + +tt { + background-color: #e2e2e2; + font-size: 1.0em; + font-family: monospace; +} + +pre { + font-size: 1.1em; + margin: 0 0 12px 0; + padding: 0.8em; + background-image: url(noise_dk.png); + background-color: #222; +} + +hr { + border-top: 1px solid #ccc; + border-bottom: 0; + border-right: 0; + border-left: 0; + margin-bottom: 10px; + margin-top: 20px; +} + +/* printer only pretty stuff */ +@media print { + .noprint { + display: none; + } + /* for acronyms we want their definitions inlined at print time */ + acronym[title]:after { + font-size: small; + content: " (" attr(title) ")"; + font-style: italic; + } + /* and not have mozilla dotted underline */ + acronym { + border: none; + } + div.topnav, div.bottomnav, div.header, table.index { + display: none; + } + div.content { + margin: 0px; + padding: 0px; + } + html { + background: #FFF; + } +} + +.viewcode-back { + font-family: "DejaVu Sans", Arial, Helvetica, sans-serif; +} + +div.viewcode-block:target { + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; + margin: -1px -12px; + padding: 0 12px; +} + diff --git a/docs/_static/header.png b/docs/_static/header.png new file mode 100644 index 0000000000000000000000000000000000000000..2aaa53a13996a7bcebbbf9561522920923d822c3 GIT binary patch literal 16588 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 literal 0 HcmV?d00001 diff --git a/docs/_static/images/arch_layers.png b/docs/_static/images/arch_layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee183bbebb92fc541b3430e7cf3f868c4cbefc9 GIT binary patch literal 27645 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 z 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 XlUq-$3D43a0Dp4Q%2LG=MxXu{9ikFS literal 0 HcmV?d00001 diff --git a/docs/_static/ir_black.css b/docs/_static/ir_black.css new file mode 100644 index 0000000..f04bc73 --- /dev/null +++ b/docs/_static/ir_black.css @@ -0,0 +1,70 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #000000; color: #f6f3e8; } +.highlight .c { color: #7C7C7C; } /* Comment */ +.highlight .err { color: #f6f3e8; } /* Error */ +.highlight .g { color: #f6f3e8; } /* Generic */ +.highlight .k { color: #00ADEE; } /* Keyword */ +.highlight .l { color: #f6f3e8; } /* Literal */ +.highlight .n { color: #f6f3e8; } /* Name */ +.highlight .o { color: #f6f3e8; } /* Operator */ +.highlight .x { color: #f6f3e8; } /* Other */ +.highlight .p { color: #f6f3e8; } /* Punctuation */ +.highlight .cm { color: #7C7C7C; } /* Comment.Multiline */ +.highlight .cp { color: #96CBFE; } /* Comment.Preproc */ +.highlight .c1 { color: #7C7C7C; } /* Comment.Single */ +.highlight .cs { color: #7C7C7C; } /* Comment.Special */ +.highlight .gd { color: #f6f3e8; } /* Generic.Deleted */ +.highlight .ge { color: #f6f3e8; } /* Generic.Emph */ +.highlight .gr { color: #ffffff; background-color: #ff0000 } /* Generic.Error */ +.highlight .gh { color: #f6f3e8; font-weight: bold; } /* Generic.Heading */ +.highlight .gi { color: #f6f3e8; } /* Generic.Inserted */ +.highlight .go { color: #070707; } /* Generic.Output */ +.highlight .gp { color: #f6f3e8; } /* Generic.Prompt */ +.highlight .gs { color: #f6f3e8; } /* Generic.Strong */ +.highlight .gu { color: #f6f3e8; font-weight: bold; } /* Generic.Subheading */ +.highlight .gt { color: #ffffff; font-weight: bold; background-color: #FF6C60 } /* Generic.Traceback */ +.highlight .kc { color: #6699CC; } /* Keyword.Constant */ +.highlight .kd { color: #6699CC; } /* Keyword.Declaration */ +.highlight .kn { color: #6699CC; } /* Keyword.Namespace */ +.highlight .kp { color: #6699CC; } /* Keyword.Pseudo */ +.highlight .kr { color: #6699CC; } /* Keyword.Reserved */ +.highlight .kt { color: #FFFFB6; } /* Keyword.Type */ +.highlight .ld { color: #f6f3e8; } /* Literal.Date */ +.highlight .m { color: #FF73FD; } /* Literal.Number */ +.highlight .s { color: #F46DBA;/*#A8FF60;*/ } /* Literal.String */ +.highlight .na { color: #f6f3e8; } /* Name.Attribute */ +.highlight .nb { color: #f6f3e8; } /* Name.Builtin */ +.highlight .nc { color: #f6f3e8; } /* Name.Class */ +.highlight .no { color: #99CC99; } /* Name.Constant */ +.highlight .nd { color: #f6f3e8; } /* Name.Decorator */ +.highlight .ni { color: #E18964; } /* Name.Entity */ +.highlight .ne { color: #f6f3e8; } /* Name.Exception */ +.highlight .nf { color: #F64DBA; } /* Name.Function */ +.highlight .nl { color: #f6f3e8; } /* Name.Label */ +.highlight .nn { color: #f6f3e8; } /* Name.Namespace */ +.highlight .nx { color: #f6f3e8; } /* Name.Other */ +.highlight .py { color: #f6f3e8; } /* Name.Property */ +.highlight .nt { color: #00ADEE; } /* Name.Tag */ +.highlight .nv { color: #C6C5FE; } /* Name.Variable */ +.highlight .ow { color: #ffffff; } /* Operator.Word */ +.highlight .w { color: #f6f3e8; } /* Text.Whitespace */ +.highlight .mf { color: #FF73FD; } /* Literal.Number.Float */ +.highlight .mh { color: #FF73FD; } /* Literal.Number.Hex */ +.highlight .mi { color: #FF73FD; } /* Literal.Number.Integer */ +.highlight .mo { color: #FF73FD; } /* Literal.Number.Oct */ +.highlight .sb { color: #A8FF60; } /* Literal.String.Backtick */ +.highlight .sc { color: #A8FF60; } /* Literal.String.Char */ +.highlight .sd { color: #A8FF60; } /* Literal.String.Doc */ +.highlight .s2 { color: #A8FF60; } /* Literal.String.Double */ +.highlight .se { color: #A8FF60; } /* Literal.String.Escape */ +.highlight .sh { color: #A8FF60; } /* Literal.String.Heredoc */ +.highlight .si { color: #A8FF60; } /* Literal.String.Interpol */ +.highlight .sx { color: #A8FF60; } /* Literal.String.Other */ +.highlight .sr { color: #A8FF60; } /* Literal.String.Regex */ +.highlight .s1 { color: #A8FF60; } /* Literal.String.Single */ +.highlight .ss { color: #A8FF60; } /* Literal.String.Symbol */ +.highlight .bp { color: #f6f3e8; } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #C6C5FE; } /* Name.Variable.Class */ +.highlight .vg { color: #C6C5FE; } /* Name.Variable.Global */ +.highlight .vi { color: #C6C5FE; } /* Name.Variable.Instance */ +.highlight .il { color: #FF73FD; } /* Literal.Number.Integer.Long */ diff --git a/docs/_static/nature.css b/docs/_static/nature.css new file mode 100644 index 0000000..52b328e --- /dev/null +++ b/docs/_static/nature.css @@ -0,0 +1,245 @@ +/* + * nature.css_t + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- nature theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Arial, sans-serif; + font-size: 100%; + background-color: #111; + color: #555; + margin: 0; + padding: 0; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.document { + background-color: #eee; +} + +div.body { + background-color: #ffffff; + color: #3E4349; + padding: 0 30px 30px 30px; + font-size: 0.9em; +} + +div.footer { + color: #555; + width: 100%; + padding: 13px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #444; + text-decoration: underline; +} + +div.related { + background-color: #6BA81E; + line-height: 32px; + color: #fff; + text-shadow: 0px 1px 0 #444; + font-size: 0.9em; +} + +div.related a { + color: #E2F3CC; +} + +div.sphinxsidebar { + font-size: 0.75em; + line-height: 1.5em; +} + +div.sphinxsidebarwrapper{ + padding: 20px 0; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Arial, sans-serif; + color: #222; + font-size: 1.2em; + font-weight: normal; + margin: 0; + padding: 5px 10px; + background-color: #ddd; + text-shadow: 1px 1px 0 white +} + +div.sphinxsidebar h4{ + font-size: 1.1em; +} + +div.sphinxsidebar h3 a { + color: #444; +} + + +div.sphinxsidebar p { + color: #888; + padding: 5px 20px; +} + +div.sphinxsidebar p.topless { +} + +div.sphinxsidebar ul { + margin: 10px 20px; + padding: 0; + color: #000; +} + +div.sphinxsidebar a { + color: #444; +} + +div.sphinxsidebar input { + border: 1px solid #ccc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar input[type=text]{ + margin-left: 20px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #005B81; + text-decoration: none; +} + +a:hover { + color: #E32E00; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Arial, sans-serif; + background-color: #BED4EB; + font-weight: normal; + color: #212224; + margin: 30px 0px 10px 0px; + padding: 5px 0 5px 10px; + text-shadow: 0px 1px 0 white +} + +div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 150%; background-color: #C8D5E3; } +div.body h3 { font-size: 120%; background-color: #D8DEE3; } +div.body h4 { font-size: 110%; background-color: #D8DEE3; } +div.body h5 { font-size: 100%; background-color: #D8DEE3; } +div.body h6 { font-size: 100%; background-color: #D8DEE3; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li { + line-height: 1.5em; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.highlight{ + background-color: white; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 10px; + background-color: White; + color: #222; + line-height: 1.2em; + border: 1px solid #C6C9CB; + font-size: 1.1em; + margin: 1.5em 0 1.5em 0; + -webkit-box-shadow: 1px 1px 1px #d8d8d8; + -moz-box-shadow: 1px 1px 1px #d8d8d8; +} + +tt { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ + font-size: 1.1em; + font-family: monospace; +} + +.viewcode-back { + font-family: Arial, sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} \ No newline at end of file diff --git a/docs/_static/noise_dk.png b/docs/_static/noise_dk.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b4de42197b1021e168a5898d9d19850ebd3955 GIT binary patch literal 22763 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 ilfzFd9?ypHiLqa=Vse#`blunh0000 + Hi! + + Custom item 1 + Custom item 2 + Custom item 3 + + + +If that chunk of XML were put in the :class:`ElementBase` instance +``msg``, we could extract the data from the XML using:: + + >>> msg['extra'] + ['Custom item 1', 'Custom item 2', 'Custom item 3'] + +Provided we set up the handler for the ``'extra'`` interface to load the +```` element content into a list. + +The key concept is that given an XML structure that will be repeatedly +used, we can define a set of :term:`interfaces` which when we read from, +write to, or delete, will automatically manipulate the underlying XML +as needed. In addition, some of these interfaces may in turn reference +child objects which expose interfaces for particularly complex child +elements of the original XML chunk. + +.. seealso:: + :ref:`create-stanza-interfaces`. + +Because the :mod:`~sleekxmpp.xmlstream.stanzabase` module was developed +as part of an `XMPP `_ library, these chunks of XML are +referred to as :term:`stanzas `, and in SleekXMPP we refer to a +subclass of :class:`ElementBase` which defines the interfaces needed for +interacting with a given :term:`stanza` a :term:`stanza object`. + +To make dealing with more complicated and nested :term:`stanzas ` +or XML chunks easier, :term:`stanza objects ` can be +composed in two ways: as iterable child objects or as plugins. Iterable +child stanzas, or :term:`substanzas`, are accessible through a special +``'substanzas'`` interface. This option is useful for stanzas which +may contain more than one of the same kind of element. When there is +only one child element, the plugin method is more useful. For plugins, +a parent stanza object delegates one of its XML child elements to the +plugin stanza object. Here is an example: + +.. code-block:: xml + + + + + + + +We can can arrange this stanza into two objects: an outer, wrapper object for +dealing with the ```` element and its attributes, and a plugin object to +control the ```` payload element. If we give the plugin object the +name ``'disco_info'`` (using its :attr:`ElementBase.plugin_attrib` value), then +we can access the plugin as so:: + + >>> iq['disco_info'] + ' + + ' + +We can then drill down through the plugin object's interfaces as desired:: + + >>> iq['disco_info']['identities'] + [('client', 'bot', 'SleekXMPP Bot')] + +Plugins may also add new interfaces to the parent stanza object as if they +had been defined by the parent directly, and can also override the behaviour +of an interface defined by the parent. + +.. seealso:: + + - :ref:`create-stanza-plugins` + - :ref:`create-extension-plugins` + - :ref:`override-parent-interfaces` + + +Registering Stanza Plugins +-------------------------- + +.. autofunction:: register_stanza_plugin + +ElementBase +----------- + +.. autoclass:: ElementBase + :members: + :private-members: + :special-members: + +StanzaBase +---------- + +.. autoclass:: StanzaBase + :members: diff --git a/docs/api/xmlstream/tostring.rst b/docs/api/xmlstream/tostring.rst new file mode 100644 index 0000000..82a8c2a --- /dev/null +++ b/docs/api/xmlstream/tostring.rst @@ -0,0 +1,46 @@ +.. module:: sleekxmpp.xmlstream.tostring + +.. _tostring: + +XML Serialization +================= + +Since the XML layer of SleekXMPP is based on :mod:`~xml.etree.ElementTree`, +why not just use the built-in :func:`~xml.etree.ElementTree.tostring` +method? The answer is that using that method produces ugly results when +using namespaces. The :func:`tostring()` method used here intelligently +hides namespaces when able and does not introduce excessive namespace +prefixes:: + + >>> from sleekxmpp.xmlstream.tostring import tostring + >>> from xml.etree import cElementTree as ET + >>> xml = ET.fromstring('') + >>> ET.tostring(xml) + '' + >>> tostring(xml) + '' + +As a side effect of this namespace hiding, using :func:`tostring()` may +produce unexpected results depending on how the :func:`tostring()` method +is invoked. For example, when sending XML on the wire, the main XMPP +stanzas with their namespace of ``jabber:client`` will not include the +namespace because that is already declared by the stream header. But, if +you create a :class:`~sleekxmpp.stanza.message.Message` instance and dump +it to the terminal, the ``jabber:client`` namespace will appear. + +.. autofunction:: tostring + +Escaping Special Characters +--------------------------- + +In order to prevent errors when sending arbitrary text as the textual +content of an XML element, certain characters must be escaped. These +are: ``&``, ``<``, ``>``, ``"``, and ``'``. The default escaping +mechanism is to replace those characters with their equivalent escape +entities: ``&``, ``<``, ``>``, ``'``, and ``"``. + +In the future, the use of CDATA sections may be allowed to reduce the +size of escaped text or for when other XMPP processing agents do not +undertand these entities. + +.. autofunction:: xml_escape diff --git a/docs/api/xmlstream/xmlstream.rst b/docs/api/xmlstream/xmlstream.rst new file mode 100644 index 0000000..90a7a6a --- /dev/null +++ b/docs/api/xmlstream/xmlstream.rst @@ -0,0 +1,10 @@ +========== +XML Stream +========== + +.. module:: sleekxmpp.xmlstream.xmlstream + +.. autoexception:: RestartStream + +.. autoclass:: XMLStream + :members: diff --git a/docs/architecture.rst b/docs/architecture.rst new file mode 100644 index 0000000..a2e0a27 --- /dev/null +++ b/docs/architecture.rst @@ -0,0 +1,177 @@ +.. index:: XMLStream, BaseXMPP, ClientXMPP, ComponentXMPP + +SleekXMPP Architecture +====================== + +The core of SleekXMPP is contained in four classes: ``XMLStream``, +``BaseXMPP``, ``ClientXMPP``, and ``ComponentXMPP``. Along side this +stack is a library for working with XML objects that eliminates most +of the tedium of creating/manipulating XML. + +.. image:: _static/images/arch_layers.png + :height: 300px + :align: center + + +.. index:: XMLStream + +The Foundation: XMLStream +------------------------- +:class:`~sleekxmpp.xmlstream.xmlstream.XMLStream` is a mostly XMPP-agnostic +class whose purpose is to read and write from a bi-directional XML stream. +It also allows for callback functions to execute when XML matching given +patterns is received; these callbacks are also referred to as :term:`stream +handlers `. The class also provides a basic eventing system +which can be triggered either manually or on a timed schedule. + +The Main Threads +~~~~~~~~~~~~~~~~ +:class:`~sleekxmpp.xmlstream.xmlstream.XMLStream` instances run using at +least three background threads: the send thread, the read thread, and the +scheduler thread. The send thread is in charge of monitoring the send queue +and writing text to the outgoing XML stream. The read thread pulls text off +of the incoming XML stream and stores the results in an event queue. The +scheduler thread is used to emit events after a given period of time. + +Additionally, the main event processing loop may be executed in its +own thread if SleekXMPP is being used in the background for another +application. + +Short-lived threads may also be spawned as requested for threaded +:term:`event handlers `. + +How XML Text is Turned into Action +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +To demonstrate the flow of information, let's consider what happens +when this bit of XML is received (with an assumed namespace of +``jabber:client``): + +.. code-block:: xml + + + Hej! + + + +1. **Convert XML strings into objects.** + + Incoming text is parsed and converted into XML objects (using + ElementTree) which are then wrapped into what are referred to as + :term:`Stanza objects `. The appropriate class for the + new object is determined using a map of namespaced element names to + classes. + + Our incoming XML is thus turned into a :class:`~sleekxmpp.stanza.Message` + :term:`stanza object` because the namespaced element name + ``{jabber:client}message`` is associated with the class + :class:`~sleekxmpp.stanza.Message`. + +2. **Match stanza objects to callbacks.** + + These objects are then compared against the stored patterns associated + with the registered callback handlers. For each match, a copy of the + :term:`stanza object` is paired with a reference to the handler and + placed into the event queue. + + Our :class:`~sleekxmpp.stanza.Message` object is thus paired with the message stanza handler + :meth:`BaseXMPP._handle_message` to create the tuple:: + + ('stanza', stanza_obj, handler) + +3. **Process the event queue.** + + The event queue is the heart of SleekXMPP. Nearly every action that + takes place is first inserted into this queue, whether that be received + stanzas, custom events, or scheduled events. + + When the stanza is pulled out of the event queue with an associated + callback, the callback function is executed with the stanza as its only + parameter. + + .. warning:: + The callback, aka :term:`stream handler`, is executed in the main event + processing thread. If the handler blocks, event processing will also + block. + +4. **Raise Custom Events** + + Since a :term:`stream handler` shouldn't block, if extensive processing + for a stanza is required (such as needing to send and receive an + :class:`~sleekxmpp.stanza.Iq` stanza), then custom events must be used. + These events are not explicitly tied to the incoming XML stream and may + be raised at any time. Importantly, these events may be handled in their + own thread. + + When the event is raised, a copy of the stanza is created for each + handler registered for the event. In contrast to :term:`stream handlers + `, these functions are referred to as :term:`event + handlers `. Each stanza/handler pair is then put into the + event queue. + + .. note:: + It is possible to skip the event queue and process an event immediately + by using ``direct=True`` when raising the event. + + The code for :meth:`BaseXMPP._handle_message` follows this pattern, and + raises a ``'message'`` event:: + + self.event('message', msg) + + The event call then places the message object back into the event queue + paired with an :term:`event handler`:: + + ('event', 'message', msg_copy1, custom_event_handler_1) + ('event', 'message', msg_copy2, custom_evetn_handler_2) + +5. **Process Custom Events** + + The stanza and :term:`event handler` are then pulled from the event + queue, and the handler is executed, passing the stanza as its only + argument. If the handler was registered as threaded, then a new thread + will be spawned for it. + + .. note:: + Events may be raised without needing :term:`stanza objects `. + For example, you could use ``self.event('custom', {'a': 'b'})``. + You don't even need any arguments: ``self.event('no_parameters')``. + However, every event handler MUST accept at least one argument. + + Finally, after a long trek, our message is handed off to the user's + custom handler in order to do awesome stuff:: + + msg.reply() + msg['body'] = "Hey! This is awesome!" + msg.send() + + +.. index:: BaseXMPP, XMLStream + +Raising XMPP Awareness: BaseXMPP +-------------------------------- +While :class:`~sleekxmpp.xmlstream.xmlstream.XMLStream` attempts to shy away +from anything too XMPP specific, :class:`~sleekxmpp.basexmpp.BaseXMPP`'s +sole purpose is to provide foundational support for sending and receiving +XMPP stanzas. This support includes registering the basic message, +presence, and iq stanzas, methods for creating and sending stanzas, and +default handlers for incoming messages and keeping track of presence +notifications. + +The plugin system for adding new XEP support is also maintained by +:class:`~sleekxmpp.basexmpp.BaseXMPP`. + +.. index:: ClientXMPP, BaseXMPP + +ClientXMPP +---------- +:class:`~sleekxmpp.clientxmpp.ClientXMPP` extends +:class:`~sleekxmpp.clientxmpp.BaseXMPP` with additional logic for connecting +to an XMPP server by performing DNS lookups. It also adds support for stream +features such as STARTTLS and SASL. + +.. index:: ComponentXMPP, BaseXMPP + +ComponentXMPP +------------- +:class:`~sleekxmpp.componentxmpp.ComponentXMPP` is only a thin layer on top of +:class:`~sleekxmpp.basexmpp.BaseXMPP` that implements the component handshake +protocol. diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..dd83f24 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,222 @@ +# -*- coding: utf-8 -*- +# +# SleekXMPP documentation build configuration file, created by +# sphinx-quickstart on Tue Aug 9 22:27:06 2011. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('..')) + +# -- General configuration ----------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'sphinx.ext.intersphinx'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'SleekXMPP' +copyright = u'2011, Nathan Fritz, Lance Stout' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '1.0' +# The full version, including alpha/beta/rc tags. +release = '1.0RC3' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'tango' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'nature' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {'headingcolor': '#CFCFCF', 'linkcolor': '#4A7389'} + +# 00ADEE + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +html_title = 'SleekXMPP' + +# A shorter title for the navigation bar. Default is the same as html_title. +html_short_title = '%s Documentation' % release + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +html_additional_pages = { +} + + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'SleekXMPPdoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'SleekXMPP.tex', u'SleekXMPP Documentation', + u'Nathan Fritz, Lance Stout', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output -------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'sleekxmpp', u'SleekXMPP Documentation', + [u'Nathan Fritz, Lance Stout'], 1) +] + +intersphinx_mapping = {'python': ('http://docs.python.org/3.2', 'python-objects.inv')} diff --git a/docs/create_plugin.rst b/docs/create_plugin.rst new file mode 100644 index 0000000..12efa84 --- /dev/null +++ b/docs/create_plugin.rst @@ -0,0 +1,679 @@ +.. _create-plugin: + +Creating a SleekXMPP Plugin +=========================== + +One of the goals of SleekXMPP is to provide support for every draft or final +XMPP extension (`XEP `_). To do this, SleekXMPP has a +plugin mechanism for adding the functionalities required by each XEP. But even +though plugins were made to quickly implement and prototype the official XMPP +extensions, there is no reason you can't create your own plugin to implement +your own custom XMPP-based protocol. + +This guide will help walk you through the steps to +implement a rudimentary version of `XEP-0077 In-band +Registration `_. In-band registration +was implemented in example 14-6 (page 223) of `XMPP: The Definitive +Guide `_ because there was no SleekXMPP +plugin for XEP-0077 at the time of writing. We will partially fix that issue +here by turning the example implementation from *XMPP: The Definitive Guide* +into a plugin. Again, note that this will not a complete implementation, and a +different, more robust, official plugin for XEP-0077 may be added to SleekXMPP +in the future. + +.. note:: + + The example plugin created in this guide is for the server side of the + registration process only. It will **NOT** be able to register new accounts + on an XMPP server. + +First Steps +----------- +Every plugin inherits from the class :mod:`base_plugin `, +and must include a ``plugin_init`` method. While the +plugins distributed with SleekXMPP must be placed in the plugins directory +``sleekxmpp/plugins`` to be loaded, custom plugins may be loaded from any +module. To do so, use the following form when registering the plugin: + +.. code-block:: python + + self.register_plugin('myplugin', module=mod_containing_my_plugin) + +The plugin name must be the same as the plugin's class name. + +Now, we can open our favorite text editors and create ``xep_0077.py`` in +``SleekXMPP/sleekxmpp/plugins``. We want to do some basic house-keeping and +declare the name and description of the XEP we are implementing. If you +are creating your own custom plugin, you don't need to include the ``xep`` +attribute. + +.. code-block:: python + + """ + Creating a SleekXMPP Plugin + + This is a minimal implementation of XEP-0077 to serve + as a tutorial for creating SleekXMPP plugins. + """ + + from sleekxmpp.plugins.base import base_plugin + + class xep_0077(base_plugin): + """ + XEP-0077 In-Band Registration + """ + + def plugin_init(self): + self.description = "In-Band Registration" + self.xep = "0077" + +Now that we have a basic plugin, we need to edit +``sleekxmpp/plugins/__init__.py`` to include our new plugin by adding +``'xep_0077'`` to the ``__all__`` declaration. + +Interacting with Other Plugins +------------------------------ + +In-band registration is a feature that should be advertised through `Service +Discovery `_. To do that, we tell the +``xep_0030`` plugin to add the ``"jabber:iq:register"`` feature. We put this +call in a method named ``post_init`` which will be called once the plugin has +been loaded; by doing so we advertise that we can do registrations only after we +finish activating the plugin. + +The ``post_init`` method needs to call ``base_plugin.post_init(self)`` +which will mark that ``post_init`` has been called for the plugin. Once the +SleekXMPP object begins processing, ``post_init`` will be called on any plugins +that have not already run ``post_init``. This allows you to register plugins and +their dependencies without needing to worry about the order in which you do so. + +**Note:** by adding this call we have introduced a dependency on the XEP-0030 +plugin. Be sure to register ``'xep_0030'`` as well as ``'xep_0077'``. SleekXMPP +does not automatically load plugin dependencies for you. + +.. code-block:: python + + def post_init(self): + base_plugin.post_init(self) + self.xmpp['xep_0030'].add_feature("jabber:iq:register") + +Creating Custom Stanza Objects +------------------------------ + +Now, the IQ stanzas needed to implement our version of XEP-0077 are not very +complex, and we could just interact with the XML objects directly just like +in the *XMPP: The Definitive Guide* example. However, creating custom stanza +objects is good practice. + +We will create a new ``Registration`` stanza. Following the *XMPP: The +Definitive Guide* example, we will add support for a username and password +field. We also need two flags: ``registered`` and ``remove``. The ``registered`` +flag is sent when an already registered user attempts to register, along with +their registration data. The ``remove`` flag is a request to unregister a user's +account. + +Adding additional `fields specified in +XEP-0077 `_ +will not be difficult and is left as an exercise for the reader. + +Our ``Registration`` class needs to start with a few descriptions of its +behaviour: + +* ``namespace`` + The namespace our stanza object lives in. In this case, + ``"jabber:iq:register"``. + +* ``name`` + The name of the root XML element. In this case, the ``query`` element. + +* ``plugin_attrib`` + The name to access this type of stanza. In particular, given a + registration stanza, the ``Registration`` object can be found using: + ``iq_object['register']``. + +* ``interfaces`` + A list of dictionary-like keys that can be used with the stanza object. + When using ``"key"``, if there exists a method of the form ``getKey``, + ``setKey``, or``delKey`` (depending on context) then the result of calling + that method will be returned. Otherwise, the value of the attribute ``key`` + of the main stanza element is returned if one exists. + + **Note:** The accessor methods currently use title case, and not camel case. + Thus if you need to access an item named ``"methodName"`` you will need to + use ``getMethodname``. This naming convention might change to full camel + case in a future version of SleekXMPP. + +* ``sub_interfaces`` + A subset of ``interfaces``, but these keys map to the text of any + subelements that are direct children of the main stanza element. Thus, + referencing ``iq_object['register']['username']`` will either execute + ``getUsername`` or return the value in the ``username`` element of the + query. + + If you need to access an element, say ``elem``, that is not a direct child + of the main stanza element, you will need to add ``getElem``, ``setElem``, + and ``delElem``. See the note above about naming conventions. + +.. code-block:: python + + from sleekxmpp.xmlstream import ElementBase, ET, JID, register_stanza_plugin + from sleekxmpp import Iq + + class Registration(ElementBase): + namespace = 'jabber:iq:register' + name = 'query' + plugin_attrib = 'register' + interfaces = set(('username', 'password', 'registered', 'remove')) + sub_interfaces = interfaces + + def getRegistered(self): + present = self.xml.find('{%s}registered' % self.namespace) + return present is not None + + def getRemove(self): + present = self.xml.find('{%s}remove' % self.namespace) + return present is not None + + def setRegistered(self, registered): + if registered: + self.addField('registered') + else: + del self['registered'] + + def setRemove(self, remove): + if remove: + self.addField('remove') + else: + del self['remove'] + + def addField(self, name): + itemXML = ET.Element('{%s}%s' % (self.namespace, name)) + self.xml.append(itemXML) + +Setting a ``sub_interface`` attribute to ``""`` will remove that subelement. +Since we want to include empty registration fields in our form, we need the +``addField`` method to add the empty elements. + +Since the ``registered`` and ``remove`` elements are just flags, we need to add +custom logic to enforce the binary behavior. + +Extracting Stanzas from the XML Stream +-------------------------------------- + +Now that we have a custom stanza object, we need to be able to detect when we +receive one. To do this, we register a stream handler that will pattern match +stanzas off of the XML stream against our stanza object's element name and +namespace. To do so, we need to create a ``Callback`` object which contains +an XML fragment that can identify our stanza type. We can add this handler +registration to our ``plugin_init`` method. + +Also, we need to associate our ``Registration`` class with IQ stanzas; +that requires the use of the ``register_stanza_plugin`` function (in +``sleekxmpp.xmlstream.stanzabase``) which takes the class of a parent stanza +type followed by the substanza type. In our case, the parent stanza is an IQ +stanza, and the substanza is our registration query. + +The ``__handleRegistration`` method referenced in the callback will be our +handler function to process registration requests. + +.. code-block:: python + + def plugin_init(self): + self.description = "In-Band Registration" + self.xep = "0077" + + self.xmpp.registerHandler( + Callback('In-Band Registration', + MatchXPath('{%s}iq/{jabber:iq:register}query' % self.xmpp.default_ns), + self.__handleRegistration)) + register_stanza_plugin(Iq, Registration) + +Handling Incoming Stanzas and Triggering Events +----------------------------------------------- +There are six situations that we need to handle to finish our implementation of +XEP-0077. + +**Registration Form Request from a New User:** + + .. code-block:: xml + + + + + + + + +**Registration Form Request from an Existing User:** + + .. code-block:: xml + + + + + Foo + hunter2 + + + +**Unregister Account:** + + .. code-block:: xml + + + + + +**Incomplete Registration:** + + .. code-block:: xml + + + + Foo + + + + + + +**Conflicting Registrations:** + + .. code-block:: xml + + + + Foo + hunter2 + + + + + + +**Successful Registration:** + + .. code-block:: xml + + + + + +Cases 1 and 2: Registration Requests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Responding to registration requests depends on if the requesting user already +has an account. If there is an account, the response should include the +``registered`` flag and the user's current registration information. Otherwise, +we just send the fields for our registration form. + +We will handle both cases by creating a ``sendRegistrationForm`` method that +will create either an empty of full form depending on if we provide it with +user data. Since we need to know which form fields to include (especially if we +add support for the other fields specified in XEP-0077), we will also create a +method ``setForm`` which will take the names of the fields we wish to include. + +.. code-block:: python + + def plugin_init(self): + self.description = "In-Band Registration" + self.xep = "0077" + self.form_fields = ('username', 'password') + ... remainder of plugin_init + + ... + + def __handleRegistration(self, iq): + if iq['type'] == 'get': + # Registration form requested + userData = self.backend[iq['from'].bare] + self.sendRegistrationForm(iq, userData) + + def setForm(self, *fields): + self.form_fields = fields + + def sendRegistrationForm(self, iq, userData=None): + reg = iq['register'] + if userData is None: + userData = {} + else: + reg['registered'] = True + + for field in self.form_fields: + data = userData.get(field, '') + if data: + # Add field with existing data + reg[field] = data + else: + # Add a blank field + reg.addField(field) + + iq.reply().setPayload(reg.xml) + iq.send() + +Note how we are able to access our ``Registration`` stanza object with +``iq['register']``. + +A User Backend +++++++++++++++ +You might have noticed the reference to ``self.backend``, which is an object +that abstracts away storing and retrieving user information. Since it is not +much more than a dictionary, we will leave the implementation details to the +final, full source code example. + +Case 3: Unregister an Account +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The next simplest case to consider is responding to a request to remove +an account. If we receive a ``remove`` flag, we instruct the backend to +remove the user's account. Since your application may need to know about +when users are registered or unregistered, we trigger an event using +``self.xmpp.event('unregister_user', iq)``. See the component examples below for +how to respond to that event. + +.. code-block:: python + + def __handleRegistration(self, iq): + if iq['type'] == 'get': + # Registration form requested + userData = self.backend[iq['from'].bare] + self.sendRegistrationForm(iq, userData) + elif iq['type'] == 'set': + # Remove an account + if iq['register']['remove']: + self.backend.unregister(iq['from'].bare) + self.xmpp.event('unregistered_user', iq) + iq.reply().send() + return + +Case 4: Incomplete Registration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +For the next case we need to check the user's registration to ensure it has all +of the fields we wanted. The simple option that we will use is to loop over the +field names and check each one; however, this means that all fields we send to +the user are required. Adding optional fields is left to the reader. + +Since we have received an incomplete form, we need to send an error message back +to the user. We have to send a few different types of errors, so we will also +create a ``_sendError`` method that will add the appropriate ``error`` element +to the IQ reply. + +.. code-block:: python + + def __handleRegistration(self, iq): + if iq['type'] == 'get': + # Registration form requested + userData = self.backend[iq['from'].bare] + self.sendRegistrationForm(iq, userData) + elif iq['type'] == 'set': + if iq['register']['remove']: + # Remove an account + self.backend.unregister(iq['from'].bare) + self.xmpp.event('unregistered_user', iq) + iq.reply().send() + return + + for field in self.form_fields: + if not iq['register'][field]: + # Incomplete Registration + self._sendError(iq, '406', 'modify', 'not-acceptable' + "Please fill in all fields.") + return + + ... + + def _sendError(self, iq, code, error_type, name, text=''): + iq.reply().setPayload(iq['register'].xml) + iq.error() + iq['error']['code'] = code + iq['error']['type'] = error_type + iq['error']['condition'] = name + iq['error']['text'] = text + iq.send() + +Cases 5 and 6: Conflicting and Successful Registration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +We are down to the final decision on if we have a successful registration. We +send the user's data to the backend with the ``self.backend.register`` method. +If it returns ``True``, then registration has been successful. Otherwise, +there has been a conflict with usernames and registration has failed. Like +with unregistering an account, we trigger an event indicating that a user has +been registered by using ``self.xmpp.event('registered_user', iq)``. See the +component examples below for how to respond to this event. + +.. code-block:: python + + def __handleRegistration(self, iq): + if iq['type'] == 'get': + # Registration form requested + userData = self.backend[iq['from'].bare] + self.sendRegistrationForm(iq, userData) + elif iq['type'] == 'set': + if iq['register']['remove']: + # Remove an account + self.backend.unregister(iq['from'].bare) + self.xmpp.event('unregistered_user', iq) + iq.reply().send() + return + + for field in self.form_fields: + if not iq['register'][field]: + # Incomplete Registration + self._sendError(iq, '406', 'modify', 'not-acceptable', + "Please fill in all fields.") + return + + if self.backend.register(iq['from'].bare, iq['register']): + # Successful registration + self.xmpp.event('registered_user', iq) + iq.reply().setPayload(iq['register'].xml) + iq.send() + else: + # Conflicting registration + self._sendError(iq, '409', 'cancel', 'conflict', + "That username is already taken.") + +Example Component Using the XEP-0077 Plugin +------------------------------------------- +Alright, the moment we've been working towards - actually using our plugin to +simplify our other applications. Here is a basic component that simply manages +user registrations and sends the user a welcoming message when they register, +and a farewell message when they delete their account. + +Note that we have to register the ``'xep_0030'`` plugin first, +and that we specified the form fields we wish to use with +``self.xmpp.plugin['xep_0077'].setForm('username', 'password')``. + +.. code-block:: python + + import sleekxmpp.componentxmpp + + class Example(sleekxmpp.componentxmpp.ComponentXMPP): + + def __init__(self, jid, password): + sleekxmpp.componentxmpp.ComponentXMPP.__init__(self, jid, password, 'localhost', 8888) + + self.registerPlugin('xep_0030') + self.registerPlugin('xep_0077') + self.plugin['xep_0077'].setForm('username', 'password') + + self.add_event_handler("registered_user", self.reg) + self.add_event_handler("unregistered_user", self.unreg) + + def reg(self, iq): + msg = "Welcome! %s" % iq['register']['username'] + self.sendMessage(iq['from'], msg, mfrom=self.fulljid) + + def unreg(self, iq): + msg = "Bye! %s" % iq['register']['username'] + self.sendMessage(iq['from'], msg, mfrom=self.fulljid) + +**Congratulations!** We now have a basic, functioning implementation of +XEP-0077. + +Complete Source Code for XEP-0077 Plugin +---------------------------------------- +Here is a copy of a more complete implementation of the plugin we created, but +with some additional registration fields implemented. + +.. code-block:: python + + """ + Creating a SleekXMPP Plugin + + This is a minimal implementation of XEP-0077 to serve + as a tutorial for creating SleekXMPP plugins. + """ + + from sleekxmpp.plugins.base import base_plugin + from sleekxmpp.xmlstream.handler.callback import Callback + from sleekxmpp.xmlstream.matcher.xpath import MatchXPath + from sleekxmpp.xmlstream import ElementBase, ET, JID, register_stanza_plugin + from sleekxmpp import Iq + import copy + + + class Registration(ElementBase): + namespace = 'jabber:iq:register' + name = 'query' + plugin_attrib = 'register' + interfaces = set(('username', 'password', 'email', 'nick', 'name', + 'first', 'last', 'address', 'city', 'state', 'zip', + 'phone', 'url', 'date', 'misc', 'text', 'key', + 'registered', 'remove', 'instructions')) + sub_interfaces = interfaces + + def getRegistered(self): + present = self.xml.find('{%s}registered' % self.namespace) + return present is not None + + def getRemove(self): + present = self.xml.find('{%s}remove' % self.namespace) + return present is not None + + def setRegistered(self, registered): + if registered: + self.addField('registered') + else: + del self['registered'] + + def setRemove(self, remove): + if remove: + self.addField('remove') + else: + del self['remove'] + + def addField(self, name): + itemXML = ET.Element('{%s}%s' % (self.namespace, name)) + self.xml.append(itemXML) + + + class UserStore(object): + def __init__(self): + self.users = {} + + def __getitem__(self, jid): + return self.users.get(jid, None) + + def register(self, jid, registration): + username = registration['username'] + + def filter_usernames(user): + return user != jid and self.users[user]['username'] == username + + conflicts = filter(filter_usernames, self.users.keys()) + if conflicts: + return False + + self.users[jid] = registration + return True + + def unregister(self, jid): + del self.users[jid] + + class xep_0077(base_plugin): + """ + XEP-0077 In-Band Registration + """ + + def plugin_init(self): + self.description = "In-Band Registration" + self.xep = "0077" + self.form_fields = ('username', 'password') + self.form_instructions = "" + self.backend = UserStore() + + self.xmpp.registerHandler( + Callback('In-Band Registration', + MatchXPath('{%s}iq/{jabber:iq:register}query' % self.xmpp.default_ns), + self.__handleRegistration)) + register_stanza_plugin(Iq, Registration) + + def post_init(self): + base_plugin.post_init(self) + self.xmpp['xep_0030'].add_feature("jabber:iq:register") + + def __handleRegistration(self, iq): + if iq['type'] == 'get': + # Registration form requested + userData = self.backend[iq['from'].bare] + self.sendRegistrationForm(iq, userData) + elif iq['type'] == 'set': + if iq['register']['remove']: + # Remove an account + self.backend.unregister(iq['from'].bare) + self.xmpp.event('unregistered_user', iq) + iq.reply().send() + return + + for field in self.form_fields: + if not iq['register'][field]: + # Incomplete Registration + self._sendError(iq, '406', 'modify', 'not-acceptable', + "Please fill in all fields.") + return + + if self.backend.register(iq['from'].bare, iq['register']): + # Successful registration + self.xmpp.event('registered_user', iq) + iq.reply().setPayload(iq['register'].xml) + iq.send() + else: + # Conflicting registration + self._sendError(iq, '409', 'cancel', 'conflict', + "That username is already taken.") + + def setForm(self, *fields): + self.form_fields = fields + + def setInstructions(self, instructions): + self.form_instructions = instructions + + def sendRegistrationForm(self, iq, userData=None): + reg = iq['register'] + if userData is None: + userData = {} + else: + reg['registered'] = True + + if self.form_instructions: + reg['instructions'] = self.form_instructions + + for field in self.form_fields: + data = userData.get(field, '') + if data: + # Add field with existing data + reg[field] = data + else: + # Add a blank field + reg.addField(field) + + iq.reply().setPayload(reg.xml) + iq.send() + + def _sendError(self, iq, code, error_type, name, text=''): + iq.reply().setPayload(iq['register'].xml) + iq.error() + iq['error']['code'] = code + iq['error']['type'] = error_type + iq['error']['condition'] = name + iq['error']['text'] = text + iq.send() diff --git a/docs/event_index.rst b/docs/event_index.rst new file mode 100644 index 0000000..2c5dfd3 --- /dev/null +++ b/docs/event_index.rst @@ -0,0 +1,271 @@ +Event Index +=========== + +.. glossary:: + :sorted: + + connected + - **Data:** ``{}`` + - **Source:** :py:class:`~sleekxmpp.clientxmpp.ClientXMPP` + + Signal that a connection has been made with the XMPP server, but a session + has not yet been established. + + changed_status + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + Triggered when a presence stanza is received from a JID with a show type + different than the last presence stanza from the same JID. + + changed_subscription + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + Triggered whenever a presence stanza with a type of ``subscribe``, + ``subscribed``, ``unsubscribe``, or ``unsubscribed`` is received. + + Note that if the values ``xmpp.auto_authorize`` and ``xmpp.auto_subscribe`` + are set to ``True`` or ``False``, and not ``None``, then SleekXMPP will + either accept or reject all subscription requests before your event handlers + are called. Set these values to ``None`` if you wish to make more complex + subscription decisions. + + chatstate_active + - **Data:** + - **Source:** + + chatstate_composing + - **Data:** + - **Source:** + + chatstate_gone + - **Data:** + - **Source:** + + chatstate_inactive + - **Data:** + - **Source:** + + chatstate_paused + - **Data:** + - **Source:** + + disco_info + - **Data:** :py:class:`~sleekxmpp.plugins.xep_0030.stanza.DiscoInfo` + - **Source:** :py:class:`~sleekxmpp.plugins.xep_0030.disco.xep_0030` + + Triggered whenever a ``disco#info`` result stanza is received. + + disco_items + - **Data:** :py:class:`~sleekxmpp.plugins.xep_0030.stanza.DiscoItems` + - **Source:** :py:class:`~sleekxmpp.plugins.xep_0030.disco.xep_0030` + + Triggered whenever a ``disco#items`` result stanza is received. + + disconnected + - **Data:** ``{}`` + - **Source:** :py:class:`~sleekxmpp.ClientXMPP` + + Signal that the connection with the XMPP server has been lost. + + entity_time + - **Data:** + - **Source:** + + failed_auth + - **Data:** ``{}`` + - **Source:** :py:class:`~sleekxmpp.ClientXMPP`, :py:class:`~sleekxmpp.plugins.xep_0078.xep_0078` + + Signal that the server has rejected the provided login credentials. + + gmail_notify + - **Data:** ``{}`` + - **Source:** :py:class:`~sleekxmpp.plugins.gmail_notify.gmail_notify` + + Signal that there are unread emails for the Gmail account associated with the current XMPP account. + + gmail_messages + - **Data:** :py:class:`~sleekxmpp.Iq` + - **Source:** :py:class:`~sleekxmpp.plugins.gmail_notify.gmail_notify` + + Signal that there are unread emails for the Gmail account associated with the current XMPP account. + + got_online + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + If a presence stanza is received from a JID which was previously marked as + offline, and the presence has a show type of '``chat``', '``dnd``', '``away``', + or '``xa``', then this event is triggered as well. + + got_offline + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + Signal that an unavailable presence stanza has been received from a JID. + + groupchat_invite + - **Data:** + - **Source:** + + groupchat_direct_invite + - **Data:** :py:class:`~sleekxmpp.Message` + - **Source:** :py:class:`~sleekxmpp.plugins.xep_0249.direct` + + groupchat_message + - **Data:** :py:class:`~sleekxmpp.Message` + - **Source:** :py:class:`~sleekxmpp.plugins.xep_0045.xep_0045` + + Triggered whenever a message is received from a multi-user chat room. + + groupchat_presence + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.plugins.xep_0045.xep_0045` + + Triggered whenever a presence stanza is received from a user in a multi-user chat room. + + groupchat_subject + - **Data:** :py:class:`~sleekxmpp.Message` + - **Source:** :py:class:`~sleekxmpp.plugins.xep_0045.xep_0045` + + Triggered whenever the subject of a multi-user chat room is changed, or announced when joining a room. + + killed + - **Data:** + - **Source:** + + last_activity + - **Data:** + - **Source:** + + message + - **Data:** :py:class:`~sleekxmpp.Message` + - **Source:** :py:class:`BaseXMPP ` + + Makes the contents of message stanzas available whenever one is received. Be + sure to check the message type in order to handle error messages. + + message_form + - **Data:** :py:class:`~sleekxmpp.plugins.xep_0004.Form` + - **Source:** :py:class:`~sleekxmpp.plugins.xep_0004.xep_0004` + + Currently the same as :term:`message_xform`. + + message_xform + - **Data:** :py:class:`~sleekxmpp.plugins.xep_0004.Form` + - **Source:** :py:class:`~sleekxmpp.plugins.xep_0004.xep_0004` + + Triggered whenever a data form is received inside a message. + + mucc::[room]::got_offline + - **Data:** + - **Source:** + + muc::[room]::got_online + - **Data:** + - **Source:** + + muc::[room]::message + - **Data:** + - **Source:** + + muc::[room]::presence + - **Data:** + - **Source:** + + presence_available + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + A presence stanza with a type of '``available``' is received. + + presence_error + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + A presence stanza with a type of '``error``' is received. + + presence_form + - **Data:** :py:class:`~sleekxmpp.plugins.xep_0004.Form` + - **Source:** :py:class:`~sleekxmpp.plugins.xep_0004.xep_0004` + + This event is present in the XEP-0004 plugin code, but is currently not used. + + presence_probe + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + A presence stanza with a type of '``probe``' is received. + + presence_subscribe + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + A presence stanza with a type of '``subscribe``' is received. + + presence_subscribed + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + A presence stanza with a type of '``subscribed``' is received. + + presence_unavailable + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + A presence stanza with a type of '``unavailable``' is received. + + presence_unsubscribe + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + A presence stanza with a type of '``unsubscribe``' is received. + + presence_unsubscribed + - **Data:** :py:class:`~sleekxmpp.Presence` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` + + A presence stanza with a type of '``unsubscribed``' is received. + + roster_update + - **Data:** :py:class:`~sleekxmpp.stanza.Roster` + - **Source:** :py:class:`~sleekxmpp.ClientXMPP` + + An IQ result containing roster entries is received. + + sent_presence + - **Data:** ``{}`` + - **Source:** :py:class:`BaseXMPP ` + + Signal that an initial presence stanza has been written to the XML stream. + + session_end + - **Data:** ``{}`` + - **Source:** :py:class:`ClientXMPP `, + :py:class:`ComponentXMPP ` + :py:class:`XEP-0078 ` + + Signal that a connection to the XMPP server has been lost and the current + stream session has ended. Currently equivalent to :term:`disconnected`, but + future implementation of `XEP-0198: Stream Management `_ + will distinguish the two events. + + Plugins that maintain session-based state should clear themselves when + this event is fired. + + session_start + - **Data:** ``{}`` + - **Source:** :py:class:`ClientXMPP `, + :py:class:`ComponentXMPP ` + :py:class:`XEP-0078 ` + + Signal that a connection to the XMPP server has been made and a session has been established. + + socket_error + - **Data:** ``Socket`` exception object + - **Source:** :py:class:`~sleekxmpp.xmlstream.XMLstream` + + stream_error + - **Data:** :py:class:`~sleekxmpp.stanza.StreamError` + - **Source:** :py:class:`~sleekxmpp.BaseXMPP` diff --git a/docs/features.rst b/docs/features.rst new file mode 100644 index 0000000..4d93d5c --- /dev/null +++ b/docs/features.rst @@ -0,0 +1,2 @@ +How to Use Stream Features +========================== diff --git a/docs/getting_started/component.rst b/docs/getting_started/component.rst new file mode 100644 index 0000000..ce548ba --- /dev/null +++ b/docs/getting_started/component.rst @@ -0,0 +1,75 @@ +.. _echocomponent: + +================================= +Create and Run a Server Component +================================= + +.. note:: + + If you have any issues working through this quickstart guide + or the other tutorials here, please either send a message to the + `mailing list `_ + or join the chat room at `sleek@conference.jabber.org + `_. + +If you have not yet installed SleekXMPP, do so now by either checking out a version +from `Github `_, or installing it using ``pip`` +or ``easy_install``. + +.. code-block:: sh + + pip install sleekxmpp # Or: easy_install sleekxmpp + + +Many XMPP applications eventually graduate to requiring to run as a server +component in order to meet scalability requirements. To demonstrate how to +turn an XMPP client bot into a component, we'll turn the echobot example +(:ref:`echobot`) into a component version. + +The first difference is that we will add an additional import statement: + +.. code-block:: python + + from sleekxmpp.componentxmpp import ComponentXMPP + +Likewise, we will change the bot's class definition to match: + +.. code-block:: python + + class EchoComponent(ComponentXMPP): + + def __init__(self, jid, secret, server, port): + ComponentXMPP.__init__(self, jid, secret, server, port) + +A component instance requires two extra parameters compared to a client +instance: ``server`` and ``port``. These specifiy the name and port of +the XMPP server that will be accepting the component. For example, for +a MUC component, the following could be used: + +.. code-block:: python + + muc = ComponentXMPP('muc.sleekxmpp.com', '******', 'sleekxmpp.com', 5555) + +.. note:: + + The ``server`` value is **NOT** derived from the provided JID for the + component, unlike with client connections. + +One difference with the component version is that we do not have +to handle the :term:`session_start` event if we don't wish to deal +with presence. + +The other, main difference with components is that the +``'from'`` value for every stanza must be explicitly set, since +components may send stanzas from multiple JIDs. To do so, +the :meth:`~sleekxmpp.basexmpp.BaseXMPP.send_message()` and +:meth:`~sleekxmpp.basexmpp.BaseXMPP.send_presence()` accept the parameters +``mfrom`` and ``pfrom``, respectively. For any method that uses +:class:`~sleekxmpp.stanza.iq.Iq` stanzas, ``ifrom`` may be used. + + +Final Product +------------- + +.. include:: ../../examples/echo_component.py + :literal: diff --git a/docs/getting_started/echobot.rst b/docs/getting_started/echobot.rst new file mode 100644 index 0000000..053a76f --- /dev/null +++ b/docs/getting_started/echobot.rst @@ -0,0 +1,390 @@ +.. _echobot: + +=============================== +SleekXMPP Quickstart - Echo Bot +=============================== + +.. note:: + + If you have any issues working through this quickstart guide + or the other tutorials here, please either send a message to the + `mailing list `_ + or join the chat room at `sleek@conference.jabber.org + `_. + +If you have not yet installed SleekXMPP, do so now by either checking out a version +from `Github `_, or installing it using ``pip`` +or ``easy_install``. + +.. code-block:: sh + + pip install sleekxmpp # Or: easy_install sleekxmpp + + +As a basic starting project, we will create an echo bot which will reply to any +messages sent to it. We will also go through adding some basic command line configuration +for enabling or disabling debug log outputs and setting the username and password +for the bot. + +For the command line options processing, we will use the built-in ``optparse`` +module and the ``getpass`` module for reading in passwords. + +TL;DR Just Give Me the Code +--------------------------- +As you wish: :ref:`the completed example `. + +Overview +-------- + +To get started, here is a brief outline of the structure that the final project will have: + +.. code-block:: python + + #!/usr/bin/env python + # -*- coding: utf-8 -*- + + import sys + import logging + import getpass + from optparse import OptionParser + + import sleekxmpp + + '''Here we will create out echo bot class''' + + if __name__ == '__main__': + '''Here we will configure and read command line options''' + + '''Here we will instantiate our echo bot''' + + '''Finally, we connect the bot and start listening for messages''' + +Default Encoding +---------------- +XMPP requires support for UTF-8 and so SleekXMPP must use UTF-8 as well. In +Python3 this is simple because Unicode is the default string type. For Python2.6+ +the situation is not as easy because standard strings are simply byte arrays and +use ASCII. We can get Python to use UTF-8 as the default encoding by including: + +.. code-block:: python + + if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') + +.. warning:: + + Until we are able to ensure that SleekXMPP will always use Unicode in Python2.6+, this + may cause issues embedding SleekXMPP into other applications which assume ASCII encoding. + +Creating the EchoBot Class +-------------------------- + +There are three main types of entities within XMPP — servers, components, and +clients. Since our echo bot will only be responding to a few people, and won't need +to remember thousands of users, we will use a client connection. A client connection +is the same type that you use with your standard IM client such as Pidgin or Psi. + +SleekXMPP comes with a :class:`ClientXMPP ` class +which we can extend to add our message echoing feature. :class:`ClientXMPP ` +requires the parameters ``jid`` and ``password``, so we will let our ``EchoBot`` class accept those +as well. + +.. code-block:: python + + class EchoBot(sleekxmpp.ClientXMPP): + + def __init__(self, jid, password): + super(EchoBot, self).__init__(jid, password) + +Handling Session Start +~~~~~~~~~~~~~~~~~~~~~~ +The XMPP spec requires clients to broadcast its presence and retrieve its roster (buddy list) once +it connects and establishes a session with the XMPP server. Until these two tasks are completed, +some servers may not deliver or send messages or presence notifications to the client. So we now +need to be sure that we retrieve our roster and send an initial presence once the session has +started. To do that, we will register an event handler for the :term:`session_start` event. + +.. code-block:: python + + def __init__(self, jid, password): + super(EchoBot, self).__init__(jid, password) + + self.add_event_handler('session_start', self.start) + + +Since we want the method ``self.start`` to execute when the :term:`session_start` event is triggered, +we also need to define the ``self.start`` handler. + +.. code-block:: python + + def start(self, event): + self.send_presence() + self.get_roster() + +.. warning:: + + Not sending an initial presence and retrieving the roster when using a client instance can + prevent your program from receiving presence notifications or messages depending on the + XMPP server you have chosen. + +Our event handler, like every event handler, accepts a single parameter which typically is the stanza +that was received that caused the event. In this case, ``event`` will just be an empty dictionary since +there is no associated data. + +Our first task of sending an initial presence is done using :meth:`send_presence `. +Calling :meth:`send_presence ` without any arguments will send the simplest +stanza allowed in XMPP: + +.. code-block:: xml + + + + +The second requirement is fulfilled using :meth:`get_roster `, which +will send an IQ stanza requesting the roster to the server and then wait for the response. You may be wondering +what :meth:`get_roster ` returns since we are not saving any return +value. The roster data is saved by an internal handler to ``self.roster``, and in the case of a :class:`ClientXMPP +` instance to ``self.client_roster``. (The difference between ``self.roster`` and +``self.client_roster`` is that ``self.roster`` supports storing roster information for multiple JIDs, which is useful +for components, whereas ``self.client_roster`` stores roster data for just the client's JID.) + +It is possible for a timeout to occur while waiting for the server to respond, which can happen if the +network is excessively slow or the server is no longer responding. In that case, an :class:`IQTimeout +` is raised. Similarly, an :class:`IQError ` exception can +be raised if the request contained bad data or requested the roster for the wrong user. In either case, you can wrap the +``get_roster()`` call in a ``try``/``except`` block to retry the roster retrieval process. + +The XMPP stanzas from the roster retrieval process could look like this: + +.. code-block:: xml + + + + + + + + + + + +Responding to Messages +~~~~~~~~~~~~~~~~~~~~~~ +Now that an ``EchoBot`` instance handles :term:`session_start`, we can begin receiving and +responding to messages. Now we can register a handler for the :term:`message` event that is raised +whenever a messsage is received. + +.. code-block:: python + + def __init__(self, jid, password): + super(EchoBot, self).__init__(jid, password) + + self.add_event_handler('session_start', self.start) + self.add_event_handler('message', self.message) + + +The :term:`message` event is fired whenever a ```` stanza is received, including for +group chat messages, errors, etc. Properly responding to messages thus requires checking the +``'type'`` interface of the message :term:`stanza object`. For responding to only messages +addressed to our bot (and not from a chat room), we check that the type is either ``normal`` +or ``chat``. (Other potential types are ``error``, ``headline``, and ``groupchat``.) + +.. code-block:: python + + def message(self, msg): + if msg['type'] in ('normal', 'chat'): + msg.reply("Thanks for sending:\n%s" % msg['body']).send() + +Let's take a closer look at the ``.reply()`` method used above. For message stanzas, +``.reply()`` accepts the parameter ``body`` (also as the first positional argument), +which is then used as the value of the ```` element of the message. +Setting the appropriate ``to`` JID is also handled by ``.reply()``. + +Another way to have sent the reply message would be to use :meth:`send_message `, +which is a convenience method for generating and sending a message based on the values passed to it. If we were to use +this method, the above code would look as so: + +.. code-block:: python + + def message(self, msg): + if msg['type'] in ('normal', 'chat'): + self.send_message(mto=msg['from'], + mbody='Thanks for sending:\n%s' % msg['body']) + +Whichever method you choose to use, the results in action will look like this: + +.. code-block:: xml + + + Hej! + + + + Thanks for sending: + Hej! + + +.. note:: + XMPP does not require stanzas sent by a client to include a ``from`` attribute, and + leaves that responsibility to the XMPP server. However, if a sent stanza does + include a ``from`` attribute, it must match the full JID of the client or some + servers will reject it. SleekXMPP thus leaves out the ``from`` attribute when replying + using a client connection. + +Command Line Arguments and Logging +---------------------------------- + +While this isn't part of SleekXMPP itself, we do want our echo bot program to be able +to accept a JID and password from the command line instead of hard coding them. We will +use the ``optparse`` module for this, though there are several alternative methods, including +the newer ``argparse`` module. + +We want to accept three parameters: the JID for the echo bot, its password, and a flag for +displaying the debugging logs. We also want these to be optional parameters, since passing +a password directly through the command line can be a security risk. + +.. code-block:: python + + if __name__ == '__main__': + optp = OptionParser() + + optp.add_option('-d', '--debug', help='set logging to DEBUG', + action='store_const', dest='loglevel', + const=logging.DEBUG, default=logging.INFO) + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + + opts, args = optp.parse_args() + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + +Since we included a flag for enabling debugging logs, we need to configure the +``logging`` module to behave accordingly. + +.. code-block:: python + + if __name__ == '__main__': + + # .. option parsing from above .. + + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + +Connecting to the Server and Processing +--------------------------------------- +There are three steps remaining until our echo bot is complete: + 1. We need to instantiate the bot. + 2. The bot needs to connect to an XMPP server. + 3. We have to instruct the bot to start running and processing messages. + +Creating the bot is straightforward, but we can also perform some configuration +at this stage. For example, let's say we want our bot to support `service discovery +`_ and `pings `_: + +.. code-block:: python + + if __name__ == '__main__': + + # .. option parsing and logging steps from above + + xmpp = EchoBot(opts.jid, opts.password) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0199') # Ping + +If the ``EchoBot`` class had a hard dependency on a plugin, we could register that plugin in +the ``EchoBot.__init__`` method instead. + +.. note:: + + If you are using the OpenFire server, you will need to include an additional + configuration step. OpenFire supports a different version of SSL than what + most servers and SleekXMPP support. + + .. code-block:: python + + import ssl + xmpp.ssl_version = ssl.PROTOCOL_SSLv3 + +Now we're ready to connect and begin echoing messages. If you have the package +``dnspython`` installed, then the :meth:`sleekxmpp.clientxmpp.ClientXMPP` method +will perform a DNS query to find the appropriate server to connect to for the +given JID. If you do not have ``dnspython``, then SleekXMPP will attempt to +connect to the hostname used by the JID, unless an address tuple is supplied +to :meth:`sleekxmpp.clientxmpp.ClientXMPP`. + +.. code-block:: python + + if __name__ == '__main__': + + # .. option parsing & echo bot configuration + + if xmpp.connect(): + xmpp.process(block=True) + else: + print('Unable to connect') + +.. note:: + + For Google Talk users withouth ``dnspython`` installed, the above code + should look like: + + .. code-block:: python + + if __name__ == '__main__': + + # .. option parsing & echo bot configuration + + if xmpp.connect(('talk.google.com', 5222)): + xmpp.process(block=True) + else: + print('Unable to connect') + +To begin responding to messages, you'll see we called :meth:`sleekxmpp.basexmpp.BaseXMPP.process` +which will start the event handling, send queue, and XML reader threads. It will also call +the :meth:`sleekxmpp.plugins.base.base_plugin.post_init` method on all registered plugins. By +passing ``block=True`` to :meth:`sleekxmpp.basexmpp.BaseXMPP.process` we are running the +main processing loop in the main thread of execution. The :meth:`sleekxmpp.basexmpp.BaseXMPP.process` +call will not return until after SleekXMPP disconnects. If you need to run the client in the background +for another program, use ``block=False`` to spawn the processing loop in its own thread. + +.. note:: + + Before 1.0, controlling the blocking behaviour of :meth:`sleekxmpp.basexmpp.BaseXMPP.process` was + done via the ``threaded`` argument. This arrangement was a source of confusion because some users + interpreted that as controlling whether or not SleekXMPP used threads at all, instead of how + the processing loop itself was spawned. + + The statements ``xmpp.process(threaded=False)`` and ``xmpp.process(block=True)`` are equivalent. + + +.. _echobot_complete: + +The Final Product +----------------- + +Here then is what the final result should look like after working through the guide above. The code +can also be found in the SleekXMPP `examples directory `_. + +.. compound:: + + You can run the code using: + + .. code-block:: sh + + python echobot.py -d -j echobot@example.com + + which will prompt for the password and then begin echoing messages. To test, open + your regular IM client and start a chat with the echo bot. Messages you send to it should + be mirrored back to you. Be careful if you are using the same JID for the echo bot that + you also have logged in with another IM client. Messages could be routed to your IM client instead + of the bot. + +.. include:: ../../examples/echo_client.py + :literal: diff --git a/docs/getting_started/iq.rst b/docs/getting_started/iq.rst new file mode 100644 index 0000000..98e0bda --- /dev/null +++ b/docs/getting_started/iq.rst @@ -0,0 +1,182 @@ +Send/Receive IQ Stanzas +======================= + +Unlike :class:`~sleekxmpp.stanza.message.Message` and +:class:`~sleekxmpp.stanza.presence.Presence` stanzas which only use +text data for basic usage, :class:`~sleekxmpp.stanza.iq.Iq` stanzas +require using XML payloads, and generally entail creating a new +SleekXMPP plugin to provide the necessary convenience methods to +make working with them easier. + +Basic Use +--------- + +XMPP's use of :class:`~sleekxmpp.stanza.iq.Iq` stanzas is built around +namespaced ```` elements. For clients, just sending the +empty ```` element will suffice for retrieving information. For +example, a very basic implementation of service discovery would just +need to be able to send: + +.. code-block:: xml + + + + + +Creating Iq Stanzas +~~~~~~~~~~~~~~~~~~~ + +SleekXMPP provides built-in support for creating basic :class:`~sleekxmpp.stanza.iq.Iq` +stanzas this way. The relevant methods are: + +* :meth:`~sleekxmpp.basexmpp.BaseXMPP.make_iq` +* :meth:`~sleekxmpp.basexmpp.BaseXMPP.make_iq_get` +* :meth:`~sleekxmpp.basexmpp.BaseXMPP.make_iq_set` +* :meth:`~sleekxmpp.basexmpp.BaseXMPP.make_iq_result` +* :meth:`~sleekxmpp.basexmpp.BaseXMPP.make_iq_error` +* :meth:`~sleekxmpp.basexmpp.BaseXMPP.make_iq_query` + +These methods all follow the same pattern: create or modify an existing +:class:`~sleekxmpp.stanza.iq.Iq` stanza, set the ``'type'`` value based +on the method name, and finally add a ```` element with the given +namespace. For example, to produce the query above, you would use: + +.. code-block:: python + + self.make_iq_get(queryxmlns='http://jabber.org/protocol/disco#info', + ito='user@example.com') + + +Sending Iq Stanzas +~~~~~~~~~~~~~~~~~~ + +Once an :class:`~sleekxmpp.stanza.iq.Iq` stanza is created, sending it +over the wire is done using its :meth:`~sleekxmpp.stanza.iq.Iq.send()` +method, like any other stanza object. However, there are a few extra +options to control how to wait for the query's response. + +These options are: + +* ``block``: The default behaviour is that :meth:`~sleekxmpp.stanza.iq.Iq.send()` + will block until a response is received and the response stanza will be the + return value. Setting ``block`` to ``False`` will cause the call to return + immediately. In which case, you will need to arrange some way to capture + the response stanza if you need it. + +* ``timeout``: When using the blocking behaviour, the call will eventually + timeout with an error. The default timeout is 30 seconds, but this may + be overidden two ways. To change the timeout globally, set: + + .. code-block:: python + + self.response_timeout = 10 + + To change the timeout for a single call, the ``timeout`` parameter works: + + .. code-block:: python + + iq.send(timeout=60) + +* ``callback``: When not using a blocking call, using the ``callback`` + argument is a simple way to register a handler that will execute + whenever a response is finally received. Using this method, there + is no timeout limit. In case you need to remove the callback, the + name of the newly created callback is returned. + + .. code-block:: python + + cb_name = iq.send(callback=self.a_callback) + + # ... later if we need to cancel + self.remove_handler(cb_name) + +Properly working with :class:`~sleekxmpp.stanza.iq.Iq` stanzas requires +handling the intended, normal flow, error responses, and timed out +requests. To make this easier, two exceptions may be thrown by +:meth:`~sleekxmpp.stanza.iq.Iq.send()`: :exc:`~sleekxmpp.exceptions.IqError` +and :exc:`~sleekxmpp.exceptions.IqTimeout`. These exceptions only +apply to the default, blocking calls. + +.. code-block:: python + + try: + resp = iq.send() + # ... do stuff with expected Iq result + except IqError as e: + err_resp = e.iq + # ... handle error case + except IqTimeout: + # ... no response received in time + pass + +If you do not care to distinguish between errors and timeouts, then you +can combine both cases with a generic :exc:`~sleekxmpp.exceptions.XMPPError` +exception: + +.. code-block:: python + + try: + resp = iq.send() + except XMPPError: + # ... Don't care about the response + pass + +Advanced Use +------------ + +Going beyond the basics provided by SleekXMPP requires building at least a +rudimentary SleekXMPP plugin to create a :term:`stanza object` for +interfacting with the :class:`~sleekxmpp.stanza.iq.Iq` payload. + +.. seealso:: + + * :ref:`create-plugin` + * :ref:`work-with-stanzas` + * :ref:`using-handlers-matchers` + + +The typical way to respond to :class:`~sleekxmpp.stanza.iq.Iq` requests is +to register stream handlers. As an example, suppose we create a stanza class +named ``CustomXEP`` which uses the XML element ````, +and has a :attr:`~sleekxmpp.xmlstream.stanzabase.ElementBase.plugin_attrib` value +of ``custom_xep``. + +There are two types of incoming :class:`~sleekxmpp.stanza.iq.Iq` requests: +``get`` and ``set``. You can register a handler that will accept both and then +filter by type as needed, as so: + +.. code-block:: python + + self.register_handler(Callback( + 'CustomXEP Handler', + StanzaPath('iq/custom_xep'), + self._handle_custom_iq)) + + # ... + + def _handle_custom_iq(self, iq): + if iq['type'] == 'get': + # ... + pass + elif iq['type'] == 'set': + # ... + pass + else: + # ... This will capture error responses too + pass + +If you want to filter out query types beforehand, you can adjust the matching +filter by using ``@type=get`` or ``@type=set`` if you are using the recommended +:class:`~sleekxmpp.xmlstream.matcher.stanzapath.StanzaPath` matcher. + +.. code-block:: python + + self.register_handler(Callback( + 'CustomXEP Handler', + StanzaPath('iq@type=get/custom_xep'), + self._handle_custom_iq_get)) + + # ... + + def _handle_custom_iq_get(self, iq): + assert(iq['type'] == 'get') diff --git a/docs/getting_started/muc.rst b/docs/getting_started/muc.rst new file mode 100644 index 0000000..08f721f --- /dev/null +++ b/docs/getting_started/muc.rst @@ -0,0 +1,2 @@ +Mulit-User Chat (MUC) Bot +========================= diff --git a/docs/getting_started/presence.rst b/docs/getting_started/presence.rst new file mode 100644 index 0000000..e070e81 --- /dev/null +++ b/docs/getting_started/presence.rst @@ -0,0 +1,2 @@ +Manage Presence Subscriptions +============================= diff --git a/docs/getting_started/proxy.rst b/docs/getting_started/proxy.rst new file mode 100644 index 0000000..60d521c --- /dev/null +++ b/docs/getting_started/proxy.rst @@ -0,0 +1,42 @@ +.. _proxy: + +========================= +Enable HTTP Proxy Support +========================= + +.. note:: + + If you have any issues working through this quickstart guide + or the other tutorials here, please either send a message to the + `mailing list `_ + or join the chat room at `sleek@conference.jabber.org + `_. + +In some instances, you may wish to route XMPP traffic through +an HTTP proxy, probably to get around restrictive firewalls. +SleekXMPP provides support for basic HTTP proxying with DIGEST +authentication. + +Enabling proxy support is done in two steps. The first is to instruct SleekXMPP +to use a proxy, and the second is to configure the proxy details: + +.. code-block:: python + + xmpp = ClientXMPP(...) + xmpp.use_proxy = True + xmpp.proxy_config = { + 'host': 'proxy.example.com', + 'port': 5555, + 'username': 'example_user', + 'password': '******' + } + +The ``'username'`` and ``'password'`` fields are optional if the proxy does not +require authentication. + + +The Final Product +----------------- + +.. include:: ../../examples/proxy_echo_client.py + :literal: diff --git a/docs/getting_started/scheduler.rst b/docs/getting_started/scheduler.rst new file mode 100644 index 0000000..a9263a1 --- /dev/null +++ b/docs/getting_started/scheduler.rst @@ -0,0 +1,2 @@ +Send a Message Every 5 Minutes +============================== diff --git a/docs/getting_started/sendlogout.rst b/docs/getting_started/sendlogout.rst new file mode 100644 index 0000000..a1352db --- /dev/null +++ b/docs/getting_started/sendlogout.rst @@ -0,0 +1,94 @@ +Sign in, Send a Message, and Disconnect +======================================= + +.. note:: + + If you have any issues working through this quickstart guide + or the other tutorials here, please either send a message to the + `mailing list `_ + or join the chat room at `sleek@conference.jabber.org + `_. + +A common use case for SleekXMPP is to send one-off messages from +time to time. For example, one use case could be sending out a notice when +a shell script finishes a task. + +We will create our one-shot bot based on the pattern explained in :ref:`echobot`. To +start, we create a client class based on :class:`ClientXMPP ` and +register a handler for the :term:`session_start` event. We will also accept parameters +for the JID that will receive our message, and the string content of the message. + +.. code-block:: python + + import sleekxmpp + + + class SendMsgBot(sleekxmpp.ClientXMPP): + + def __init__(self, jid, password, recipient, msg): + super(SendMsgBot, self).__init__(jid, password) + + self.recipient = recipient + self.msg = msg + + self.add_event_handler('session_start', self.start) + + def start(self, event): + self.send_presence() + self.get_roster() + +Note that as in :ref:`echobot`, we need to include send an initial presence and request +the roster. Next, we want to send our message, and to do that we will use :meth:`send_message `. + +.. code-block:: python + + def start(self, event): + self.send_presence() + self.get_roster() + + self.send_message(mto=self.recipient, mbody=self.msg) + +Finally, we need to disconnect the client using :meth:`disconnect `. +Now, sent stanzas are placed in a queue to pass them to the send thread. If we were to call +:meth:`disconnect ` without any parameters, then it is possible +for the client to disconnect before the send queue is processed and the message is actually +sent on the wire. To ensure that our message is processed, we use +:meth:`disconnect(wait=True) `. + +.. code-block:: python + + def start(self, event): + self.send_presence() + self.get_roster() + + self.send_message(mto=self.recipient, mbody=self.msg) + + self.disconnect(wait=True) + +.. warning:: + + If you happen to be adding stanzas to the send queue faster than the send thread + can process them, then :meth:`disconnect(wait=True) ` + will block and not disconnect. + +Final Product +------------- + +.. compound:: + + The final step is to create a small runner script for initialising our ``SendMsgBot`` class and adding some + basic configuration options. By following the basic boilerplate pattern in :ref:`echobot`, we arrive + at the code below. To experiment with this example, you can use: + + .. code-block:: sh + + python send_client.py -d -j oneshot@example.com -t someone@example.net -m "This is a message" + + which will prompt for the password and then log in, send your message, and then disconnect. To test, open + your regular IM client with the account you wish to send messages to. When you run the ``send_client.py`` + example and instruct it to send your IM client account a message, you should receive the message you + gave. If the two JIDs you use also have a mutual presence subscription (they're on each other's buddy lists) + then you will also see the ``SendMsgBot`` client come online and then go offline. + +.. include:: ../../examples/send_client.py + :literal: diff --git a/docs/glossary.rst b/docs/glossary.rst new file mode 100644 index 0000000..35d2dc8 --- /dev/null +++ b/docs/glossary.rst @@ -0,0 +1,35 @@ +.. _glossary: + +Glossary +======== + +.. glossary:: + :sorted: + + stream handler + A callback function that accepts stanza objects pulled directly + from the XML stream. A stream handler is encapsulated in a + object that includes a :term:`Matcher` object, and which provides + additional semantics. For example, the ``Waiter`` handler wrapper + blocks thread execution until a matching stanza is received. + + event handler + A callback function that responds to events raised by + ``XMLStream.event``. An event handler may be marked as + threaded, allowing it to execute outside of the main processing + loop. + + stanza object + Informally may refer both to classes which extend ``ElementBase`` + or ``StanzaBase``, and to objects of such classes. + + A stanza object is a wrapper for an XML object which exposes ``dict`` + like interfaces which may be assigned to, read from, or deleted. + + stanza plugin + A :term:`stanza object` which has been registered as a potential child + of another stanza object. The plugin stanza may accessed through the + parent stanza using the plugin's ``plugin_attrib`` as an interface. + + substanza + See :term:`stanza plugin` diff --git a/docs/guide_xep_0030.rst b/docs/guide_xep_0030.rst new file mode 100644 index 0000000..cb8d7d2 --- /dev/null +++ b/docs/guide_xep_0030.rst @@ -0,0 +1,201 @@ +XEP-0030: Working with Service Discovery +======================================== + +XMPP networks can be composed of many individual clients, components, +and servers. Determining the JIDs for these entities and the various +features they may support is the role of `XEP-0030, Service +Discovery `_, or "disco" for short. + +Every XMPP entity may possess what are called nodes. A node is just a name for +some aspect of an XMPP entity. For example, if an XMPP entity provides `Ad-Hoc +Commands `_, then it will have a node +named ``http://jabber.org/protocol/commands`` which will contain information +about the commands provided. Other agents using these ad-hoc commands will +interact with the information provided by this node. Note that the node name is +just an identifier; there is no inherent meaning. + +Working with service discovery is about creating and querying these nodes. +According to XEP-0030, a node may contain three types of information: +identities, features, and items. (Further, extensible, information types are +defined in `XEP-0128 `_, but they are +not yet implemented by SleekXMPP.) SleekXMPP provides methods to configure each +of these node attributes. + +Configuring Service Discovery +----------------------------- +The design focus for the XEP-0030 plug-in is handling info and items requests +in a dynamic fashion, allowing for complex policy decisions of who may receive +information and how much, or use alternate backend storage mechanisms for all +of the disco data. To do this, each action that the XEP-0030 plug-in performs +is handed off to what is called a "node handler," which is just a callback +function. These handlers are arranged in a hierarchy that allows for a single +handler to manage an entire domain of JIDs (say for a component), while allowing +other handler functions to override that global behaviour for certain JIDs, or +even further limited to only certain JID and node combinations. + +The Dynamic Handler Hierarchy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* ``global``: (JID is None, node is None) + + Handlers assigned at this level for an action (such as ``add_feature``) provide a global default + behaviour when the action is performed. + +* ``jid``: (JID assigned, node is None) + + At this level, handlers provide a default behaviour for actions affecting any node owned by the + JID in question. This level is most useful for component connections; there is effectively no + difference between this and the global level when using a client connection. + +* ``node``: (JID assigned, node assigned) + + A handler for this level is responsible for carrying out an action for only one node, and is the + most specific handler type available. These types of handlers will be most useful for "special" + nodes that require special processing different than others provided by the JID, such as using + access control lists, or consolidating data from other nodes. + +Default Static Handlers +~~~~~~~~~~~~~~~~~~~~~~~ +The XEP-0030 plug-in provides a default set of handlers that work using in-memory +disco stanzas. Each handler simply performs the appropriate lookup or storage +operation using these stanzas without doing any complex operations such as +checking an ACL, etc. + +You may find it necessary at some point to revert a particular node or JID to +using the default, static handlers. To do so, use the method ``make_static()``. +You may also elect to only convert a given set of actions instead. + +Creating a Node Handler +~~~~~~~~~~~~~~~~~~~~~~~ +Every node handler receives three arguments: the JID, the node, and a data +parameter that will contain the relevant information for carrying out the +handler's action, typically a dictionary. + +The JID will always have a value, defaulting to ``xmpp.boundjid.full`` for +components or ``xmpp.boundjid.bare`` for clients. The node value may be None or +a string. + +Only handlers for the actions ``get_info`` and ``get_items`` need to have return +values. For these actions, DiscoInfo or DiscoItems stanzas are exepected as +output. It is also acceptable for handlers for these actions to generate an +XMPPError exception when necessary. + +Example Node Handler: ++++++++++++++++++++++ +Here is one of the built-in default handlers as an example: + +.. code-block:: python + + def add_identity(self, jid, node, data): + """ + Add a new identity to the JID/node combination. + + The data parameter may provide: + category -- The general category to which the agent belongs. + itype -- A more specific designation with the category. + name -- Optional human readable name for this identity. + lang -- Optional standard xml:lang value. + """ + self.add_node(jid, node) + self.nodes[(jid, node)]['info'].add_identity( + data.get('category', ''), + data.get('itype', ''), + data.get('name', None), + data.get('lang', None)) + +Adding Identities, Features, and Items +-------------------------------------- +In order to maintain some backwards compatibility, the methods ``add_identity``, +``add_feature``, and ``add_item`` do not follow the method signature pattern of +the other API methods (i.e. jid, node, then other options), but rather retain +the parameter orders from previous plug-in versions. + +Adding an Identity +~~~~~~~~~~~~~~~~~~ +Adding an identity may be done using either the older positional notation, or +with keyword parameters. The example below uses the keyword arguments, but in +the same order as expected using positional arguments. + +.. code-block:: python + + xmpp['xep_0030'].add_identity(category='client', + itype='bot', + name='Sleek', + node='foo', + jid=xmpp.boundjid.full, + lang='no') + +The JID and node values determine which handler will be used to perform the +``add_identity`` action. + +The ``lang`` parameter allows for adding localized versions of identities using +the ``xml:lang`` attribute. + +Adding a Feature +~~~~~~~~~~~~~~~~ +The position ordering for ``add_feature()`` is to include the feature, then +specify the node and then the JID. The JID and node values determine which +handler will be used to perform the ``add_feature`` action. + +.. code-block:: python + + xmpp['xep_0030'].add_feature(feature='jabber:x:data', + node='foo', + jid=xmpp.boundjid.full) + +Adding an Item +~~~~~~~~~~~~~~ +The parameters to ``add_item()`` are potentially confusing due to the fact that +adding an item requires two JID and node combinations: the JID and node of the +item itself, and the JID and node that will own the item. + +.. code-block:: python + + xmpp['xep_0030'].add_item(jid='myitemjid@example.com', + name='An Item!', + node='owner_node', + subnode='item_node', + ijid=xmpp.boundjid.full) + +.. note:: + + In this case, the owning JID and node are provided with the + parameters ``ijid`` and ``node``. + +Peforming Disco Queries +----------------------- +The methods ``get_info()`` and ``get_items()`` are used to query remote JIDs +and their nodes for disco information. Since these methods are wrappers for +sending Iq stanzas, they also accept all of the parameters of the ``Iq.send()`` +method. The ``get_items()`` method may also accept the boolean parameter +``iterator``, which when set to ``True`` will return an iterator object using +the `XEP-0059 `_ plug-in. + +.. code-block:: python + + info = self['xep_0030'].get_info(jid='foo@example.com', + node='bar', + ifrom='baz@mycomponent.example.com', + block=True, + timeout=30) + + items = self['xep_0030'].get_info(jid='foo@example.com', + node='bar', + iterator=True) + +For more examples on how to use basic disco queries, check the ``disco_browser.py`` +example in the ``examples`` directory. + +Local Queries +~~~~~~~~~~~~~ +In some cases, it may be necessary to query the contents of a node owned by the +client itself, or one of a component's many JIDs. The same method is used as for +normal queries, with two differences. First, the parameter ``local=True`` must +be used. Second, the return value will be a DiscoInfo or DiscoItems stanza, not +a full Iq stanza. + +.. code-block:: python + + info = self['xep_0030'].get_info(node='foo', local=True) + items = self['xep_0030'].get_items(jid='somejid@mycomponent.example.com', + node='bar', + local=True) diff --git a/docs/handlersmatchers.rst b/docs/handlersmatchers.rst new file mode 100644 index 0000000..628c414 --- /dev/null +++ b/docs/handlersmatchers.rst @@ -0,0 +1,4 @@ +.. _using-handlers-matchers: + +Using Stream Handlers and Matchers +================================== diff --git a/docs/howto/stanzas.rst b/docs/howto/stanzas.rst new file mode 100644 index 0000000..d52a90d --- /dev/null +++ b/docs/howto/stanzas.rst @@ -0,0 +1,30 @@ +.. _work-with-stanzas: + +How to Work with Stanza Objects +=============================== + + +.. _create-stanza-interfaces: + +Defining Stanza Interfaces +-------------------------- + + +.. _create-stanza-plugins: + +Creating Stanza Plugins +----------------------- + + + +.. _create-extension-plugins: + +Creating a Stanza Extension +--------------------------- + + + +.. _override-parent-interfaces: + +Overriding a Parent Stanza +-------------------------- diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..fc6541d --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,179 @@ +SleekXMPP +######### + +.. sidebar:: Get the Code + + .. code-block:: sh + + pip install sleekxmpp + + The latest source code for SleekXMPP may be found on `Github + `_. Releases can be found in the + ``master`` branch, while the latest development version is in the + ``develop`` branch. + + **Latest Stable Release** + - `1.0 RC3 `_ + + **Develop Releases** + - `Latest Develop Version `_ + + + A mailing list and XMPP chat room are available for discussing and getting + help with SleekXMPP. + + **Mailing List** + `SleekXMPP Discussion on Google Groups `_ + + **Chat** + `sleek@conference.jabber.org `_ + + +SleekXMPP is an :ref:`MIT licensed ` XMPP library for Python 2.6/3.1+, +and is featured in examples in +`XMPP: The Definitive Guide `_ +by Kevin Smith, Remko Tronçon, and Peter Saint-Andre. If you've arrived +here from reading the Definitive Guide, please see the notes on updating +the examples to the latest version of SleekXMPP. + +SleekXMPP's design goals and philosphy are: + +**Low number of dependencies** + Installing and using SleekXMPP should be as simple as possible, without + having to deal with long dependency chains. + + As part of reducing the number of dependencies, some third party + modules are included with SleekXMPP in the ``thirdparty`` directory. + Imports from this module first try to import an existing installed + version before loading the packaged version, when possible. + +**Every XEP as a plugin** + Following Python's "batteries included" approach, the goal is to + provide support for all currently active XEPs (final and draft). Since + adding XEP support is done through easy to create plugins, the hope is + to also provide a solid base for implementing and creating experimental + XEPs. + +**Rewarding to work with** + As much as possible, SleekXMPP should allow things to "just work" using + sensible defaults and appropriate abstractions. XML can be ugly to work + with, but it doesn't have to be that way. + +Getting Started (with Examples) +------------------------------- +.. toctree:: + :maxdepth: 1 + + getting_started/echobot + getting_started/sendlogout + getting_started/component + getting_started/presence + getting_started/muc + getting_started/proxy + getting_started/scheduler + getting_started/iq + + +Tutorials, FAQs, and How To Guides +---------------------------------- +.. toctree:: + :maxdepth: 1 + + faq + xeps + xmpp_tdg + howto/stanzas + create_plugin + features + sasl + handlersmatchers + +Plugin Guides +~~~~~~~~~~~~~ +.. toctree:: + :maxdepth: 1 + + guide_xep_0030 + +SleekXMPP Architecture and Design +--------------------------------- +.. toctree:: + :maxdepth: 3 + + architecture + plugin_arch + +API Reference +------------- +.. toctree:: + :maxdepth: 2 + + event_index + api/clientxmpp + api/componentxmpp + api/basexmpp + api/exceptions + api/xmlstream/jid + api/xmlstream/stanzabase + api/xmlstream/handler + api/xmlstream/matcher + api/xmlstream/xmlstream + api/xmlstream/scheduler + api/xmlstream/tostring + api/xmlstream/filesocket + +Core Stanzas +~~~~~~~~~~~~ +.. toctree:: + :maxdepth: 2 + + api/stanza/rootstanza + api/stanza/message + api/stanza/presence + api/stanza/iq + api/stanza/error + api/stanza/stream_error + +Plugins +~~~~~~~ +.. toctree:: + :maxdepth: 2 + + +Additional Info +--------------- +.. toctree:: + :hidden: + + glossary + license + +* :ref:`license` +* :ref:`glossary` +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + +Credits +------- +**Main Author:** Nathan Fritz + `fritzy@netflint.net `_, + `@fritzy `_ + + Nathan is also the author of XMPPHP and `Seesmic-AS3-XMPP + `_, and a member of the XMPP + Council. + +**Co-Author:** Lance Stout + `lancestout@gmail.com `_, + `@lancestout `_ + +**Contributors:** + - Brian Beggs (`macdiesel `_) + - Dann Martens (`dannmartens `_) + - Florent Le Coz (`louiz `_) + - Kevin Smith (`Kev `_, http://kismith.co.uk) + - Remko Tronçon (`remko `_, http://el-tramo.be) + - Te-jé Rogers (`te-je `_) + - Thom Nichols (`tomstrummer `_) + diff --git a/docs/license.rst b/docs/license.rst new file mode 100644 index 0000000..cbcf5c1 --- /dev/null +++ b/docs/license.rst @@ -0,0 +1,5 @@ +.. _license: + +License (MIT) +============= +.. include:: ../LICENSE diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..d97407a --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,170 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :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. 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. text to make text files + echo. man to make manual pages + echo. changes to make an overview over all changed/added/deprecated items + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\SleekXMPP.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\SleekXMPP.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +:end diff --git a/docs/plugin_arch.rst b/docs/plugin_arch.rst new file mode 100644 index 0000000..0141b79 --- /dev/null +++ b/docs/plugin_arch.rst @@ -0,0 +1,2 @@ +Plugin Architecture +=================== diff --git a/docs/python-objects.inv b/docs/python-objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..b7afc07e2277085a125f5e6529b62dc5623e1023 GIT binary patch literal 105830 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 literal 0 HcmV?d00001 diff --git a/docs/sasl.rst b/docs/sasl.rst new file mode 100644 index 0000000..46c45c2 --- /dev/null +++ b/docs/sasl.rst @@ -0,0 +1,2 @@ +How SASL Authentication Works +============================= diff --git a/docs/xeps.rst b/docs/xeps.rst new file mode 100644 index 0000000..3653d10 --- /dev/null +++ b/docs/xeps.rst @@ -0,0 +1,50 @@ +Supported XEPS +============== + +======= ============================= ================ +XEP Description Notes +======= ============================= ================ +`0004`_ Data forms +`0009`_ Jabber RPC +`0012`_ Last Activity +`0030`_ Service Discovery +`0033`_ Extended Stanza Addressing +`0045`_ Multi-User Chat (MUC) Client-side only +`0050`_ Ad-hoc Commands +`0059`_ Result Set Management +`0060`_ Publish/Subscribe (PubSub) Client-side only +`0066`_ Out-of-band Data +`0078`_ Non-SASL Authentication +`0082`_ XMPP Date and Time Profiles +`0085`_ Chat-State Notifications +`0086`_ Error Condition Mappings +`0092`_ Software Version +`0128`_ Service Discovery Extensions +`0202`_ Entity Time +`0203`_ Delayed Delivery +`0224`_ Attention +`0249`_ Direct MUC Invitations +======= ============================= ================ + + +.. _0004: http://xmpp.org/extensions/xep-0004.html +.. _0009: http://xmpp.org/extensions/xep-0009.html +.. _0012: http://xmpp.org/extensions/xep-0012.html +.. _0030: http://xmpp.org/extensions/xep-0030.html +.. _0033: http://xmpp.org/extensions/xep-0033.html +.. _0045: http://xmpp.org/extensions/xep-0045.html +.. _0050: http://xmpp.org/extensions/xep-0050.html +.. _0059: http://xmpp.org/extensions/xep-0059.html +.. _0060: http://xmpp.org/extensions/xep-0060.html +.. _0066: http://xmpp.org/extensions/xep-0066.html +.. _0078: http://xmpp.org/extensions/xep-0078.html +.. _0082: http://xmpp.org/extensions/xep-0082.html +.. _0085: http://xmpp.org/extensions/xep-0085.html +.. _0086: http://xmpp.org/extensions/xep-0086.html +.. _0092: http://xmpp.org/extensions/xep-0092.html +.. _0128: http://xmpp.org/extensions/xep-0128.html +.. _0199: http://xmpp.org/extensions/xep-0199.html +.. _0202: http://xmpp.org/extensions/xep-0202.html +.. _0203: http://xmpp.org/extensions/xep-0203.html +.. _0224: http://xmpp.org/extensions/xep-0224.html +.. _0249: http://xmpp.org/extensions/xep-0249.html diff --git a/docs/xmpp_tdg.rst b/docs/xmpp_tdg.rst new file mode 100644 index 0000000..3d12b1b --- /dev/null +++ b/docs/xmpp_tdg.rst @@ -0,0 +1,249 @@ +Following *XMPP: The Definitive Guide* +====================================== + +SleekXMPP was featured in the first edition of the O'Reilly book +`XMPP: The Definitive Guide `_ +by Peter Saint-Andre, Kevin Smith, and Remko Tronçon. The original source code +for the book's examples can be found at http://github.com/remko/xmpp-tdg. An +updated version of the source code, maintained to stay current with the latest +SleekXMPP release, is available at http://github.com/legastero/xmpp-tdg. + +However, since publication, SleekXMPP has advanced from version 0.2.1 to version +1.0 and there have been several major API changes. The most notable is the +introduction of :term:`stanza objects ` which have simplified and +standardized interactions with the XMPP XML stream. + +What follows is a walk-through of *The Definitive Guide* highlighting the +changes needed to make the code examples work with version 1.0 of SleekXMPP. +These changes have been kept to a minimum to preserve the correlation with +the book's explanations, so be aware that some code may not use current best +practices. + +Example 2-2. (Page 26) +---------------------- + +**Implementation of a basic bot that echoes all incoming messages back to its sender.** + +The echo bot example requires a change to the ``handleIncomingMessage`` method +to reflect the use of the ``Message`` :term:`stanza object`. The +``"jid"`` field of the message object should now be ``"from"`` to match the +``from`` attribute of the actual XML message stanza. Likewise, ``"message"`` +changes to ``"body"`` to match the ``body`` element of the message stanza. + +Updated Code +~~~~~~~~~~~~ + +.. code-block:: python + + def handleIncomingMessage(self, message): + self.xmpp.sendMessage(message["from"], message["body"]) + +`View full source `_ | +`View original code `_ + +Example 14-1. (Page 215) +------------------------ + +**CheshiR IM bot implementation.** + +The main event handling method in the Bot class is meant to process both message +events and presence update events. With the new changes in SleekXMPP 1.0, +extracting a CheshiR status "message" from both types of stanzas +requires accessing different attributes. In the case of a message stanza, the +``"body"`` attribute would contain the CheshiR message. For a presence event, +the information is stored in the ``"status"`` attribute. To handle both cases, +we can test the type of the given event object and look up the proper attribute +based on the type. + +Like in the EchoBot example, the expression ``event["jid"]`` needs to change +to ``event["from"]`` in order to get a JID object for the stanza's sender. +Because other functions in CheshiR assume that the JID is a string, the ``jid`` +attribute is used to access the string version of the JID. A check is also added +in case ``user`` is ``None``, but the check could (and probably should) be +placed in ``addMessageFromUser``. + +Another change is needed in ``handleMessageAddedToBackend`` where +an HTML-IM response is created. The HTML content should be enclosed in a single +element, such as a ``

`` tag. + +Updated Code +~~~~~~~~~~~~ + +.. code-block:: python + + def handleIncomingXMPPEvent(self, event): + msgLocations = {sleekxmpp.stanza.presence.Presence: "status", + sleekxmpp.stanza.message.Message: "body"} + + message = event[msgLocations[type(event)]] + user = self.backend.getUserFromJID(event["from"].jid) + if user is not None: + self.backend.addMessageFromUser(message, user) + + def handleMessageAddedToBackend(self, message) : + body = message.user + ": " + message.text + htmlBody = "

%(user)s: %(message)s

" % { + "uri": self.url + "/" + message.user, + "user" : message.user, "message" : message.text } + for subscriberJID in self.backend.getSubscriberJIDs(message.user) : + self.xmpp.sendMessage(subscriberJID, body, mhtml=htmlBody) + +`View full source `_ | +`View original code `_ + + +Example 14-3. (Page 217) +------------------------ +**Configurable CheshiR IM bot implementation.** + +.. note:: + Since the CheshiR examples build on each other, see previous sections for + corrections to code that is not marked as new in the book example. + +The main difference for the configurable IM bot is the handling for the +data form in ``handleConfigurationCommand``. The test for equality +with the string ``"1"`` is no longer required; SleekXMPP converts +boolean data form fields to the values ``True`` and ``False`` +automatically. + +For the method ``handleIncomingXMPPPresence``, the attribute +``"jid"`` is again converted to ``"from"`` to get a JID +object for the presence stanza's sender, and the ``jid`` attribute is +used to access the string version of that JID object. A check is also added in +case ``user`` is ``None``, but the check could (and probably +should) be placed in ``getShouldMonitorPresenceFromUser``. + +Updated Code +~~~~~~~~~~~~ + +.. code-block:: python + + def handleConfigurationCommand(self, form, sessionId): + values = form.getValues() + monitorPresence =values["monitorPresence"] + jid = self.xmpp.plugin["xep_0050"].sessions[sessionId]["jid"] + user = self.backend.getUserFromJID(jid) + self.backend.setShouldMonitorPresenceFromUser(user, monitorPresence) + + def handleIncomingXMPPPresence(self, event): + user = self.backend.getUserFromJID(event["from"].jid) + if user is not None: + if self.backend.getShouldMonitorPresenceFromUser(user): + self.handleIncomingXMPPEvent(event) + +`View full source `_ | +`View original code `_ + + +Example 14-4. (Page 220) +------------------------ +**CheshiR IM server component implementation.** + +.. note:: + Since the CheshiR examples build on each other, see previous sections for + corrections to code that is not marked as new in the book example. + +Like several previous examples, a needed change is to replace +``subscription["from"]`` with ``subscription["from"].jid`` because the +``BaseXMPP`` method ``makePresence`` requires the JID to be a string. + +A correction needs to be made in ``handleXMPPPresenceProbe`` because a line was +left out of the original implementation; the variable ``user`` is undefined. The +JID of the user can be extracted from the presence stanza's ``from`` attribute. + +Since this implementation of CheshiR uses an XMPP component, it must +include a ``from`` attribute in all messages that it sends. Adding the +``from`` attribute is done by including ``mfrom=self.xmpp.jid`` in calls to +``self.xmpp.sendMessage``. + +Updated Code +~~~~~~~~~~~~ + +.. code-block:: python + + def handleXMPPPresenceProbe(self, event) : + self.xmpp.sendPresence(pto = event["from"]) + + def handleXMPPPresenceSubscription(self, subscription) : + if subscription["type"] == "subscribe" : + userJID = subscription["from"].jid + self.xmpp.sendPresenceSubscription(pto=userJID, ptype="subscribed") + self.xmpp.sendPresence(pto = userJID) + self.xmpp.sendPresenceSubscription(pto=userJID, ptype="subscribe") + + def handleMessageAddedToBackend(self, message) : + body = message.user + ": " + message.text + for subscriberJID in self.backend.getSubscriberJIDs(message.user) : + self.xmpp.sendMessage(subscriberJID, body, mfrom=self.xmpp.jid) + +`View full source `_ | +`View original code `_ + + +Example 14-6. (Page 223) +------------------------ +**CheshiR IM server component with in-band registration support.** + +.. note:: + Since the CheshiR examples build on each other, see previous sections for + corrections to code that is not marked as new in the book example. + +After applying the changes from Example 14-4 above, the registrable component +implementation should work correctly. + +.. tip:: + To see how to implement in-band registration as a SleekXMPP plugin, + see the tutorial :ref:`tutorial-create-plugin`. + +`View full source `_ | +`View original code `_ + +Example 14-7. (Page 225) +------------------------ +**Extended CheshiR IM server component implementation.** + +.. note:: + Since the CheshiR examples build on each other, see previous + sections for corrections to code that is not marked as new in the book + example. + +While the final code example can look daunting with all of the changes +made, it requires very few modifications to work with the latest version of +SleekXMPP. Most differences are the result of CheshiR's backend functions +expecting JIDs to be strings so that they can be stripped to bare JIDs. To +resolve these, use the ``jid`` attribute of the JID objects. Also, +references to ``"message"`` and ``"jid"`` attributes need to +be changed to either ``"body"`` or ``"status"``, and either +``"from"`` or ``"to"`` depending on if the object is a message +or presence stanza and which of the JIDs from the stanza is needed. + +Updated Code +~~~~~~~~~~~~ + +.. code-block:: python + + def handleIncomingXMPPMessage(self, event) : + message = self.addRecipientToMessage(event["body"], event["to"].jid) + user = self.backend.getUserFromJID(event["from"].jid) + self.backend.addMessageFromUser(message, user) + + def handleIncomingXMPPPresence(self, event) : + if event["to"].jid == self.componentDomain : + user = self.backend.getUserFromJID(event["from"].jid) + self.backend.addMessageFromUser(event["status"], user) + + ... + + def handleXMPPPresenceSubscription(self, subscription) : + if subscription["type"] == "subscribe" : + userJID = subscription["from"].jid + user = self.backend.getUserFromJID(userJID) + contactJID = subscription["to"] + self.xmpp.sendPresenceSubscription( + pfrom=contactJID, pto=userJID, ptype="subscribed", pnick=user) + self.sendPresenceOfContactToUser(contactJID=contactJID, userJID=userJID) + if contactJID == self.componentDomain : + self.sendAllContactSubscriptionRequestsToUser(userJID) + +`View full source `_ | +`View original code `_ From 3a4e3d3f51f43de67d4249ed3a2e9c339c9c717a Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Thu, 5 Jan 2012 12:13:06 -0500 Subject: [PATCH 2/7] Update doc settings to new theme, add examples, use 1.0 --- docs/.gitignore | 1 + docs/_static/haiku.css | 15 ++- docs/_static/pygments.css | 70 ++++++++++++ docs/conf.py | 4 +- docs/index.rst | 2 +- examples/adhoc_provider.py | 204 +++++++++++++++++++++++++++++++++ examples/adhoc_user.py | 210 ++++++++++++++++++++++++++++++++++ examples/disco_browser.py | 199 ++++++++++++++++++++++++++++++++ examples/echo_client.py | 144 +++++++++++++++++++++++ examples/echo_component.py | 122 ++++++++++++++++++++ examples/muc.py | 193 +++++++++++++++++++++++++++++++ examples/ping.py | 141 +++++++++++++++++++++++ examples/proxy_echo_client.py | 168 +++++++++++++++++++++++++++ examples/roster_browser.py | 172 ++++++++++++++++++++++++++++ examples/rpc_async.py | 44 +++++++ examples/rpc_client_side.py | 53 +++++++++ examples/rpc_server_side.py | 52 +++++++++ examples/send_client.py | 143 +++++++++++++++++++++++ 18 files changed, 1929 insertions(+), 8 deletions(-) create mode 100644 docs/.gitignore create mode 100644 docs/_static/pygments.css create mode 100755 examples/adhoc_provider.py create mode 100755 examples/adhoc_user.py create mode 100755 examples/disco_browser.py create mode 100755 examples/echo_client.py create mode 100755 examples/echo_component.py create mode 100755 examples/muc.py create mode 100755 examples/ping.py create mode 100755 examples/proxy_echo_client.py create mode 100644 examples/roster_browser.py create mode 100644 examples/rpc_async.py create mode 100644 examples/rpc_client_side.py create mode 100644 examples/rpc_server_side.py create mode 100755 examples/send_client.py diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..88f9974 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +_build/* diff --git a/docs/_static/haiku.css b/docs/_static/haiku.css index 615ed47..9651d11 100644 --- a/docs/_static/haiku.css +++ b/docs/_static/haiku.css @@ -59,9 +59,10 @@ body { margin: auto; padding: 0px; font-family: "Helvetica Neueu", Helvetica, sans-serif; - min-width: 59em; + min-width: 30em; max-width: 70em; color: #444; + text-align: center; } div.footer { @@ -124,21 +125,25 @@ a.headerlink:hover { /* basic text elements */ div.content { + margin: auto; margin-top: 20px; - margin-left: 40px; - margin-right: 40px; margin-bottom: 50px; font-size: 0.9em; + width: 700px; + text-align: left; } /* heading and navigation */ div.header { position: relative; + margin: auto; margin-top: 125px; height: 85px; padding: 0 40px; font-family: "Yanone Kaffeesatz"; + text-align: left; + width: 750px; } div.header h1 { font-size: 2.6em; @@ -185,12 +190,12 @@ div.topnav { z-index: 0; } div.topnav p { + margin: auto; margin-top: 0; - margin-left: 40px; - margin-right: 40px; margin-bottom: 0px; text-align: right; font-size: 0.8em; + width: 750px; } div.bottomnav { background: #eeeeee; diff --git a/docs/_static/pygments.css b/docs/_static/pygments.css new file mode 100644 index 0000000..f04bc73 --- /dev/null +++ b/docs/_static/pygments.css @@ -0,0 +1,70 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #000000; color: #f6f3e8; } +.highlight .c { color: #7C7C7C; } /* Comment */ +.highlight .err { color: #f6f3e8; } /* Error */ +.highlight .g { color: #f6f3e8; } /* Generic */ +.highlight .k { color: #00ADEE; } /* Keyword */ +.highlight .l { color: #f6f3e8; } /* Literal */ +.highlight .n { color: #f6f3e8; } /* Name */ +.highlight .o { color: #f6f3e8; } /* Operator */ +.highlight .x { color: #f6f3e8; } /* Other */ +.highlight .p { color: #f6f3e8; } /* Punctuation */ +.highlight .cm { color: #7C7C7C; } /* Comment.Multiline */ +.highlight .cp { color: #96CBFE; } /* Comment.Preproc */ +.highlight .c1 { color: #7C7C7C; } /* Comment.Single */ +.highlight .cs { color: #7C7C7C; } /* Comment.Special */ +.highlight .gd { color: #f6f3e8; } /* Generic.Deleted */ +.highlight .ge { color: #f6f3e8; } /* Generic.Emph */ +.highlight .gr { color: #ffffff; background-color: #ff0000 } /* Generic.Error */ +.highlight .gh { color: #f6f3e8; font-weight: bold; } /* Generic.Heading */ +.highlight .gi { color: #f6f3e8; } /* Generic.Inserted */ +.highlight .go { color: #070707; } /* Generic.Output */ +.highlight .gp { color: #f6f3e8; } /* Generic.Prompt */ +.highlight .gs { color: #f6f3e8; } /* Generic.Strong */ +.highlight .gu { color: #f6f3e8; font-weight: bold; } /* Generic.Subheading */ +.highlight .gt { color: #ffffff; font-weight: bold; background-color: #FF6C60 } /* Generic.Traceback */ +.highlight .kc { color: #6699CC; } /* Keyword.Constant */ +.highlight .kd { color: #6699CC; } /* Keyword.Declaration */ +.highlight .kn { color: #6699CC; } /* Keyword.Namespace */ +.highlight .kp { color: #6699CC; } /* Keyword.Pseudo */ +.highlight .kr { color: #6699CC; } /* Keyword.Reserved */ +.highlight .kt { color: #FFFFB6; } /* Keyword.Type */ +.highlight .ld { color: #f6f3e8; } /* Literal.Date */ +.highlight .m { color: #FF73FD; } /* Literal.Number */ +.highlight .s { color: #F46DBA;/*#A8FF60;*/ } /* Literal.String */ +.highlight .na { color: #f6f3e8; } /* Name.Attribute */ +.highlight .nb { color: #f6f3e8; } /* Name.Builtin */ +.highlight .nc { color: #f6f3e8; } /* Name.Class */ +.highlight .no { color: #99CC99; } /* Name.Constant */ +.highlight .nd { color: #f6f3e8; } /* Name.Decorator */ +.highlight .ni { color: #E18964; } /* Name.Entity */ +.highlight .ne { color: #f6f3e8; } /* Name.Exception */ +.highlight .nf { color: #F64DBA; } /* Name.Function */ +.highlight .nl { color: #f6f3e8; } /* Name.Label */ +.highlight .nn { color: #f6f3e8; } /* Name.Namespace */ +.highlight .nx { color: #f6f3e8; } /* Name.Other */ +.highlight .py { color: #f6f3e8; } /* Name.Property */ +.highlight .nt { color: #00ADEE; } /* Name.Tag */ +.highlight .nv { color: #C6C5FE; } /* Name.Variable */ +.highlight .ow { color: #ffffff; } /* Operator.Word */ +.highlight .w { color: #f6f3e8; } /* Text.Whitespace */ +.highlight .mf { color: #FF73FD; } /* Literal.Number.Float */ +.highlight .mh { color: #FF73FD; } /* Literal.Number.Hex */ +.highlight .mi { color: #FF73FD; } /* Literal.Number.Integer */ +.highlight .mo { color: #FF73FD; } /* Literal.Number.Oct */ +.highlight .sb { color: #A8FF60; } /* Literal.String.Backtick */ +.highlight .sc { color: #A8FF60; } /* Literal.String.Char */ +.highlight .sd { color: #A8FF60; } /* Literal.String.Doc */ +.highlight .s2 { color: #A8FF60; } /* Literal.String.Double */ +.highlight .se { color: #A8FF60; } /* Literal.String.Escape */ +.highlight .sh { color: #A8FF60; } /* Literal.String.Heredoc */ +.highlight .si { color: #A8FF60; } /* Literal.String.Interpol */ +.highlight .sx { color: #A8FF60; } /* Literal.String.Other */ +.highlight .sr { color: #A8FF60; } /* Literal.String.Regex */ +.highlight .s1 { color: #A8FF60; } /* Literal.String.Single */ +.highlight .ss { color: #A8FF60; } /* Literal.String.Symbol */ +.highlight .bp { color: #f6f3e8; } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #C6C5FE; } /* Name.Variable.Class */ +.highlight .vg { color: #C6C5FE; } /* Name.Variable.Global */ +.highlight .vi { color: #C6C5FE; } /* Name.Variable.Instance */ +.highlight .il { color: #FF73FD; } /* Literal.Number.Integer.Long */ diff --git a/docs/conf.py b/docs/conf.py index dd83f24..72e39d0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -50,7 +50,7 @@ copyright = u'2011, Nathan Fritz, Lance Stout' # The short X.Y version. version = '1.0' # The full version, including alpha/beta/rc tags. -release = '1.0RC3' +release = '1.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -91,7 +91,7 @@ pygments_style = 'tango' # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'nature' +html_theme = 'haiku' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the diff --git a/docs/index.rst b/docs/index.rst index fc6541d..dc482d6 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -13,7 +13,7 @@ SleekXMPP ``develop`` branch. **Latest Stable Release** - - `1.0 RC3 `_ + - `1.0 `_ **Develop Releases** - `Latest Develop Version `_ diff --git a/examples/adhoc_provider.py b/examples/adhoc_provider.py new file mode 100755 index 0000000..a72158c --- /dev/null +++ b/examples/adhoc_provider.py @@ -0,0 +1,204 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +from optparse import OptionParser + +import sleekxmpp + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class CommandBot(sleekxmpp.ClientXMPP): + + """ + A simple SleekXMPP bot that provides a basic + adhoc command. + """ + + def __init__(self, jid, password): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + # The session_start event will be triggered when + # the bot establishes its connection with the server + # and the XML streams are ready for use. We want to + # listen for this event so that we we can initialize + # our roster. + self.add_event_handler("session_start", self.start) + + def start(self, event): + """ + Process the session_start event. + + Typical actions for the session_start event are + requesting the roster and broadcasting an initial + presence stanza. + + Arguments: + event -- An empty dictionary. The session_start + event does not provide any additional + data. + """ + self.send_presence() + self.get_roster() + + # We add the command after session_start has fired + # to ensure that the correct full JID is used. + + # If using a component, may also pass jid keyword parameter. + + self['xep_0050'].add_command(node='greeting', + name='Greeting', + handler=self._handle_command) + + def _handle_command(self, iq, session): + """ + Respond to the initial request for a command. + + Arguments: + iq -- The iq stanza containing the command request. + session -- A dictionary of data relevant to the command + session. Additional, custom data may be saved + here to persist across handler callbacks. + """ + form = self['xep_0004'].makeForm('form', 'Greeting') + form['instructions'] = 'Send a custom greeting to a JID' + form.addField(var='greeting', + ftype='text-single', + label='Your greeting') + + session['payload'] = form + session['next'] = self._handle_command_complete + session['has_next'] = False + + # Other useful session values: + # session['to'] -- The JID that received the + # command request. + # session['from'] -- The JID that sent the + # command request. + # session['has_next'] = True -- There are more steps to complete + # session['allow_complete'] = True -- Allow user to finish immediately + # and possibly skip steps + # session['cancel'] = handler -- Assign a handler for if the user + # cancels the command. + # session['notes'] = [ -- Add informative notes about the + # ('info', 'Info message'), command's results. + # ('warning', 'Warning message'), + # ('error', 'Error message')] + + return session + + def _handle_command_complete(self, payload, session): + """ + Process a command result from the user. + + Arguments: + payload -- Either a single item, such as a form, or a list + of items or forms if more than one form was + provided to the user. The payload may be any + stanza, such as jabber:x:oob for out of band + data, or jabber:x:data for typical data forms. + session -- A dictionary of data relevant to the command + session. Additional, custom data may be saved + here to persist across handler callbacks. + """ + + # In this case (as is typical), the payload is a form + form = payload + + greeting = form['values']['greeting'] + + self.send_message(mto=session['from'], + mbody="%s, World!" % greeting, + mtype='chat') + + # Having no return statement is the same as unsetting the 'payload' + # and 'next' session values and returning the session. + + # Unless it is the final step, always return the session dictionary. + + session['payload'] = None + session['next'] = None + + return session + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + + # Output verbosity options. + optp.add_option('-q', '--quiet', help='set logging to ERROR', + action='store_const', dest='loglevel', + const=logging.ERROR, default=logging.INFO) + optp.add_option('-d', '--debug', help='set logging to DEBUG', + action='store_const', dest='loglevel', + const=logging.DEBUG, default=logging.INFO) + optp.add_option('-v', '--verbose', help='set logging to COMM', + action='store_const', dest='loglevel', + const=5, default=logging.INFO) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + + opts, args = optp.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + + # Setup the CommandBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = CommandBot(opts.jid, opts.password) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0004') # Data Forms + xmpp.register_plugin('xep_0050') # Adhoc Commands + xmpp.register_plugin('xep_0199', {'keepalive': True, 'frequency':15}) + + # If you are working with an OpenFire server, you may need + # to adjust the SSL version used: + # xmpp.ssl_version = ssl.PROTOCOL_SSLv3 + + # If you want to verify the SSL certificates offered by a server: + # xmpp.ca_certs = "path/to/ca/cert" + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + # If you do not have the dnspython library installed, you will need + # to manually specify the name of the server if it does not match + # the one in the JID. For example, to use Google Talk you would + # need to use: + # + # if xmpp.connect(('talk.google.com', 5222)): + # ... + xmpp.process(block=True) + print("Done") + else: + print("Unable to connect.") diff --git a/examples/adhoc_user.py b/examples/adhoc_user.py new file mode 100755 index 0000000..bbd42d8 --- /dev/null +++ b/examples/adhoc_user.py @@ -0,0 +1,210 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +from optparse import OptionParser + +import sleekxmpp + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class CommandUserBot(sleekxmpp.ClientXMPP): + + """ + A simple SleekXMPP bot that uses the adhoc command + provided by the adhoc_provider.py example. + """ + + def __init__(self, jid, password, other, greeting): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + self.command_provider = other + self.greeting = greeting + + # The session_start event will be triggered when + # the bot establishes its connection with the server + # and the XML streams are ready for use. We want to + # listen for this event so that we we can initialize + # our roster. + self.add_event_handler("session_start", self.start) + self.add_event_handler("message", self.message) + + def start(self, event): + """ + Process the session_start event. + + Typical actions for the session_start event are + requesting the roster and broadcasting an initial + presence stanza. + + Arguments: + event -- An empty dictionary. The session_start + event does not provide any additional + data. + """ + self.send_presence() + self.get_roster() + + # We first create a session dictionary containing: + # 'next' -- the handler to execute on a successful response + # 'error' -- the handler to execute if an error occurs + + # The session may also contain custom data. + + session = {'greeting': self.greeting, + 'next': self._command_start, + 'error': self._command_error} + + self['xep_0050'].start_command(jid=self.command_provider, + node='greeting', + session=session) + + def message(self, msg): + """ + Process incoming message stanzas. + + Arguments: + msg -- The received message stanza. + """ + logging.info(msg['body']) + + def _command_start(self, iq, session): + """ + Process the initial command result. + + Arguments: + iq -- The iq stanza containing the command result. + session -- A dictionary of data relevant to the command + session. Additional, custom data may be saved + here to persist across handler callbacks. + """ + + # The greeting command provides a form with a single field: + # + # + # + + form = self['xep_0004'].makeForm(ftype='submit') + form.addField(var='greeting', + value=session['greeting']) + + session['payload'] = form + + # We don't need to process the next result. + session['next'] = None + + # Other options include using: + # continue_command() -- Continue to the next step in the workflow + # cancel_command() -- Stop command execution. + + self['xep_0050'].complete_command(session) + + def _command_error(self, iq, session): + """ + Process an error that occurs during command execution. + + Arguments: + iq -- The iq stanza containing the error. + session -- A dictionary of data relevant to the command + session. Additional, custom data may be saved + here to persist across handler callbacks. + """ + logging.error("COMMAND: %s %s" % (iq['error']['condition'], + iq['error']['text'])) + + # Terminate the command's execution and clear its session. + # The session will automatically be cleared if no error + # handler is provided. + self['xep_0050'].terminate_command(session) + self.disconnect() + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + + # Output verbosity options. + optp.add_option('-q', '--quiet', help='set logging to ERROR', + action='store_const', dest='loglevel', + const=logging.ERROR, default=logging.INFO) + optp.add_option('-d', '--debug', help='set logging to DEBUG', + action='store_const', dest='loglevel', + const=logging.DEBUG, default=logging.INFO) + optp.add_option('-v', '--verbose', help='set logging to COMM', + action='store_const', dest='loglevel', + const=5, default=logging.INFO) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + optp.add_option("-o", "--other", dest="other", + help="JID providing commands") + optp.add_option("-g", "--greeting", dest="greeting", + help="Greeting") + + opts, args = optp.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + if opts.other is None: + opts.other = raw_input("JID Providing Commands: ") + if opts.greeting is None: + opts.greeting = raw_input("Greeting: ") + + # Setup the CommandBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = CommandUserBot(opts.jid, opts.password, opts.other, opts.greeting) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0004') # Data Forms + xmpp.register_plugin('xep_0050') # Adhoc Commands + + # If you are working with an OpenFire server, you may need + # to adjust the SSL version used: + # xmpp.ssl_version = ssl.PROTOCOL_SSLv3 + + # If you want to verify the SSL certificates offered by a server: + # xmpp.ca_certs = "path/to/ca/cert" + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + # If you do not have the dnspython library installed, you will need + # to manually specify the name of the server if it does not match + # the one in the JID. For example, to use Google Talk you would + # need to use: + # + # if xmpp.connect(('talk.google.com', 5222)): + # ... + xmpp.process(block=True) + print("Done") + else: + print("Unable to connect.") diff --git a/examples/disco_browser.py b/examples/disco_browser.py new file mode 100755 index 0000000..0d282d7 --- /dev/null +++ b/examples/disco_browser.py @@ -0,0 +1,199 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +from optparse import OptionParser + +import sleekxmpp + + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class Disco(sleekxmpp.ClientXMPP): + + """ + A demonstration for using basic service discovery. + + Send a disco#info and disco#items request to a JID/node combination, + and print out the results. + + May also request only particular info categories such as just features, + or just items. + """ + + def __init__(self, jid, password, target_jid, target_node='', get=''): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + # Using service discovery requires the XEP-0030 plugin. + self.register_plugin('xep_0030') + + self.get = get + self.target_jid = target_jid + self.target_node = target_node + + # Values to control which disco entities are reported + self.info_types = ['', 'all', 'info', 'identities', 'features'] + self.identity_types = ['', 'all', 'info', 'identities'] + self.feature_types = ['', 'all', 'info', 'features'] + self.items_types = ['', 'all', 'items'] + + + # The session_start event will be triggered when + # the bot establishes its connection with the server + # and the XML streams are ready for use. We want to + # listen for this event so that we we can initialize + # our roster. + self.add_event_handler("session_start", self.start) + + def start(self, event): + """ + Process the session_start event. + + Typical actions for the session_start event are + requesting the roster and broadcasting an initial + presence stanza. + + In this case, we send disco#info and disco#items + stanzas to the requested JID and print the results. + + Arguments: + event -- An empty dictionary. The session_start + event does not provide any additional + data. + """ + self.get_roster() + self.send_presence() + + if self.get in self.info_types: + # By using block=True, the result stanza will be + # returned. Execution will block until the reply is + # received. Non-blocking options would be to listen + # for the disco_info event, or passing a handler + # function using the callback parameter. + info = self['xep_0030'].get_info(jid=self.target_jid, + node=self.target_node, + block=True) + if self.get in self.items_types: + # The same applies from above. Listen for the + # disco_items event or pass a callback function + # if you need to process a non-blocking request. + items = self['xep_0030'].get_items(jid=self.target_jid, + node=self.target_node, + block=True) + else: + logging.error("Invalid disco request type.") + self.disconnect() + return + + header = 'XMPP Service Discovery: %s' % self.target_jid + print(header) + print('-' * len(header)) + if self.target_node != '': + print('Node: %s' % self.target_node) + print('-' * len(header)) + + if self.get in self.identity_types: + print('Identities:') + for identity in info['disco_info']['identities']: + print(' - %s' % str(identity)) + + if self.get in self.feature_types: + print('Features:') + for feature in info['disco_info']['features']: + print(' - %s' % feature) + + if self.get in self.items_types: + print('Items:') + for item in items['disco_items']['items']: + print(' - %s' % str(item)) + + self.disconnect() + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + optp.version = '%%prog 0.1' + optp.usage = "Usage: %%prog [options] %s []" % \ + 'all|info|items|identities|features' + + optp.add_option('-q','--quiet', help='set logging to ERROR', + action='store_const', + dest='loglevel', + const=logging.ERROR, + default=logging.ERROR) + optp.add_option('-d','--debug', help='set logging to DEBUG', + action='store_const', + dest='loglevel', + const=logging.DEBUG, + default=logging.ERROR) + optp.add_option('-v','--verbose', help='set logging to COMM', + action='store_const', + dest='loglevel', + const=5, + default=logging.ERROR) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + opts,args = optp.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if len(args) < 2: + optp.print_help() + exit() + + if len(args) == 2: + args = (args[0], args[1], '') + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + + # Setup the Disco browser. + xmpp = Disco(opts.jid, opts.password, args[1], args[2], args[0]) + + # If you are working with an OpenFire server, you may need + # to adjust the SSL version used: + # xmpp.ssl_version = ssl.PROTOCOL_SSLv3 + + # If you want to verify the SSL certificates offered by a server: + # xmpp.ca_certs = "path/to/ca/cert" + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + # If you do not have the dnspython library installed, you will need + # to manually specify the name of the server if it does not match + # the one in the JID. For example, to use Google Talk you would + # need to use: + # + # if xmpp.connect(('talk.google.com', 5222)): + # ... + xmpp.process(block=True) + else: + print("Unable to connect.") diff --git a/examples/echo_client.py b/examples/echo_client.py new file mode 100755 index 0000000..7e553c4 --- /dev/null +++ b/examples/echo_client.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +from optparse import OptionParser + +import sleekxmpp + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class EchoBot(sleekxmpp.ClientXMPP): + + """ + A simple SleekXMPP bot that will echo messages it + receives, along with a short thank you message. + """ + + def __init__(self, jid, password): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + # The session_start event will be triggered when + # the bot establishes its connection with the server + # and the XML streams are ready for use. We want to + # listen for this event so that we we can initialize + # our roster. + self.add_event_handler("session_start", self.start) + + # The message event is triggered whenever a message + # stanza is received. Be aware that that includes + # MUC messages and error messages. + self.add_event_handler("message", self.message) + + def start(self, event): + """ + Process the session_start event. + + Typical actions for the session_start event are + requesting the roster and broadcasting an initial + presence stanza. + + Arguments: + event -- An empty dictionary. The session_start + event does not provide any additional + data. + """ + self.send_presence() + self.get_roster() + + def message(self, msg): + """ + Process incoming message stanzas. Be aware that this also + includes MUC messages and error messages. It is usually + a good idea to check the messages's type before processing + or sending replies. + + Arguments: + msg -- The received message stanza. See the documentation + for stanza objects and the Message stanza to see + how it may be used. + """ + if msg['type'] in ('chat', 'normal'): + msg.reply("Thanks for sending\n%(body)s" % msg).send() + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + + # Output verbosity options. + optp.add_option('-q', '--quiet', help='set logging to ERROR', + action='store_const', dest='loglevel', + const=logging.ERROR, default=logging.INFO) + optp.add_option('-d', '--debug', help='set logging to DEBUG', + action='store_const', dest='loglevel', + const=logging.DEBUG, default=logging.INFO) + optp.add_option('-v', '--verbose', help='set logging to COMM', + action='store_const', dest='loglevel', + const=5, default=logging.INFO) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + + opts, args = optp.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + + # Setup the EchoBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = EchoBot(opts.jid, opts.password) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0004') # Data Forms + xmpp.register_plugin('xep_0060') # PubSub + xmpp.register_plugin('xep_0199') # XMPP Ping + + # If you are working with an OpenFire server, you may need + # to adjust the SSL version used: + # xmpp.ssl_version = ssl.PROTOCOL_SSLv3 + + # If you want to verify the SSL certificates offered by a server: + # xmpp.ca_certs = "path/to/ca/cert" + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + # If you do not have the dnspython library installed, you will need + # to manually specify the name of the server if it does not match + # the one in the JID. For example, to use Google Talk you would + # need to use: + # + # if xmpp.connect(('talk.google.com', 5222)): + # ... + xmpp.process(block=True) + print("Done") + else: + print("Unable to connect.") diff --git a/examples/echo_component.py b/examples/echo_component.py new file mode 100755 index 0000000..82f6eb9 --- /dev/null +++ b/examples/echo_component.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +from optparse import OptionParser + +import sleekxmpp +from sleekxmpp.componentxmpp import ComponentXMPP + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class EchoComponent(ComponentXMPP): + + """ + A simple SleekXMPP component that echoes messages. + """ + + def __init__(self, jid, secret, server, port): + ComponentXMPP.__init__(self, jid, secret, server, port) + + # You don't need a session_start handler, but that is + # where you would broadcast initial presence. + + # The message event is triggered whenever a message + # stanza is received. Be aware that that includes + # MUC messages and error messages. + self.add_event_handler("message", self.message) + + def message(self, msg): + """ + Process incoming message stanzas. Be aware that this also + includes MUC messages and error messages. It is usually + a good idea to check the messages's type before processing + or sending replies. + + Since a component may send messages from any number of JIDs, + it is best to always include a from JID. + + Arguments: + msg -- The received message stanza. See the documentation + for stanza objects and the Message stanza to see + how it may be used. + """ + # The reply method will use the messages 'to' JID as the + # outgoing reply's 'from' JID. + msg.reply("Thanks for sending\n%(body)s" % msg).send() + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + + # Output verbosity options. + optp.add_option('-q', '--quiet', help='set logging to ERROR', + action='store_const', dest='loglevel', + const=logging.ERROR, default=logging.INFO) + optp.add_option('-d', '--debug', help='set logging to DEBUG', + action='store_const', dest='loglevel', + const=logging.DEBUG, default=logging.INFO) + optp.add_option('-v', '--verbose', help='set logging to COMM', + action='store_const', dest='loglevel', + const=5, default=logging.INFO) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + optp.add_option("-s", "--server", dest="server", + help="server to connect to") + optp.add_option("-P", "--port", dest="port", + help="port to connect to") + + opts, args = optp.parse_args() + + if opts.jid is None: + opts.jid = raw_input("Component JID: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + if opts.server is None: + opts.server = raw_input("Server: ") + if opts.port is None: + opts.port = int(raw_input("Port: ")) + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + # Setup the EchoComponent and register plugins. Note that while plugins + # may have interdependencies, the order in which you register them does + # not matter. + xmpp = EchoComponent(opts.jid, opts.password, opts.server, opts.port) + xmpp.registerPlugin('xep_0030') # Service Discovery + xmpp.registerPlugin('xep_0004') # Data Forms + xmpp.registerPlugin('xep_0060') # PubSub + xmpp.registerPlugin('xep_0199') # XMPP Ping + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + xmpp.process(block=True) + print("Done") + else: + print("Unable to connect.") diff --git a/examples/muc.py b/examples/muc.py new file mode 100755 index 0000000..8fe2eb4 --- /dev/null +++ b/examples/muc.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +from optparse import OptionParser + +import sleekxmpp + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class MUCBot(sleekxmpp.ClientXMPP): + + """ + A simple SleekXMPP bot that will greets those + who enter the room, and acknowledge any messages + that mentions the bot's nickname. + """ + + def __init__(self, jid, password, room, nick): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + self.room = room + self.nick = nick + + # The session_start event will be triggered when + # the bot establishes its connection with the server + # and the XML streams are ready for use. We want to + # listen for this event so that we we can initialize + # our roster. + self.add_event_handler("session_start", self.start) + + # The groupchat_message event is triggered whenever a message + # stanza is received from any chat room. If you also also + # register a handler for the 'message' event, MUC messages + # will be processed by both handlers. + self.add_event_handler("groupchat_message", self.muc_message) + + # The groupchat_presence event is triggered whenever a + # presence stanza is received from any chat room, including + # any presences you send yourself. To limit event handling + # to a single room, use the events muc::room@server::presence, + # muc::room@server::got_online, or muc::room@server::got_offline. + self.add_event_handler("muc::%s::got_online" % self.room, + self.muc_online) + + + def start(self, event): + """ + Process the session_start event. + + Typical actions for the session_start event are + requesting the roster and broadcasting an initial + presence stanza. + + Arguments: + event -- An empty dictionary. The session_start + event does not provide any additional + data. + """ + self.getRoster() + self.sendPresence() + self.plugin['xep_0045'].joinMUC(self.room, + self.nick, + # If a room password is needed, use: + # password=the_room_password, + wait=True) + + def muc_message(self, msg): + """ + Process incoming message stanzas from any chat room. Be aware + that if you also have any handlers for the 'message' event, + message stanzas may be processed by both handlers, so check + the 'type' attribute when using a 'message' event handler. + + Whenever the bot's nickname is mentioned, respond to + the message. + + IMPORTANT: Always check that a message is not from yourself, + otherwise you will create an infinite loop responding + to your own messages. + + This handler will reply to messages that mention + the bot's nickname. + + Arguments: + msg -- The received message stanza. See the documentation + for stanza objects and the Message stanza to see + how it may be used. + """ + if msg['mucnick'] != self.nick and self.nick in msg['body']: + self.send_message(mto=msg['from'].bare, + mbody="I heard that, %s." % msg['mucnick'], + mtype='groupchat') + + def muc_online(self, presence): + """ + Process a presence stanza from a chat room. In this case, + presences from users that have just come online are + handled by sending a welcome message that includes + the user's nickname and role in the room. + + Arguments: + presence -- The received presence stanza. See the + documentation for the Presence stanza + to see how else it may be used. + """ + if presence['muc']['nick'] != self.nick: + self.send_message(mto=presence['from'].bare, + mbody="Hello, %s %s" % (presence['muc']['role'], + presence['muc']['nick']), + mtype='groupchat') + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + + # Output verbosity options. + optp.add_option('-q', '--quiet', help='set logging to ERROR', + action='store_const', dest='loglevel', + const=logging.ERROR, default=logging.INFO) + optp.add_option('-d', '--debug', help='set logging to DEBUG', + action='store_const', dest='loglevel', + const=logging.DEBUG, default=logging.INFO) + optp.add_option('-v', '--verbose', help='set logging to COMM', + action='store_const', dest='loglevel', + const=5, default=logging.INFO) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + optp.add_option("-r", "--room", dest="room", + help="MUC room to join") + optp.add_option("-n", "--nick", dest="nick", + help="MUC nickname") + + opts, args = optp.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + if opts.room is None: + opts.room = raw_input("MUC room: ") + if opts.nick is None: + opts.nick = raw_input("MUC nickname: ") + + # Setup the MUCBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = MUCBot(opts.jid, opts.password, opts.room, opts.nick) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0045') # Multi-User Chat + xmpp.register_plugin('xep_0199') # XMPP Ping + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + # If you do not have the dnspython library installed, you will need + # to manually specify the name of the server if it does not match + # the one in the JID. For example, to use Google Talk you would + # need to use: + # + # if xmpp.connect(('talk.google.com', 5222)): + # ... + xmpp.process(block=True) + print("Done") + else: + print("Unable to connect.") diff --git a/examples/ping.py b/examples/ping.py new file mode 100755 index 0000000..258fd76 --- /dev/null +++ b/examples/ping.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +from optparse import OptionParser + +import sleekxmpp + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class PingTest(sleekxmpp.ClientXMPP): + + """ + A simple SleekXMPP bot that will send a ping request + to a given JID. + """ + + def __init__(self, jid, password, pingjid): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + if pingjid is None: + pingjid = self.jid + self.pingjid = pingjid + + # The session_start event will be triggered when + # the bot establishes its connection with the server + # and the XML streams are ready for use. We want to + # listen for this event so that we we can initialize + # our roster. + self.add_event_handler("session_start", self.start) + + def start(self, event): + """ + Process the session_start event. + + Typical actions for the session_start event are + requesting the roster and broadcasting an initial + presence stanza. + + Arguments: + event -- An empty dictionary. The session_start + event does not provide any additional + data. + """ + self.send_presence() + self.get_roster() + result = self['xep_0199'].send_ping(self.pingjid, + timeout=10, + errorfalse=True) + logging.info("Pinging...") + if result is False: + logging.info("Couldn't ping.") + self.disconnect() + sys.exit(1) + else: + logging.info("Success! RTT: %s", str(result)) + self.disconnect() + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + + # Output verbosity options. + optp.add_option('-q', '--quiet', help='set logging to ERROR', + action='store_const', dest='loglevel', + const=logging.ERROR, default=logging.INFO) + optp.add_option('-d', '--debug', help='set logging to DEBUG', + action='store_const', dest='loglevel', + const=logging.DEBUG, default=logging.INFO) + optp.add_option('-v', '--verbose', help='set logging to COMM', + action='store_const', dest='loglevel', + const=5, default=logging.INFO) + optp.add_option('-t', '--pingto', help='set jid to ping', + action='store', type='string', dest='pingjid', + default=None) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + + opts, args = optp.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + + # Setup the PingTest and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = PingTest(opts.jid, opts.password, opts.pingjid) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0004') # Data Forms + xmpp.register_plugin('xep_0060') # PubSub + xmpp.register_plugin('xep_0199') # XMPP Ping + + # If you are working with an OpenFire server, you may need + # to adjust the SSL version used: + # xmpp.ssl_version = ssl.PROTOCOL_SSLv3 + + # If you want to verify the SSL certificates offered by a server: + # xmpp.ca_certs = "path/to/ca/cert" + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + # If you do not have the dnspython library installed, you will need + # to manually specify the name of the server if it does not match + # the one in the JID. For example, to use Google Talk you would + # need to use: + # + # if xmpp.connect(('talk.google.com', 5222)): + # ... + xmpp.process(block=True) + print("Done") + else: + print("Unable to connect.") diff --git a/examples/proxy_echo_client.py b/examples/proxy_echo_client.py new file mode 100755 index 0000000..25bfc89 --- /dev/null +++ b/examples/proxy_echo_client.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +from optparse import OptionParser + +import sleekxmpp + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class EchoBot(sleekxmpp.ClientXMPP): + + """ + A simple SleekXMPP bot that will echo messages it + receives, along with a short thank you message. + """ + + def __init__(self, jid, password): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + # The session_start event will be triggered when + # the bot establishes its connection with the server + # and the XML streams are ready for use. We want to + # listen for this event so that we we can initialize + # our roster. + self.add_event_handler("session_start", self.start) + + # The message event is triggered whenever a message + # stanza is received. Be aware that that includes + # MUC messages and error messages. + self.add_event_handler("message", self.message) + + def start(self, event): + """ + Process the session_start event. + + Typical actions for the session_start event are + requesting the roster and broadcasting an initial + presence stanza. + + Arguments: + event -- An empty dictionary. The session_start + event does not provide any additional + data. + """ + self.send_presence() + self.get_roster() + + def message(self, msg): + """ + Process incoming message stanzas. Be aware that this also + includes MUC messages and error messages. It is usually + a good idea to check the messages's type before processing + or sending replies. + + Arguments: + msg -- The received message stanza. See the documentation + for stanza objects and the Message stanza to see + how it may be used. + """ + msg.reply("Thanks for sending\n%(body)s" % msg).send() + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + + # Output verbosity options. + optp.add_option('-q', '--quiet', help='set logging to ERROR', + action='store_const', dest='loglevel', + const=logging.ERROR, default=logging.INFO) + optp.add_option('-d', '--debug', help='set logging to DEBUG', + action='store_const', dest='loglevel', + const=logging.DEBUG, default=logging.INFO) + optp.add_option('-v', '--verbose', help='set logging to COMM', + action='store_const', dest='loglevel', + const=5, default=logging.INFO) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + optp.add_option("--phost", dest="proxy_host", + help="Proxy hostname") + optp.add_option("--pport", dest="proxy_port", + help="Proxy port") + optp.add_option("--puser", dest="proxy_user", + help="Proxy username") + optp.add_option("--ppass", dest="proxy_pass", + help="Proxy password") + + + + opts, args = optp.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + if opts.proxy_host is None: + opts.proxy_host = raw_input("Proxy host: ") + if opts.proxy_port is None: + opts.proxy_port = raw_input("Proxy port: ") + if opts.proxy_user is None: + opts.proxy_user = raw_input("Proxy username: ") + if opts.proxy_pass is None and opts.proxy_user: + opts.proxy_pass = getpass.getpass("Proxy password: ") + + # Setup the EchoBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = EchoBot(opts.jid, opts.password) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0004') # Data Forms + xmpp.register_plugin('xep_0060') # PubSub + xmpp.register_plugin('xep_0199') # XMPP Ping + + # If you are working with an OpenFire server, you may need + # to adjust the SSL version used: + # xmpp.ssl_version = ssl.PROTOCOL_SSLv3 + + # If you want to verify the SSL certificates offered by a server: + # xmpp.ca_certs = "path/to/ca/cert" + + xmpp.use_proxy = True + xmpp.proxy_config = { + 'host': opts.proxy_host, + 'port': int(opts.proxy_port), + 'username': opts.proxy_user, + 'password': opts.proxy_pass} + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + # If you do not have the dnspython library installed, you will need + # to manually specify the name of the server if it does not match + # the one in the JID. For example, to use Google Talk you would + # need to use: + # + # if xmpp.connect(('talk.google.com', 5222)): + # ... + xmpp.process(block=True) + print("Done") + else: + print("Unable to connect.") diff --git a/examples/roster_browser.py b/examples/roster_browser.py new file mode 100644 index 0000000..b366d00 --- /dev/null +++ b/examples/roster_browser.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2011 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +import threading +from optparse import OptionParser + +import sleekxmpp +from sleekxmpp.exceptions import IqError, IqTimeout + + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class RosterBrowser(sleekxmpp.ClientXMPP): + + """ + A basic script for dumping a client's roster to + the command line. + """ + + def __init__(self, jid, password): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + # The session_start event will be triggered when + # the bot establishes its connection with the server + # and the XML streams are ready for use. We want to + # listen for this event so that we we can initialize + # our roster. We need threaded=True so that the + # session_start handler doesn't block event processing + # while we wait for presence stanzas to arrive. + self.add_event_handler("session_start", self.start, threaded=True) + self.add_event_handler("changed_status", self.wait_for_presences) + + self.received = set() + self.presences_received = threading.Event() + + def start(self, event): + """ + Process the session_start event. + + Typical actions for the session_start event are + requesting the roster and broadcasting an initial + presence stanza. + + Arguments: + event -- An empty dictionary. The session_start + event does not provide any additional + data. + """ + try: + self.get_roster() + except IqError as err: + print('Error: %' % err.iq['error']['condition']) + except IqTimeout: + print('Error: Request timed out') + self.send_presence() + + + print('Waiting for presence updates...\n') + self.presences_received.wait(5) + + print('Roster for %s' % self.boundjid.bare) + groups = self.client_roster.groups() + for group in groups: + print('\n%s' % group) + print('-' * 72) + for jid in groups[group]: + sub = self.client_roster[jid]['subscription'] + name = self.client_roster[jid]['name'] + if self.client_roster[jid]['name']: + print(' %s (%s) [%s]' % (name, jid, sub)) + else: + print(' %s [%s]' % (jid, sub)) + + connections = self.client_roster.presence(jid) + for res, pres in connections.items(): + show = 'available' + if pres['show']: + show = pres['show'] + print(' - %s (%s)' % (res, show)) + if pres['status']: + print(' %s' % pres['status']) + + self.disconnect() + + def wait_for_presences(self, pres): + """ + Track how many roster entries have received presence updates. + """ + self.received.add(pres['from'].bare) + if len(self.received) >= len(self.client_roster.keys()): + self.presences_received.set() + else: + self.presences_received.clear() + + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + optp.add_option('-q','--quiet', help='set logging to ERROR', + action='store_const', + dest='loglevel', + const=logging.ERROR, + default=logging.ERROR) + optp.add_option('-d','--debug', help='set logging to DEBUG', + action='store_const', + dest='loglevel', + const=logging.DEBUG, + default=logging.ERROR) + optp.add_option('-v','--verbose', help='set logging to COMM', + action='store_const', + dest='loglevel', + const=5, + default=logging.ERROR) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + opts,args = optp.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + + xmpp = RosterBrowser(opts.jid, opts.password) + + # If you are working with an OpenFire server, you may need + # to adjust the SSL version used: + # xmpp.ssl_version = ssl.PROTOCOL_SSLv3 + + # If you want to verify the SSL certificates offered by a server: + # xmpp.ca_certs = "path/to/ca/cert" + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + # If you do not have the dnspython library installed, you will need + # to manually specify the name of the server if it does not match + # the one in the JID. For example, to use Google Talk you would + # need to use: + # + # if xmpp.connect(('talk.google.com', 5222)): + # ... + xmpp.process(block=True) + else: + print("Unable to connect.") + diff --git a/examples/rpc_async.py b/examples/rpc_async.py new file mode 100644 index 0000000..0b6d193 --- /dev/null +++ b/examples/rpc_async.py @@ -0,0 +1,44 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2011 Dann Martens + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.plugins.xep_0009.remote import Endpoint, remote, Remote, \ + ANY_ALL, Future +import time + +class Boomerang(Endpoint): + + def FQN(self): + return 'boomerang' + + @remote + def throw(self): + print "Duck!" + + + +def main(): + + session = Remote.new_session('kangaroo@xmpp.org/rpc', '*****') + + session.new_handler(ANY_ALL, Boomerang) + + boomerang = session.new_proxy('kangaroo@xmpp.org/rpc', Boomerang) + + callback = Future() + + boomerang.async(callback).throw() + + time.sleep(10) + + session.close() + + + +if __name__ == '__main__': + main() + \ No newline at end of file diff --git a/examples/rpc_client_side.py b/examples/rpc_client_side.py new file mode 100644 index 0000000..ca1084f --- /dev/null +++ b/examples/rpc_client_side.py @@ -0,0 +1,53 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2011 Dann Martens + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.plugins.xep_0009.remote import Endpoint, remote, Remote, \ + ANY_ALL +import threading +import time + +class Thermostat(Endpoint): + + def FQN(self): + return 'thermostat' + + def __init(self, initial_temperature): + self._temperature = initial_temperature + self._event = threading.Event() + + @remote + def set_temperature(self, temperature): + return NotImplemented + + @remote + def get_temperature(self): + return NotImplemented + + @remote(False) + def release(self): + return NotImplemented + + + +def main(): + + session = Remote.new_session('operator@xmpp.org/rpc', '*****') + + thermostat = session.new_proxy('thermostat@xmpp.org/rpc', Thermostat) + + print("Current temperature is %s" % thermostat.get_temperature()) + + thermostat.set_temperature(20) + + time.sleep(10) + + session.close() + +if __name__ == '__main__': + main() + \ No newline at end of file diff --git a/examples/rpc_server_side.py b/examples/rpc_server_side.py new file mode 100644 index 0000000..0af8af4 --- /dev/null +++ b/examples/rpc_server_side.py @@ -0,0 +1,52 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2011 Dann Martens + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.plugins.xep_0009.remote import Endpoint, remote, Remote, \ + ANY_ALL +import threading + +class Thermostat(Endpoint): + + def FQN(self): + return 'thermostat' + + def __init(self, initial_temperature): + self._temperature = initial_temperature + self._event = threading.Event() + + @remote + def set_temperature(self, temperature): + print("Setting temperature to %s" % temperature) + self._temperature = temperature + + @remote + def get_temperature(self): + return self._temperature + + @remote(False) + def release(self): + self._event.set() + + def wait_for_release(self): + self._event.wait() + + + +def main(): + + session = Remote.new_session('sleek@xmpp.org/rpc', '*****') + + thermostat = session.new_handler(ANY_ALL, Thermostat, 18) + + thermostat.wait_for_release() + + session.close() + +if __name__ == '__main__': + main() + \ No newline at end of file diff --git a/examples/send_client.py b/examples/send_client.py new file mode 100755 index 0000000..caf4768 --- /dev/null +++ b/examples/send_client.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import sys +import logging +import getpass +from optparse import OptionParser + +import sleekxmpp + +# Python versions before 3.0 do not use UTF-8 encoding +# by default. To ensure that Unicode is handled properly +# throughout SleekXMPP, we will set the default encoding +# ourselves to UTF-8. +if sys.version_info < (3, 0): + reload(sys) + sys.setdefaultencoding('utf8') +else: + raw_input = input + + +class SendMsgBot(sleekxmpp.ClientXMPP): + + """ + A basic SleekXMPP bot that will log in, send a message, + and then log out. + """ + + def __init__(self, jid, password, recipient, message): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + # The message we wish to send, and the JID that + # will receive it. + self.recipient = recipient + self.msg = message + + # The session_start event will be triggered when + # the bot establishes its connection with the server + # and the XML streams are ready for use. We want to + # listen for this event so that we we can initialize + # our roster. + self.add_event_handler("session_start", self.start) + + def start(self, event): + """ + Process the session_start event. + + Typical actions for the session_start event are + requesting the roster and broadcasting an initial + presence stanza. + + Arguments: + event -- An empty dictionary. The session_start + event does not provide any additional + data. + """ + self.send_presence() + self.get_roster() + + self.send_message(mto=self.recipient, + mbody=self.msg, + mtype='chat') + + # Using wait=True ensures that the send queue will be + # emptied before ending the session. + self.disconnect(wait=True) + + +if __name__ == '__main__': + # Setup the command line arguments. + optp = OptionParser() + + # Output verbosity options. + optp.add_option('-q', '--quiet', help='set logging to ERROR', + action='store_const', dest='loglevel', + const=logging.ERROR, default=logging.INFO) + optp.add_option('-d', '--debug', help='set logging to DEBUG', + action='store_const', dest='loglevel', + const=logging.DEBUG, default=logging.INFO) + optp.add_option('-v', '--verbose', help='set logging to COMM', + action='store_const', dest='loglevel', + const=5, default=logging.INFO) + + # JID and password options. + optp.add_option("-j", "--jid", dest="jid", + help="JID to use") + optp.add_option("-p", "--password", dest="password", + help="password to use") + optp.add_option("-t", "--to", dest="to", + help="JID to send the message to") + optp.add_option("-m", "--message", dest="message", + help="message to send") + + opts, args = optp.parse_args() + + # Setup logging. + logging.basicConfig(level=opts.loglevel, + format='%(levelname)-8s %(message)s') + + if opts.jid is None: + opts.jid = raw_input("Username: ") + if opts.password is None: + opts.password = getpass.getpass("Password: ") + if opts.to is None: + opts.to = raw_input("Send To: ") + if opts.message is None: + opts.message = raw_input("Message: ") + + # Setup the EchoBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = SendMsgBot(opts.jid, opts.password, opts.to, opts.message) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0199') # XMPP Ping + + # If you are working with an OpenFire server, you may need + # to adjust the SSL version used: + # xmpp.ssl_version = ssl.PROTOCOL_SSLv3 + + # If you want to verify the SSL certificates offered by a server: + # xmpp.ca_certs = "path/to/ca/cert" + + # Connect to the XMPP server and start processing XMPP stanzas. + if xmpp.connect(): + # If you do not have the dnspython library installed, you will need + # to manually specify the name of the server if it does not match + # the one in the JID. For example, to use Google Talk you would + # need to use: + # + # if xmpp.connect(('talk.google.com', 5222)): + # ... + xmpp.process(block=True) + print("Done") + else: + print("Unable to connect.") From c7e95c8dec3ae38ad295f669bc7a1fc4d9630e7a Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Thu, 5 Jan 2012 12:28:30 -0500 Subject: [PATCH 3/7] Add &yet contact info --- docs/index.rst | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index dc482d6..b8b19e8 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -156,18 +156,24 @@ Additional Info Credits ------- -**Main Author:** Nathan Fritz +**Main Author:** `Nathan Fritz `_ `fritzy@netflint.net `_, `@fritzy `_ Nathan is also the author of XMPPHP and `Seesmic-AS3-XMPP - `_, and a member of the XMPP + `_, and a former member of the XMPP Council. -**Co-Author:** Lance Stout +**Co-Author:** `Lance Stout `_ `lancestout@gmail.com `_, `@lancestout `_ +Both Fritzy and Lance work for `&yet `_, which specializes in +realtime web and XMPP applications. + +- `contact@andyet.net `_ +- `XMPP Consulting `_ + **Contributors:** - Brian Beggs (`macdiesel `_) - Dann Martens (`dannmartens `_) From b345c227b213835d6c57d36dfd3143c208b7f8c4 Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Thu, 5 Jan 2012 13:07:44 -0500 Subject: [PATCH 4/7] More &yet branding --- docs/_static/haiku.css | 21 +++++++++ docs/_static/header.png | Bin 16588 -> 98587 bytes docs/_static/images/from_&yet.png | Bin 0 -> 2812 bytes docs/_templates/layout.html | 70 ++++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+) create mode 100644 docs/_static/images/from_&yet.png create mode 100644 docs/_templates/layout.html diff --git a/docs/_static/haiku.css b/docs/_static/haiku.css index 9651d11..41e0eb4 100644 --- a/docs/_static/haiku.css +++ b/docs/_static/haiku.css @@ -409,3 +409,24 @@ div.viewcode-block:target { padding: 0 12px; } + +#from_andyet { + -webkit-box-shadow: #CCC 0px 0px 3px; + background: rgba(255, 255, 255, 1); + bottom: 0px; + right: 17px; + padding: 3px 10px; + position: fixed; +} + +#from_andyet h2 { + background-image: url("images/from_&yet.png"); + background-repeat: no-repeat; + height: 29px; + line-height: 0; + text-indent: -9999em; + width: 79px; + margin-top: 0; + margin: 0px; + padding: 0px; +} diff --git a/docs/_static/header.png b/docs/_static/header.png index 2aaa53a13996a7bcebbbf9561522920923d822c3..19310618b5c39201928fb3ce85fe744b78c7d7f6 100644 GIT binary patch literal 98587 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 literal 16588 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 diff --git a/docs/_static/images/from_&yet.png b/docs/_static/images/from_&yet.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5d8f33a5fd04c99dfad6b6d2dc354b048b0152 GIT binary patch literal 2812 zcmVvA!A0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU+o=HSORCwC#nF~}@Wgfu)_ujelVxG)^ z!0;9kL_k1AfhY*ZRZ}q)!&;=)AY02k)lqX_p4O9EZXMG$ZHr~oPD-WaMj4h8AY}qy1nW zH2@-40VWiUje+QF0mf9b3*G&orbB1OJMxrzn*rKp(Ch)|es zja*gdY+u<#^sHqNrjHg%;6|thP>Q)dUWK9nC23v{I6M=&J5qGL^LEVRXVFcfeS&P^ntD!A%KzeZ6JpL zF{}fs_c~xwWzIb918cKau4a9rf5z7oZLuI`jkE zyvTTsf?lXfEam8dYHw(#PezVJ_zh%@jm1cEZeO zDW@IfD@c~?11Di59L_ApP6bg;(gqHq0VuN7>2SDmpqKYT?IuOcJnfC%%XME>RtJDk zhyvwwa>E*&3|^A^Z~L7Pwk2nd!}{Mn)kWIax7ilsuBBedFFAlD{AsBg&5!y7(lzgG z4ocC)%!)1gq|2E>IBB~WN74KU$=N6&v!7k+nFInCvCjXR|0a$4_hztwGbNvS);>)rPw9?yq!dd8!l-EJ=* zw;3ja_t{$?fV9d0OpxTug;LEH#Sq^YfbTVs=2a?<6y~!-279bh)*9@s-s+=fUp+90 zZvf*!U(==YFBUzTW1zS=<{@CKYi>PkW%1>i3u6P~yU!OLpxMebl?*?Dn{KrGq**C{J6tdqRF7sDKAH-RQEoVc7u@pY*k> z1i&-W&|ll8dgtU3K@Xv~57|fA<-%yCaO1tNM6NH)X&NBKrDreV$4*zUEVpDqxTOrq zu(BB|emN~)YI@|knzrfm!UwZ_yRWQ_eC#D1;6edPk+whWc;+pcIBtCMtP(XPRx-Z`{0fUuzUw^Ky>n&*nb|82d(%og@@9%OX;Bb**nY#jAye!q zX;!G7m4-#-TWiZ-9-C^K0ybz?-iG9e=8vy@Td9+WyszOV<%=H2Qwb~b9>FjkMpG2^ zVUJy*4!7FmVZovJXm~h7k_=}DgvaC24lAI2*P){6Dr|pd&5wfTDOr0hu;F zU}$JXs)bL%0B(J~r}6r*PD4TmuK&QcamMqs2({10!ylD7@K}0vXnEl76^9~mwDUeW z`vv74FpK9Gx|rlDCnNEmza(k4NsYqUg%QDcn77nwBUvauQP$FQ`D&HOV*c6>phAN) zRjsWZjV*0mja|LH1jVoz?OK{}yD%@I0BY*$!8B_8QDJ+l6nPYvJsvr4t4GNGWWmGa zI$paito-HUb96TSX%lUQ4!RfOGVb~65pkl0HWESxN1$fl@?rG%ZMuYXi?= z>???X@O+1^?^H-^;+l+5)iJAsq1Q~8I|V(qn(9%<0=<{-hUABzzOZ=RI=DYQ4Z1oz z;Ptd2fXlco+46{U%1!fM9^P58lR4Efx1R03TuhZOe!ld8POR0g zUUuqwDQdSk%5tK$b5z2wUHviK>$-B2^VO4hpJZn`KkbPzmV8|1;iq33W zZ&zU|;V9}Ou9&td-cHX&h2y5 zOO7quIviV&uhYKGJ!urynG8h5S^HbxW^} zjt%vebS?`LAMoQt$IZdH;N8h;`KA-}f2jq^Xy?3!MeW!1Dz5tBj^jWb_pmE3o{Z?|U%?OwCnvCT4#&*XaNsXU!Fa$SnieV@Np%?ghLt*VFQ1)sS z3@d{;S7Lpm9)4kHae6ZKhqa5~(D5?Rjgrgv{yL&5QN=%Naxx&m$GbwtJP>gwX|AGz zE3Z-PzqeE#Ukg^(5f=x_$~Cz4%mIbFOawR&TD$t8a?}FDEFTm2_-&DE*IgU*o4M=g zxmpNZ{WSEmvZ##wf`Ui80UX_tf%ncm_}c1}gK8eMjRC&}+3ia6cMm+53%Smg!j$mD3^jOh z9*Co0FYhvZSonGCeQh1RF%%+vKQ4ED$ia14@5IXSkAChU-Bq5)at+G|&eEa) O0000 + {%- block haikurel1 %} + {%- endblock %} + {%- if prev %} + «  {{ prev.title }} +   ::   + {%- endif %} + {{ _('Contents') }} + {%- if next %} +   ::   + {{ next.title }}  » + {%- endif %} + {%- block haikurel2 %} + {%- endblock %} +

+{% endmacro %} + +{% block content %} +
+ {%- block haikuheader %} + {%- if theme_full_logo != "false" %} + + + + {%- else %} + {%- if logo -%} + + {%- endif -%} +

+ {{ title|striptags }}

+

{{ shorttitle|e }}

+ {%- endif %} + {%- endblock %} +
+
+ {{ nav() }} +
+
+ {#{%- if display_toc %} +
+

Table Of Contents

+ {{ toc }} +
+ {%- endif %}#} + {% block body %}{% endblock %} +
+
+ {{ nav() }} +
+

From &yet

+{% endblock %} + From be9e26b4a344ba083835c30c41d12cddc0afc187 Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Thu, 5 Jan 2012 13:09:20 -0500 Subject: [PATCH 5/7] Apply Te-Je's MUC guide patch. --- docs/getting_started/muc.rst | 206 +++++++++++++++++++++++++++++++++++ examples/muc.py | 4 +- 2 files changed, 208 insertions(+), 2 deletions(-) diff --git a/docs/getting_started/muc.rst b/docs/getting_started/muc.rst index 08f721f..a1a09f5 100644 --- a/docs/getting_started/muc.rst +++ b/docs/getting_started/muc.rst @@ -1,2 +1,208 @@ +.. _mucbot: + +========================= Mulit-User Chat (MUC) Bot ========================= + +.. note:: + + If you have any issues working through this quickstart guide + or the other tutorials here, please either send a message to the + `mailing list `_ + or join the chat room at `sleek@conference.jabber.org + `_. + +If you have not yet installed SleekXMPP, do so now by either checking out a version +from `Github `_, or installing it using ``pip`` +or ``easy_install``. + +.. code-block:: sh + + pip install sleekxmpp # Or: easy_install sleekxmpp + + +Now that you've got the basic gist of using SleekXMPP by following the +echobot example (:ref:`echobot`), we can use one of the bundled plugins +to create a very popular XMPP starter project: a `Multi-User Chat`_ +(MUC) bot. Our bot will login to an XMPP server, join an MUC chat room +and "lurk" indefinitely, responding with a generic message to anyone +that mentions its nickname. It will also greet members as they join the +chat room. + +.. _`multi-user chat`: http://xmpp.org/extensions/xep-0045.html + +Joining The Room +---------------- + +As usual, our code will be based on the pattern explained in :ref:`echobot`. +To start, we create an ``MUCBot`` class based on +:class:`ClientXMPP ` and which accepts +parameters for the JID of the MUC room to join, and the nick that the +bot will use inside the chat room. We also register an +:term:`event handler` for the :term:`session_start` event. + + +.. code-block:: python + + import sleekxmpp + + class MUCBot(sleekxmpp.ClientXMPP): + + def __init__(self, jid, password, room, nick): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + self.room = room + self.nick = nick + + self.add_event_handler("session_start", self.start) + +After initialization, we also need to register the MUC (XEP-0045) plugin +so that we can make use of the group chat plugin's methods and events. + +.. code-block:: python + + xmpp.register_plugin('xep_0045') + +Finally, we can make our bot join the chat room once an XMPP session +has been established: + +.. code-block:: python + + def start(self, event): + self.get_roster() + self.send_presence() + self.plugin['xep_0045'].joinMUC(self.room, + self.nick, + wait=True) + +Note that as in :ref:`echobot`, we need to include send an initial presence and request +the roster. Next, we want to join the group chat, so we call the +``joinMUC`` method of the MUC plugin. + +.. note:: + + The :attr:`plugin ` attribute is + dictionary that maps to instances of plugins that we have previously + registered, by their names. + + +Adding Functionality +-------------------- + +Currently, our bot just sits dormantly inside the chat room, but we +would like it to respond to two distinct events by issuing a generic +message in each case to the chat room. In particular, when a member +mention's the bot's nickname inside the chat room, and when a member +joins the chat room. + +Responding to Mentions +~~~~~~~~~~~~~~~~~~~~~~ + +Whenever a user mentions our bot's nickname in chat, our bot will +respond with a generic message resembling *"I heard that, user."* We do +this by examining all of the messages sent inside the chat, and looking +for the ones which contain the nickname string. + +First, we register an event handler for the :term:`groupchat_message` +event inside the bot's ``__init__`` function. + +.. note:: + + We do not register a handler for the :term:`message` event in this + bot, but if we did, the group chat message would have been sent to + both handlers. + +.. code-block:: python + + def __init__(self, jid, password, room, nick): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + self.room = room + self.nick = nick + + self.add_event_handler("session_start", self.start) + self.add_event_handler("groupchat_message", self.muc_message) + +Then, we can send our generic message whenever the bot's nickname gets +mentioned. + +.. warning:: + + Always check that a message is not from yourself, + otherwise you will create an infinite loop responding + to your own messages. + +.. code-block:: python + + def muc_message(self, msg): + if msg['mucnick'] != self.nick and self.nick in msg['body']: + self.send_message(mto=msg['from'].bare, + mbody="I heard that, %s." % msg['mucnick'], + mtype='groupchat') + + +Greeting Members +~~~~~~~~~~~~~~~~ + +Now we want to greet member whenever they join the group chat. To +do this we will use the dynamic ``muc::room@server::got_online`` [1]_ +event so it's a good idea to register an event handler for it. + +.. note:: + + The groupchat_presence event is triggered whenever a + presence stanza is received from any chat room, including + any presences you send yourself. To limit event handling + to a single room, use the events ``muc::room@server::presence``, + ``muc::room@server::got_online``, or ``muc::room@server::got_offline``. + +.. code-block:: python + + def __init__(self, jid, password, room, nick): + sleekxmpp.ClientXMPP.__init__(self, jid, password) + + self.room = room + self.nick = nick + + self.add_event_handler("session_start", self.start) + self.add_event_handler("groupchat_message", self.muc_message) + self.add_event_handler("muc::%s::got_online" % self.room, + self.muc_online) + +Now all that's left to do is to greet them: + +.. code-block:: python + + def muc_online(self, presence): + if presence['muc']['nick'] != self.nick: + self.send_message(mto=presence['from'].bare, + mbody="Hello, %s %s" % (presence['muc']['role'], + presence['muc']['nick']), + mtype='groupchat') + +.. [1] this is similar to the :term:`got_online` event and is sent by + the xep_0045 plugin whenever a member joins the referenced + MUC chat room. + + +Final Product +------------- + +.. compound:: + + The final step is to create a small runner script for initialising our ``MUCBot`` class and adding some + basic configuration options. By following the basic boilerplate pattern in :ref:`echobot`, we arrive + at the code below. To experiment with this example, you can use: + + .. code-block:: sh + + python muc.py -d -j jid@example.com -r room@muc.example.net -n lurkbot + + which will prompt for the password, log in, and join the group chat. To test, open + your regular IM client and join the same group chat that you sent the bot to. You + will see ``lurkbot`` as one of the members in the group chat, and that it greeted + you upon entry. Send a message with the string "lurkbot" inside the body text, and you + will also see that it responds with our pre-programmed customized message. + +.. include:: ../../examples/muc.py + :literal: diff --git a/examples/muc.py b/examples/muc.py index 8fe2eb4..7b93da1 100755 --- a/examples/muc.py +++ b/examples/muc.py @@ -76,8 +76,8 @@ class MUCBot(sleekxmpp.ClientXMPP): event does not provide any additional data. """ - self.getRoster() - self.sendPresence() + self.get_roster() + self.send_presence() self.plugin['xep_0045'].joinMUC(self.room, self.nick, # If a room password is needed, use: From 738ec92b8ea6175f20d81e356e5dc76bff1559c4 Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Thu, 5 Jan 2012 13:11:42 -0500 Subject: [PATCH 6/7] Fix a few typos. --- docs/getting_started/muc.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting_started/muc.rst b/docs/getting_started/muc.rst index a1a09f5..26e1fa5 100644 --- a/docs/getting_started/muc.rst +++ b/docs/getting_started/muc.rst @@ -92,7 +92,7 @@ Adding Functionality Currently, our bot just sits dormantly inside the chat room, but we would like it to respond to two distinct events by issuing a generic message in each case to the chat room. In particular, when a member -mention's the bot's nickname inside the chat room, and when a member +mentions the bot's nickname inside the chat room, and when a member joins the chat room. Responding to Mentions @@ -100,7 +100,7 @@ Responding to Mentions Whenever a user mentions our bot's nickname in chat, our bot will respond with a generic message resembling *"I heard that, user."* We do -this by examining all of the messages sent inside the chat, and looking +this by examining all of the messages sent inside the chat and looking for the ones which contain the nickname string. First, we register an event handler for the :term:`groupchat_message` From 3575084640fb5f17d70d6d691faf6fdd2f090ee7 Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Wed, 18 Jan 2012 14:24:23 -0800 Subject: [PATCH 7/7] Update home page to include bot example, and example of using a plugin. --- docs/index.rst | 81 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 71 insertions(+), 10 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index b8b19e8..9ccb1b2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -13,7 +13,7 @@ SleekXMPP ``develop`` branch. **Latest Stable Release** - - `1.0 `_ + - `1.0 RC3 `_ **Develop Releases** - `Latest Develop Version `_ @@ -59,6 +59,73 @@ SleekXMPP's design goals and philosphy are: sensible defaults and appropriate abstractions. XML can be ugly to work with, but it doesn't have to be that way. + +Here's your first SleekXMPP Bot: +-------------------------------- + +.. code-block:: python + + import logging + + from sleekxmpp import ClientXMPP + from sleekxmpp.exceptions import IqError, IqTimeout + + + class EchoBot(ClientXMPP): + + def __init__(self, jid, password): + ClientXMPP.__init__(self, jid, password) + + self.add_event_handler("session_start", self.session_start) + self.add_event_handler("message", self.message) + + self.register_plugin('xep_0030') # Service Discovery + self.register_plugin('xep_0199') # XMPP Ping + + # Here's how to access plugins once you've registered them: + # self['xep_0030'].add_feature('echodemo') + # You can also use self.plugin['xep_0030'] + + # If you are working with an OpenFire server, you will + # need to use a different SSL version: + # import ssl + # self.ssl_version = ssl.PROTOCOL_SSLv3 + + def session_start(self, event): + self.send_presence() + self.get_roster() + + # Most get_*/set_* methods from plugins use Iq stanzas, which + # can generate IqError and IqTimeout exceptions + # + # try: + # self.get_roster() + # except IqError as err: + # logging.error('There was an error getting the roster') + # logging.error(err.iq['error']['condition']) + # self.disconnect() + # except IqTimeout: + # logging.error('Server is taking too long to respond') + # self.disconnect() + + def message(self, msg): + if msg['type'] in ('chat', 'normal'): + msg.reply("Thanks for sending\n%(body)s" % msg).send() + + + if __name__ == '__main__': + # Ideally use optparse or argparse to get JID, + # password, and log level. + + logging.basicConfig(level=logging.DEBUG, + format='%(levelname)-8s %(message)s') + + xmpp = EchoBot('somejid@example.com', 'use_getpass') + xmpp.connect() + xmpp.process(block=True) + + + Getting Started (with Examples) ------------------------------- .. toctree:: @@ -156,24 +223,18 @@ Additional Info Credits ------- -**Main Author:** `Nathan Fritz `_ +**Main Author:** Nathan Fritz `fritzy@netflint.net `_, `@fritzy `_ Nathan is also the author of XMPPHP and `Seesmic-AS3-XMPP - `_, and a former member of the XMPP + `_, and a member of the XMPP Council. -**Co-Author:** `Lance Stout `_ +**Co-Author:** Lance Stout `lancestout@gmail.com `_, `@lancestout `_ -Both Fritzy and Lance work for `&yet `_, which specializes in -realtime web and XMPP applications. - -- `contact@andyet.net `_ -- `XMPP Consulting `_ - **Contributors:** - Brian Beggs (`macdiesel `_) - Dann Martens (`dannmartens `_)

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 bO4E=Yr}F-JcDpzw`mq%k7~;L*s%!oa6IoLC literal 0 HcmV?d00001 diff --git a/docs/_static/fonts/YanoneKaffeesatz-Bold.ttf b/docs/_static/fonts/YanoneKaffeesatz-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..64e5d1ce191999eefcb19f667bd860c74edd6a7c GIT binary patch literal 121352 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�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¨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�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 literal 0 HcmV?d00001 diff --git a/docs/_static/fonts/YanoneKaffeesatz-Regular.ttf b/docs/_static/fonts/YanoneKaffeesatz-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..25cee817053775216518dad860ebc582c2a93a0a GIT binary patch literal 128564 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