From ca55d1b822cd1fa992180c32f4fe9de1fc1a6d56 Mon Sep 17 00:00:00 2001
From: Tatsuhiro Tsujikawa
Date: Wed, 5 Feb 2014 23:22:31 +0900
Subject: [PATCH] Update doc
---
_sources/apiref.txt | 7 +-
_sources/index.txt | 1 +
_static/css/badge_only.css | 2 +-
_static/css/theme.css | 2 +-
apiref.html | 16 +-
genindex.html | 6 +-
index.html | 9 +-
nghttp2.h.html | 19 +-
nghttp2ver.h.html | 12 +-
objects.inv | Bin 2113 -> 2129 bytes
package_README.html | 12 +-
released-versions/v0.3.0/.buildinfo | 4 +
released-versions/v0.3.0/_sources/apiref.txt | 2047 ++++
released-versions/v0.3.0/_sources/index.txt | 39 +
.../v0.3.0/_sources/nghttp2.h.txt | 4 +
.../v0.3.0/_sources/nghttp2ver.h.txt | 4 +
.../v0.3.0/_sources/package_README.txt | 1 +
.../v0.3.0/_sources/tutorial-client.txt | 489 +
.../v0.3.0/_sources/tutorial-server.txt | 595 ++
.../v0.3.0/_static/ajax-loader.gif | Bin 0 -> 673 bytes
released-versions/v0.3.0/_static/basic.css | 540 +
.../v0.3.0/_static/comment-bright.png | Bin 0 -> 3500 bytes
.../v0.3.0/_static/comment-close.png | Bin 0 -> 3578 bytes
released-versions/v0.3.0/_static/comment.png | Bin 0 -> 3445 bytes
.../v0.3.0/_static/css/badge_only.css | 1 +
.../v0.3.0/_static/css/theme.css | 4 +
released-versions/v0.3.0/_static/doctools.js | 247 +
.../v0.3.0/_static/down-pressed.png | Bin 0 -> 368 bytes
released-versions/v0.3.0/_static/down.png | Bin 0 -> 363 bytes
released-versions/v0.3.0/_static/file.png | Bin 0 -> 392 bytes
.../_static/font/fontawesome_webfont.eot | Bin 0 -> 37405 bytes
.../_static/font/fontawesome_webfont.svg | 399 +
.../_static/font/fontawesome_webfont.ttf | Bin 0 -> 79076 bytes
.../_static/font/fontawesome_webfont.woff | Bin 0 -> 43572 bytes
.../v0.3.0/_static/fonts/FontAwesome.otf | Bin 0 -> 62856 bytes
.../_static/fonts/fontawesome-webfont.eot | Bin 0 -> 38205 bytes
.../_static/fonts/fontawesome-webfont.svg | 414 +
.../_static/fonts/fontawesome-webfont.ttf | Bin 0 -> 80652 bytes
.../_static/fonts/fontawesome-webfont.woff | Bin 0 -> 44432 bytes
released-versions/v0.3.0/_static/jquery.js | 9404 +++++++++++++++++
released-versions/v0.3.0/_static/js/theme.js | 47 +
released-versions/v0.3.0/_static/minus.png | Bin 0 -> 199 bytes
released-versions/v0.3.0/_static/plus.png | Bin 0 -> 199 bytes
released-versions/v0.3.0/_static/pygments.css | 62 +
.../v0.3.0/_static/searchtools.js | 560 +
.../v0.3.0/_static/underscore.js | 1226 +++
.../v0.3.0/_static/up-pressed.png | Bin 0 -> 372 bytes
released-versions/v0.3.0/_static/up.png | Bin 0 -> 363 bytes
.../v0.3.0/_static/websupport.js | 808 ++
released-versions/v0.3.0/apiref.html | 2619 +++++
released-versions/v0.3.0/genindex.html | 1125 ++
released-versions/v0.3.0/index.html | 239 +
released-versions/v0.3.0/nghttp2.h.html | 2548 +++++
released-versions/v0.3.0/nghttp2ver.h.html | 229 +
released-versions/v0.3.0/objects.inv | Bin 0 -> 2128 bytes
released-versions/v0.3.0/package_README.html | 1083 ++
released-versions/v0.3.0/search.html | 191 +
released-versions/v0.3.0/searchindex.js | 1 +
released-versions/v0.3.0/tutorial-client.html | 1237 +++
released-versions/v0.3.0/tutorial-server.html | 1500 +++
search.html | 6 +-
searchindex.js | 2 +-
tutorial-client.html | 10 +-
tutorial-server.html | 10 +-
64 files changed, 27729 insertions(+), 52 deletions(-)
create mode 100644 released-versions/v0.3.0/.buildinfo
create mode 100644 released-versions/v0.3.0/_sources/apiref.txt
create mode 100644 released-versions/v0.3.0/_sources/index.txt
create mode 100644 released-versions/v0.3.0/_sources/nghttp2.h.txt
create mode 100644 released-versions/v0.3.0/_sources/nghttp2ver.h.txt
create mode 100644 released-versions/v0.3.0/_sources/package_README.txt
create mode 100644 released-versions/v0.3.0/_sources/tutorial-client.txt
create mode 100644 released-versions/v0.3.0/_sources/tutorial-server.txt
create mode 100644 released-versions/v0.3.0/_static/ajax-loader.gif
create mode 100644 released-versions/v0.3.0/_static/basic.css
create mode 100644 released-versions/v0.3.0/_static/comment-bright.png
create mode 100644 released-versions/v0.3.0/_static/comment-close.png
create mode 100644 released-versions/v0.3.0/_static/comment.png
create mode 100644 released-versions/v0.3.0/_static/css/badge_only.css
create mode 100644 released-versions/v0.3.0/_static/css/theme.css
create mode 100644 released-versions/v0.3.0/_static/doctools.js
create mode 100644 released-versions/v0.3.0/_static/down-pressed.png
create mode 100644 released-versions/v0.3.0/_static/down.png
create mode 100644 released-versions/v0.3.0/_static/file.png
create mode 100755 released-versions/v0.3.0/_static/font/fontawesome_webfont.eot
create mode 100755 released-versions/v0.3.0/_static/font/fontawesome_webfont.svg
create mode 100755 released-versions/v0.3.0/_static/font/fontawesome_webfont.ttf
create mode 100755 released-versions/v0.3.0/_static/font/fontawesome_webfont.woff
create mode 100644 released-versions/v0.3.0/_static/fonts/FontAwesome.otf
create mode 100644 released-versions/v0.3.0/_static/fonts/fontawesome-webfont.eot
create mode 100644 released-versions/v0.3.0/_static/fonts/fontawesome-webfont.svg
create mode 100644 released-versions/v0.3.0/_static/fonts/fontawesome-webfont.ttf
create mode 100644 released-versions/v0.3.0/_static/fonts/fontawesome-webfont.woff
create mode 100644 released-versions/v0.3.0/_static/jquery.js
create mode 100644 released-versions/v0.3.0/_static/js/theme.js
create mode 100644 released-versions/v0.3.0/_static/minus.png
create mode 100644 released-versions/v0.3.0/_static/plus.png
create mode 100644 released-versions/v0.3.0/_static/pygments.css
create mode 100644 released-versions/v0.3.0/_static/searchtools.js
create mode 100644 released-versions/v0.3.0/_static/underscore.js
create mode 100644 released-versions/v0.3.0/_static/up-pressed.png
create mode 100644 released-versions/v0.3.0/_static/up.png
create mode 100644 released-versions/v0.3.0/_static/websupport.js
create mode 100644 released-versions/v0.3.0/apiref.html
create mode 100644 released-versions/v0.3.0/genindex.html
create mode 100644 released-versions/v0.3.0/index.html
create mode 100644 released-versions/v0.3.0/nghttp2.h.html
create mode 100644 released-versions/v0.3.0/nghttp2ver.h.html
create mode 100644 released-versions/v0.3.0/objects.inv
create mode 100644 released-versions/v0.3.0/package_README.html
create mode 100644 released-versions/v0.3.0/search.html
create mode 100644 released-versions/v0.3.0/searchindex.js
create mode 100644 released-versions/v0.3.0/tutorial-client.html
create mode 100644 released-versions/v0.3.0/tutorial-server.html
diff --git a/_sources/apiref.txt b/_sources/apiref.txt
index a41bb6bf..68c53996 100644
--- a/_sources/apiref.txt
+++ b/_sources/apiref.txt
@@ -743,8 +743,8 @@ Types (structs, unions and typedefs)
This union includes all frames to pass them to various function
- calls as nghttp2_frame type. The DATA frame is intentionally
- omitted from here.
+ calls as nghttp2_frame type. The CONTINUATION frame is omitted from
+ here because the library deals with it internally.
.. member:: nghttp2_frame_hd hd
@@ -1921,6 +1921,9 @@ Functions
written into *\*out* and its length (which is 17) is
assigned to *\*outlen*.
+ For ALPN, refer to
+ http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04
+
See http://technotes.googlecode.com/git/nextprotoneg.html for more
details about NPN.
diff --git a/_sources/index.txt b/_sources/index.txt
index 24da1503..4b3f6ff0 100644
--- a/_sources/index.txt
+++ b/_sources/index.txt
@@ -28,6 +28,7 @@ Contents:
Released Versions
=================
+* `v0.3.0 `_ `(Download v0.3.0) `_
* `v0.2.0 `_ `(Download v0.2.0) `_
* `v0.1.0 `_ `(Download v0.1.0) `_
diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css
index c8235ac2..63b5e22d 100644
--- a/_static/css/badge_only.css
+++ b/_static/css/badge_only.css
@@ -1 +1 @@
-.font-smooth,.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:fontawesome-webfont;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix") format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf") format("truetype"),url("../font/fontawesome_webfont.svg#fontawesome-webfont") format("svg")}.fa:before{display:inline-block;font-family:fontawesome-webfont;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:"\f02d"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}
+.font-smooth,.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:fontawesome-webfont;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix") format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf") format("truetype"),url("../font/fontawesome_webfont.svg#fontawesome-webfont") format("svg")}.fa:before{display:inline-block;font-family:fontawesome-webfont;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:"\f02d"}.icon-book:before{content:"\f02d"}.fa-caret-down:before{content:"\f0d7"}.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}
diff --git a/_static/css/theme.css b/_static/css/theme.css
index 36b8a8a6..7abe9dcd 100644
--- a/_static/css/theme.css
+++ b/_static/css/theme.css
@@ -1,4 +1,4 @@
*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:20px 0;padding:0}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:0.2em 0;background:#ccc;color:#000;padding:0.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.font-smooth,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-tag-input-group,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*!
* Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.0.3");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.0.3") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.0.3") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-tag-input-group .wy-tag .wy-tag-remove,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-dropdown .pull-left.caret,.wy-inline-validate.wy-inline-validate-success .pull-left.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .pull-left.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .pull-left.wy-input-context,.wy-inline-validate.wy-inline-validate-info .pull-left.wy-input-context,.wy-tag-input-group .wy-tag .pull-left.wy-tag-remove,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink{margin-right:.3em}.fa.pull-right,.wy-dropdown .pull-right.caret,.wy-inline-validate.wy-inline-validate-success .pull-right.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .pull-right.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .pull-right.wy-input-context,.wy-inline-validate.wy-inline-validate-info .pull-right.wy-input-context,.wy-tag-input-group .wy-tag .pull-right.wy-tag-remove,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before,.wy-tag-input-group .wy-tag .wy-tag-remove:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before,.wy-dropdown .caret:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-asc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-desc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-reply-all:before{content:"\f122"}.fa-mail-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.btn .fa,.btn .wy-dropdown .caret,.wy-dropdown .btn .caret,.btn .wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-success .btn .wy-input-context,.btn .wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .btn .wy-input-context,.btn .wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .btn .wy-input-context,.btn .wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-info .btn .wy-input-context,.btn .wy-tag-input-group .wy-tag .wy-tag-remove,.wy-tag-input-group .wy-tag .btn .wy-tag-remove,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.nav .fa,.nav .wy-dropdown .caret,.wy-dropdown .nav .caret,.nav .wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-success .nav .wy-input-context,.nav .wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .nav .wy-input-context,.nav .wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .nav .wy-input-context,.nav .wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-info .nav .wy-input-context,.nav .wy-tag-input-group .wy-tag .wy-tag-remove,.wy-tag-input-group .wy-tag .nav .wy-tag-remove,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink{display:inline}.btn .fa.fa-large,.btn .wy-dropdown .fa-large.caret,.wy-dropdown .btn .fa-large.caret,.btn .wy-inline-validate.wy-inline-validate-success .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-success .btn .fa-large.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-danger .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .btn .fa-large.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-warning .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .btn .fa-large.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-info .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-info .btn .fa-large.wy-input-context,.btn .wy-tag-input-group .wy-tag .fa-large.wy-tag-remove,.wy-tag-input-group .wy-tag .btn .fa-large.wy-tag-remove,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.nav .fa.fa-large,.nav .wy-dropdown .fa-large.caret,.wy-dropdown .nav .fa-large.caret,.nav .wy-inline-validate.wy-inline-validate-success .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-success .nav .fa-large.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-danger .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .nav .fa-large.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-warning .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .nav .fa-large.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-info .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-info .nav .fa-large.wy-input-context,.nav .wy-tag-input-group .wy-tag .fa-large.wy-tag-remove,.wy-tag-input-group .wy-tag .nav .fa-large.wy-tag-remove,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink{line-height:0.9em}.btn .fa.fa-spin,.btn .wy-dropdown .fa-spin.caret,.wy-dropdown .btn .fa-spin.caret,.btn .wy-inline-validate.wy-inline-validate-success .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-success .btn .fa-spin.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-danger .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .btn .fa-spin.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-warning .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .btn .fa-spin.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-info .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-info .btn .fa-spin.wy-input-context,.btn .wy-tag-input-group .wy-tag .fa-spin.wy-tag-remove,.wy-tag-input-group .wy-tag .btn .fa-spin.wy-tag-remove,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.nav .fa.fa-spin,.nav .wy-dropdown .fa-spin.caret,.wy-dropdown .nav .fa-spin.caret,.nav .wy-inline-validate.wy-inline-validate-success .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-success .nav .fa-spin.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-danger .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .nav .fa-spin.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-warning .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .nav .fa-spin.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-info .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-info .nav .fa-spin.wy-input-context,.nav .wy-tag-input-group .wy-tag .fa-spin.wy-tag-remove,.wy-tag-input-group .wy-tag .nav .fa-spin.wy-tag-remove,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink{display:inline-block}.btn.fa:before,.wy-dropdown .btn.caret:before,.wy-inline-validate.wy-inline-validate-success .btn.wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .btn.wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .btn.wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .btn.wy-input-context:before,.wy-tag-input-group .wy-tag .btn.wy-tag-remove:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before{opacity:0.5;-webkit-transition:opacity 0.05s ease-in;-moz-transition:opacity 0.05s ease-in;transition:opacity 0.05s ease-in}.btn.fa:hover:before,.wy-dropdown .btn.caret:hover:before,.wy-inline-validate.wy-inline-validate-success .btn.wy-input-context:hover:before,.wy-inline-validate.wy-inline-validate-danger .btn.wy-input-context:hover:before,.wy-inline-validate.wy-inline-validate-warning .btn.wy-input-context:hover:before,.wy-inline-validate.wy-inline-validate-info .btn.wy-input-context:hover:before,.wy-tag-input-group .wy-tag .btn.wy-tag-remove:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-dropdown .caret:before,.wy-dropdown .btn-mini .caret:before,.btn-mini .wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .btn-mini .wy-input-context:before,.btn-mini .wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .btn-mini .wy-input-context:before,.btn-mini .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .btn-mini .wy-input-context:before,.btn-mini .wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .btn-mini .wy-input-context:before,.btn-mini .wy-tag-input-group .wy-tag .wy-tag-remove:before,.wy-tag-input-group .wy-tag .btn-mini .wy-tag-remove:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso{padding:12px;line-height:24px;margin-bottom:24px}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:transparent;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso{background:#f3f6f6}.wy-alert.wy-alert-neutral strong,.rst-content .wy-alert-neutral.note strong,.rst-content .wy-alert-neutral.attention strong,.rst-content .wy-alert-neutral.caution strong,.rst-content .wy-alert-neutral.danger strong,.rst-content .wy-alert-neutral.error strong,.rst-content .wy-alert-neutral.hint strong,.rst-content .wy-alert-neutral.important strong,.rst-content .wy-alert-neutral.tip strong,.rst-content .wy-alert-neutral.warning strong,.rst-content .wy-alert-neutral.seealso strong{color:#404040}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a{color:#2980b9}.wy-tray-container{position:fixed;top:-50px;left:0;width:100%;-webkit-transition:top 0.2s ease-in;-moz-transition:top 0.2s ease-in;transition:top 0.2s ease-in}.wy-tray-container.on{top:0}.wy-tray-container li{display:none;width:100%;background:#343131;padding:12px 24px;color:#fff;margin-bottom:6px;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1),0px -1px 2px -1px rgba(255,255,255,0.5) inset}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.btn{display:inline-block;*display:inline;zoom:1;line-height:normal;white-space:nowrap;vertical-align:baseline;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:100%;padding:6px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);border-bottom:solid 3px rgba(0,0,0,0.1);background-color:#27ae60;text-decoration:none;font-weight:500;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset;-webkit-transition:all 0.1s linear;-moz-transition:all 0.1s linear;transition:all 0.1s linear;outline-none:false}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;color:#fff;outline:0}.btn:active{border-top:solid 3px rgba(0,0,0,0.1);border-bottom:solid 1px rgba(0,0,0,0.1);box-shadow:0px 1px 2px -1px rgba(0,0,0,0.5) inset}.btn[disabled]{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn:visited{color:#fff}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27ae60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#e74c3c !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#e67e22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#343131}.btn-invert:hover{background-color:#413d3d !important}.btn-link{background-color:transparent !important;color:#2980b9;border-color:transparent;box-shadow:none}.btn-link:hover{background-color:transparent !important;color:#409ad5;border-color:transparent;box-shadow:none}.btn-link:active{background-color:transparent !important;border-color:transparent;border-top:solid 1px transparent;border-bottom:solid 3px transparent;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-menu{position:absolute;top:100%;left:0;display:none;float:left;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:0.5em 1em 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:0.5em}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 0.3125em 0;color:#999;font-size:90%}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button{-webkit-appearance:button;cursor:pointer;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}input[type="datetime-local"]{padding:0.34375em 0.625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:0.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#f3f6f6;color:#cad2d3}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e74c3c}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%}select,textarea{padding:0.5em 0.625em;display:inline-block;border:1px solid #ccc;font-size:0.8em;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fff;color:#cad2d3;border-color:transparent}.wy-checkbox,.wy-radio{margin:0.5em 0;color:#404040;display:block}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{padding:6px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:0.5em 0.625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 2px #e74c3c}.wy-control-group.wy-control-group-error textarea{border:solid 2px #e74c3c}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{display:block;float:left;margin-right:2.35765%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{display:block;float:left;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-child(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-child(2n+1){clear:left}.wy-control-group .wy-form-thirds{display:block;float:left;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-child(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-child(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:0.5em 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:0.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#ccc;font-size:70%;margin-top:0.3125em;font-style:italic}.wy-tag-input-group{padding:4px 4px 0px 4px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;background:#fff;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}.wy-tag-input-group .wy-tag{display:inline-block;background-color:rgba(0,0,0,0.1);padding:0.5em 0.625em;border-radius:2px;position:relative;margin-bottom:4px}.wy-tag-input-group .wy-tag .wy-tag-remove{color:#ccc;margin-left:5px}.wy-tag-input-group .wy-tag .wy-tag-remove:hover{color:#e74c3c}.wy-tag-input-group label{margin-left:5px;display:inline-block;margin-bottom:0}.wy-tag-input-group input{border:none;font-size:100%;margin-bottom:4px;box-shadow:none}.wy-form-upload{border:solid 1px #ccc;border-bottom:solid 3px #ccc;background-color:#f3f6f6;padding:24px;display:inline-block;text-align:center;cursor:pointer;color:#404040;-webkit-transition:border-color 0.1s ease-in;-moz-transition:border-color 0.1s ease-in;transition:border-color 0.1s ease-in;*zoom:1}.wy-form-upload:before,.wy-form-upload:after{display:table;content:""}.wy-form-upload:after{clear:both}@media screen and (max-width: 480px){.wy-form-upload{width:100%}}.wy-form-upload .image-drop{display:none}.wy-form-upload .image-desktop{display:none}.wy-form-upload .image-loading{display:none}.wy-form-upload .wy-form-upload-icon{display:block;font-size:32px;color:#b3b3b3}.wy-form-upload .image-drop .wy-form-upload-icon{color:#27ae60}.wy-form-upload p{font-size:90%}.wy-form-upload .wy-form-upload-image{float:left;margin-right:24px}@media screen and (max-width: 480px){.wy-form-upload .wy-form-upload-image{width:100%;margin-bottom:24px}}.wy-form-upload img{max-width:125px;max-height:125px;opacity:0.9;-webkit-transition:opacity 0.1s ease-in;-moz-transition:opacity 0.1s ease-in;transition:opacity 0.1s ease-in}.wy-form-upload .wy-form-upload-content{float:left}@media screen and (max-width: 480px){.wy-form-upload .wy-form-upload-content{width:100%}}.wy-form-upload:hover{border-color:#b3b3b3;color:#404040}.wy-form-upload:hover .image-desktop{display:block}.wy-form-upload:hover .image-drag{display:none}.wy-form-upload:hover img{opacity:1}.wy-form-upload:active{border-top:solid 3px #ccc;border-bottom:solid 1px #ccc}.wy-form-upload.wy-form-upload-big{width:100%;text-align:center;padding:72px}.wy-form-upload.wy-form-upload-big .wy-form-upload-content{float:none}.wy-form-upload.wy-form-upload-file p{margin-bottom:0}.wy-form-upload.wy-form-upload-file .wy-form-upload-icon{display:inline-block;font-size:inherit}.wy-form-upload.wy-form-upload-drop{background-color:#ddf7e8}.wy-form-upload.wy-form-upload-drop .image-drop{display:block}.wy-form-upload.wy-form-upload-drop .image-desktop{display:none}.wy-form-upload.wy-form-upload-drop .image-drag{display:none}.wy-form-upload.wy-form-upload-loading .image-drag{display:none}.wy-form-upload.wy-form-upload-loading .image-desktop{display:none}.wy-form-upload.wy-form-upload-loading .image-loading{display:block}.wy-form-upload.wy-form-upload-loading .wy-input-prefix{display:none}.wy-form-upload.wy-form-upload-loading p{margin-bottom:0}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}.wy-form-gallery-manage{margin-left:-12px;margin-right:-12px}.wy-form-gallery-manage li{float:left;padding:12px;width:20%;cursor:pointer}@media screen and (max-width: 768px){.wy-form-gallery-manage li{width:25%}}@media screen and (max-width: 480px){.wy-form-gallery-manage li{width:50%}}.wy-form-gallery-manage li:active{cursor:move}.wy-form-gallery-manage li>a{padding:12px;background-color:#fff;border:solid 1px #e1e4e5;border-bottom:solid 3px #e1e4e5;display:inline-block;-webkit-transition:all 0.1s ease-in;-moz-transition:all 0.1s ease-in;transition:all 0.1s ease-in}.wy-form-gallery-manage li>a:active{border:solid 1px #ccc;border-top:solid 3px #ccc}.wy-form-gallery-manage img{width:100%;-webkit-transition:all 0.05s ease-in;-moz-transition:all 0.05s ease-in;transition:all 0.05s ease-in}li.wy-form-gallery-edit{position:relative;color:#fff;padding:24px;width:100%;display:block;background-color:#343131;border-radius:4px}li.wy-form-gallery-edit .arrow{position:absolute;display:block;top:-50px;left:50%;margin-left:-25px;z-index:500;height:0;width:0;border-color:transparent;border-style:solid;border-width:25px;border-bottom-color:#343131}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:0.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0.3em;display:block}.wy-form label{margin-bottom:0.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:0.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-controls{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:0.2em 0 0.8em}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-grid-one-col{*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;max-width:1066px;margin-top:1.618em}.wy-grid-one-col:before,.wy-grid-one-col:after{display:table;content:""}.wy-grid-one-col:after{clear:both}.wy-grid-one-col section{display:block;float:left;margin-right:2.35765%;width:100%;background:#fcfcfc;padding:1.618em;margin-right:0}.wy-grid-one-col section:last-child{margin-right:0}.wy-grid-index-card{*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;max-width:460px;margin-top:1.618em;background:#fcfcfc;padding:1.618em}.wy-grid-index-card:before,.wy-grid-index-card:after{display:table;content:""}.wy-grid-index-card:after{clear:both}.wy-grid-index-card header,.wy-grid-index-card section,.wy-grid-index-card aside{display:block;float:left;margin-right:2.35765%;width:100%}.wy-grid-index-card header:last-child,.wy-grid-index-card section:last-child,.wy-grid-index-card aside:last-child{margin-right:0}.wy-grid-index-card.twocol{max-width:768px}.wy-grid-index-card.twocol section{display:block;float:left;margin-right:2.35765%;width:48.82117%}.wy-grid-index-card.twocol section:last-child{margin-right:0}.wy-grid-index-card.twocol aside{display:block;float:left;margin-right:2.35765%;width:48.82117%}.wy-grid-index-card.twocol aside:last-child{margin-right:0}.wy-grid-search-filter{*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;margin-bottom:24px}.wy-grid-search-filter:before,.wy-grid-search-filter:after{display:table;content:""}.wy-grid-search-filter:after{clear:both}.wy-grid-search-filter .wy-grid-search-filter-input{display:block;float:left;margin-right:2.35765%;width:74.41059%}.wy-grid-search-filter .wy-grid-search-filter-input:last-child{margin-right:0}.wy-grid-search-filter .wy-grid-search-filter-btn{display:block;float:left;margin-right:2.35765%;width:23.23176%}.wy-grid-search-filter .wy-grid-search-filter-btn:last-child{margin-right:0}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px;margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}a{color:#2980b9;text-decoration:none}a:hover{color:#3091d1}a:visited{color:#9b59b6}.link-danger{color:#e74c3c}.link-danger:hover{color:#d62c1a}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}small{font-size:80%}code,.rst-content tt{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:"Incosolata","Consolata","Monaco",monospace;color:#e74c3c;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.full-width{width:100%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li{list-style:square}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li{list-style:decimal;margin-left:24px}.wy-type-large{font-size:120%}.wy-type-normal{font-size:100%}.wy-type-small{font-size:100%}.wy-type-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980b9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27ae60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#e74c3c !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}.codeblock-example{border:1px solid #e1e4e5;border-bottom:none;padding:24px;padding-top:48px;font-weight:500;background:#fff;position:relative}.codeblock-example:after{content:"Example";position:absolute;top:0px;left:0px;background:#9b59b6;color:#fff;padding:6px 12px}.codeblock-example.prettyprint-example-only{border:1px solid #e1e4e5;margin-bottom:24px}.codeblock,.rst-content .literal-block,div[class^='highlight']{border:1px solid #e1e4e5;padding:0px;overflow-x:auto;background:#fff;margin:1px 0 24px 0}.codeblock div[class^='highlight'],.rst-content .literal-block div[class^='highlight'],div[class^='highlight'] div[class^='highlight']{border:none;background:none;margin:0}div[class^='highlight'] td.code{width:100%}.linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:"Incosolata","Consolata","Monaco",monospace;font-size:12px;line-height:1.5;color:#d9d9d9}div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;font-family:"Incosolata","Consolata","Monaco",monospace;font-size:12px;line-height:1.5;display:block;overflow:auto;color:#404040}pre.literal-block{@extends .codeblock;}@media print{.codeblock,.rst-content .literal-block,div[class^='highlight'],div[class^='highlight'] pre{white-space:pre-wrap}}.hll{background-color:#ffc;margin:0 -12px;padding:0 12px;display:block}.c{color:#998;font-style:italic}.err{color:#a61717;background-color:#e3d2d2}.k{font-weight:bold}.o{font-weight:bold}.cm{color:#998;font-style:italic}.cp{color:#999;font-weight:bold}.c1{color:#998;font-style:italic}.cs{color:#999;font-weight:bold;font-style:italic}.gd{color:#000;background-color:#fdd}.gd .x{color:#000;background-color:#faa}.ge{font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.gi .x{color:#000;background-color:#afa}.go{color:#888}.gp{color:#555}.gs{font-weight:bold}.gu{color:purple;font-weight:bold}.gt{color:#a00}.kc{font-weight:bold}.kd{font-weight:bold}.kn{font-weight:bold}.kp{font-weight:bold}.kr{font-weight:bold}.kt{color:#458;font-weight:bold}.m{color:#099}.s{color:#d14}.n{color:#333}.na{color:teal}.nb{color:#0086b3}.nc{color:#458;font-weight:bold}.no{color:teal}.ni{color:purple}.ne{color:#900;font-weight:bold}.nf{color:#900;font-weight:bold}.nn{color:#555}.nt{color:navy}.nv{color:teal}.ow{font-weight:bold}.w{color:#bbb}.mf{color:#099}.mh{color:#099}.mi{color:#099}.mo{color:#099}.sb{color:#d14}.sc{color:#d14}.sd{color:#d14}.s2{color:#d14}.se{color:#d14}.sh{color:#d14}.si{color:#d14}.sx{color:#d14}.sr{color:#009926}.s1{color:#d14}.ss{color:#990073}.bp{color:#999}.vc{color:teal}.vg{color:teal}.vi{color:teal}.il{color:#099}.gc{color:#999;background-color:#eaf2f5}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical header{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#2980b9;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:0.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical .local-toc li ul{display:block}.wy-menu-vertical li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:0.4045em 1.618em;display:block;position:relative;font-size:90%;color:#b3b3b3}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-side-nav-search{z-index:200;background-color:#2980b9;text-align:center;padding:0.809em;display:block;color:#fcfcfc;margin-bottom:0.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto 0.809em auto;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:0.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all 0.2s ease-in;-moz-transition:all 0.2s ease-in;transition:all 0.2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:left repeat-y #fcfcfc;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);background-size:300px 1px}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:absolute;top:0;left:0;width:300px;overflow:hidden;min-height:100%;background:#343131;z-index:200}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:0.4045em 0.809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:#999}footer p{margin-bottom:12px}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1400px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}nav.stickynav{position:fixed;top:0}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-dropdown .caret,.wy-dropdown .rst-versions .rst-current-version .caret,.rst-versions .rst-current-version .wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-success .rst-versions .rst-current-version .wy-input-context,.rst-versions .rst-current-version .wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .rst-versions .rst-current-version .wy-input-context,.rst-versions .rst-current-version .wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .rst-versions .rst-current-version .wy-input-context,.rst-versions .rst-current-version .wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-info .rst-versions .rst-current-version .wy-input-context,.rst-versions .rst-current-version .wy-tag-input-group .wy-tag .wy-tag-remove,.wy-tag-input-group .wy-tag .rst-versions .rst-current-version .wy-tag-remove,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}.rst-content img{max-width:100%;height:auto !important}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img{margin-bottom:24px}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .line-block{margin-left:24px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto;display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink{display:none;visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after{visibility:visible;content:"\f0c1";font-family:fontawesome-webfont;display:inline-block}.rst-content h1:hover .headerlink,.rst-content h2:hover .headerlink,.rst-content h3:hover .headerlink,.rst-content h4:hover .headerlink,.rst-content h5:hover .headerlink,.rst-content h6:hover .headerlink,.rst-content dl dt:hover .headerlink{display:inline-block}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:super;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:#999}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none;padding-top:5px}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left;padding-left:0}.rst-content tt{color:#000}.rst-content tt big,.rst-content tt em{font-size:100% !important;line-height:normal}.rst-content tt .xref,a .rst-content tt{font-weight:bold}.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:inline-block;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:gray}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}
+ */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.0.3");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.0.3") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.0.3") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-tag-input-group .wy-tag .wy-tag-remove,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.icon{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-dropdown .pull-left.caret,.wy-inline-validate.wy-inline-validate-success .pull-left.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .pull-left.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .pull-left.wy-input-context,.wy-inline-validate.wy-inline-validate-info .pull-left.wy-input-context,.wy-tag-input-group .wy-tag .pull-left.wy-tag-remove,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-dropdown .pull-right.caret,.wy-inline-validate.wy-inline-validate-success .pull-right.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .pull-right.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .pull-right.wy-input-context,.wy-inline-validate.wy-inline-validate-info .pull-right.wy-input-context,.wy-tag-input-group .wy-tag .pull-right.wy-tag-remove,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before,.icon-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before,.wy-tag-input-group .wy-tag .wy-tag-remove:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before,.icon-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before,.icon-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before,.icon-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-asc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-desc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-reply-all:before{content:"\f122"}.fa-mail-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before,.icon-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.btn .fa,.btn .wy-dropdown .caret,.wy-dropdown .btn .caret,.btn .wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-success .btn .wy-input-context,.btn .wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .btn .wy-input-context,.btn .wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .btn .wy-input-context,.btn .wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-info .btn .wy-input-context,.btn .wy-tag-input-group .wy-tag .wy-tag-remove,.wy-tag-input-group .wy-tag .btn .wy-tag-remove,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .icon,.nav .fa,.nav .wy-dropdown .caret,.wy-dropdown .nav .caret,.nav .wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-success .nav .wy-input-context,.nav .wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .nav .wy-input-context,.nav .wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .nav .wy-input-context,.nav .wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-info .nav .wy-input-context,.nav .wy-tag-input-group .wy-tag .wy-tag-remove,.wy-tag-input-group .wy-tag .nav .wy-tag-remove,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-dropdown .fa-large.caret,.wy-dropdown .btn .fa-large.caret,.btn .wy-inline-validate.wy-inline-validate-success .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-success .btn .fa-large.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-danger .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .btn .fa-large.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-warning .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .btn .fa-large.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-info .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-info .btn .fa-large.wy-input-context,.btn .wy-tag-input-group .wy-tag .fa-large.wy-tag-remove,.wy-tag-input-group .wy-tag .btn .fa-large.wy-tag-remove,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-dropdown .fa-large.caret,.wy-dropdown .nav .fa-large.caret,.nav .wy-inline-validate.wy-inline-validate-success .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-success .nav .fa-large.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-danger .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .nav .fa-large.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-warning .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .nav .fa-large.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-info .fa-large.wy-input-context,.wy-inline-validate.wy-inline-validate-info .nav .fa-large.wy-input-context,.nav .wy-tag-input-group .wy-tag .fa-large.wy-tag-remove,.wy-tag-input-group .wy-tag .nav .fa-large.wy-tag-remove,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .fa-large.icon{line-height:0.9em}.btn .fa.fa-spin,.btn .wy-dropdown .fa-spin.caret,.wy-dropdown .btn .fa-spin.caret,.btn .wy-inline-validate.wy-inline-validate-success .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-success .btn .fa-spin.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-danger .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .btn .fa-spin.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-warning .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .btn .fa-spin.wy-input-context,.btn .wy-inline-validate.wy-inline-validate-info .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-info .btn .fa-spin.wy-input-context,.btn .wy-tag-input-group .wy-tag .fa-spin.wy-tag-remove,.wy-tag-input-group .wy-tag .btn .fa-spin.wy-tag-remove,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-dropdown .fa-spin.caret,.wy-dropdown .nav .fa-spin.caret,.nav .wy-inline-validate.wy-inline-validate-success .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-success .nav .fa-spin.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-danger .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-danger .nav .fa-spin.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-warning .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-warning .nav .fa-spin.wy-input-context,.nav .wy-inline-validate.wy-inline-validate-info .fa-spin.wy-input-context,.wy-inline-validate.wy-inline-validate-info .nav .fa-spin.wy-input-context,.nav .wy-tag-input-group .wy-tag .fa-spin.wy-tag-remove,.wy-tag-input-group .wy-tag .nav .fa-spin.wy-tag-remove,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-dropdown .btn.caret:before,.wy-inline-validate.wy-inline-validate-success .btn.wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .btn.wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .btn.wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .btn.wy-input-context:before,.wy-tag-input-group .wy-tag .btn.wy-tag-remove:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.btn.icon:before{opacity:0.5;-webkit-transition:opacity 0.05s ease-in;-moz-transition:opacity 0.05s ease-in;transition:opacity 0.05s ease-in}.btn.fa:hover:before,.wy-dropdown .btn.caret:hover:before,.wy-inline-validate.wy-inline-validate-success .btn.wy-input-context:hover:before,.wy-inline-validate.wy-inline-validate-danger .btn.wy-input-context:hover:before,.wy-inline-validate.wy-inline-validate-warning .btn.wy-input-context:hover:before,.wy-inline-validate.wy-inline-validate-info .btn.wy-input-context:hover:before,.wy-tag-input-group .wy-tag .btn.wy-tag-remove:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-dropdown .caret:before,.wy-dropdown .btn-mini .caret:before,.btn-mini .wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .btn-mini .wy-input-context:before,.btn-mini .wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .btn-mini .wy-input-context:before,.btn-mini .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .btn-mini .wy-input-context:before,.btn-mini .wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .btn-mini .wy-input-context:before,.btn-mini .wy-tag-input-group .wy-tag .wy-tag-remove:before,.wy-tag-input-group .wy-tag .btn-mini .wy-tag-remove:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso{padding:12px;line-height:24px;margin-bottom:24px}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:transparent;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso{background:#f3f6f6}.wy-alert.wy-alert-neutral strong,.rst-content .wy-alert-neutral.note strong,.rst-content .wy-alert-neutral.attention strong,.rst-content .wy-alert-neutral.caution strong,.rst-content .wy-alert-neutral.danger strong,.rst-content .wy-alert-neutral.error strong,.rst-content .wy-alert-neutral.hint strong,.rst-content .wy-alert-neutral.important strong,.rst-content .wy-alert-neutral.tip strong,.rst-content .wy-alert-neutral.warning strong,.rst-content .wy-alert-neutral.seealso strong{color:#404040}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a{color:#2980b9}.wy-tray-container{position:fixed;top:-50px;left:0;width:100%;-webkit-transition:top 0.2s ease-in;-moz-transition:top 0.2s ease-in;transition:top 0.2s ease-in}.wy-tray-container.on{top:0}.wy-tray-container li{display:none;width:100%;background:#343131;padding:12px 24px;color:#fff;margin-bottom:6px;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1),0px -1px 2px -1px rgba(255,255,255,0.5) inset}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.btn{display:inline-block;*display:inline;zoom:1;line-height:normal;white-space:nowrap;vertical-align:baseline;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:100%;padding:6px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);border-bottom:solid 3px rgba(0,0,0,0.1);background-color:#27ae60;text-decoration:none;font-weight:500;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset;-webkit-transition:all 0.1s linear;-moz-transition:all 0.1s linear;transition:all 0.1s linear;outline-none:false}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;color:#fff;outline:0}.btn:active{border-top:solid 3px rgba(0,0,0,0.1);border-bottom:solid 1px rgba(0,0,0,0.1);box-shadow:0px 1px 2px -1px rgba(0,0,0,0.5) inset}.btn[disabled]{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn:visited{color:#fff}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27ae60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#e74c3c !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#e67e22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#343131}.btn-invert:hover{background-color:#413d3d !important}.btn-link{background-color:transparent !important;color:#2980b9;border-color:transparent;box-shadow:none}.btn-link:hover{background-color:transparent !important;color:#409ad5;border-color:transparent;box-shadow:none}.btn-link:active{background-color:transparent !important;border-color:transparent;border-top:solid 1px transparent;border-bottom:solid 3px transparent;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-menu{position:absolute;top:100%;left:0;display:none;float:left;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:0.5em 1em 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:0.5em}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 0.3125em 0;color:#999;font-size:90%}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button{-webkit-appearance:button;cursor:pointer;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}input[type="datetime-local"]{padding:0.34375em 0.625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:0.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#f3f6f6;color:#cad2d3}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e74c3c}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%}select,textarea{padding:0.5em 0.625em;display:inline-block;border:1px solid #ccc;font-size:0.8em;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fff;color:#cad2d3;border-color:transparent}.wy-checkbox,.wy-radio{margin:0.5em 0;color:#404040;display:block}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{padding:6px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:0.5em 0.625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 2px #e74c3c}.wy-control-group.wy-control-group-error textarea{border:solid 2px #e74c3c}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{display:block;float:left;margin-right:2.35765%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{display:block;float:left;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-child(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-child(2n+1){clear:left}.wy-control-group .wy-form-thirds{display:block;float:left;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-child(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-child(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:0.5em 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:0.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#ccc;font-size:70%;margin-top:0.3125em;font-style:italic}.wy-tag-input-group{padding:4px 4px 0px 4px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;background:#fff;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}.wy-tag-input-group .wy-tag{display:inline-block;background-color:rgba(0,0,0,0.1);padding:0.5em 0.625em;border-radius:2px;position:relative;margin-bottom:4px}.wy-tag-input-group .wy-tag .wy-tag-remove{color:#ccc;margin-left:5px}.wy-tag-input-group .wy-tag .wy-tag-remove:hover{color:#e74c3c}.wy-tag-input-group label{margin-left:5px;display:inline-block;margin-bottom:0}.wy-tag-input-group input{border:none;font-size:100%;margin-bottom:4px;box-shadow:none}.wy-form-upload{border:solid 1px #ccc;border-bottom:solid 3px #ccc;background-color:#f3f6f6;padding:24px;display:inline-block;text-align:center;cursor:pointer;color:#404040;-webkit-transition:border-color 0.1s ease-in;-moz-transition:border-color 0.1s ease-in;transition:border-color 0.1s ease-in;*zoom:1}.wy-form-upload:before,.wy-form-upload:after{display:table;content:""}.wy-form-upload:after{clear:both}@media screen and (max-width: 480px){.wy-form-upload{width:100%}}.wy-form-upload .image-drop{display:none}.wy-form-upload .image-desktop{display:none}.wy-form-upload .image-loading{display:none}.wy-form-upload .wy-form-upload-icon{display:block;font-size:32px;color:#b3b3b3}.wy-form-upload .image-drop .wy-form-upload-icon{color:#27ae60}.wy-form-upload p{font-size:90%}.wy-form-upload .wy-form-upload-image{float:left;margin-right:24px}@media screen and (max-width: 480px){.wy-form-upload .wy-form-upload-image{width:100%;margin-bottom:24px}}.wy-form-upload img{max-width:125px;max-height:125px;opacity:0.9;-webkit-transition:opacity 0.1s ease-in;-moz-transition:opacity 0.1s ease-in;transition:opacity 0.1s ease-in}.wy-form-upload .wy-form-upload-content{float:left}@media screen and (max-width: 480px){.wy-form-upload .wy-form-upload-content{width:100%}}.wy-form-upload:hover{border-color:#b3b3b3;color:#404040}.wy-form-upload:hover .image-desktop{display:block}.wy-form-upload:hover .image-drag{display:none}.wy-form-upload:hover img{opacity:1}.wy-form-upload:active{border-top:solid 3px #ccc;border-bottom:solid 1px #ccc}.wy-form-upload.wy-form-upload-big{width:100%;text-align:center;padding:72px}.wy-form-upload.wy-form-upload-big .wy-form-upload-content{float:none}.wy-form-upload.wy-form-upload-file p{margin-bottom:0}.wy-form-upload.wy-form-upload-file .wy-form-upload-icon{display:inline-block;font-size:inherit}.wy-form-upload.wy-form-upload-drop{background-color:#ddf7e8}.wy-form-upload.wy-form-upload-drop .image-drop{display:block}.wy-form-upload.wy-form-upload-drop .image-desktop{display:none}.wy-form-upload.wy-form-upload-drop .image-drag{display:none}.wy-form-upload.wy-form-upload-loading .image-drag{display:none}.wy-form-upload.wy-form-upload-loading .image-desktop{display:none}.wy-form-upload.wy-form-upload-loading .image-loading{display:block}.wy-form-upload.wy-form-upload-loading .wy-input-prefix{display:none}.wy-form-upload.wy-form-upload-loading p{margin-bottom:0}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}.wy-form-gallery-manage{margin-left:-12px;margin-right:-12px}.wy-form-gallery-manage li{float:left;padding:12px;width:20%;cursor:pointer}@media screen and (max-width: 768px){.wy-form-gallery-manage li{width:25%}}@media screen and (max-width: 480px){.wy-form-gallery-manage li{width:50%}}.wy-form-gallery-manage li:active{cursor:move}.wy-form-gallery-manage li>a{padding:12px;background-color:#fff;border:solid 1px #e1e4e5;border-bottom:solid 3px #e1e4e5;display:inline-block;-webkit-transition:all 0.1s ease-in;-moz-transition:all 0.1s ease-in;transition:all 0.1s ease-in}.wy-form-gallery-manage li>a:active{border:solid 1px #ccc;border-top:solid 3px #ccc}.wy-form-gallery-manage img{width:100%;-webkit-transition:all 0.05s ease-in;-moz-transition:all 0.05s ease-in;transition:all 0.05s ease-in}li.wy-form-gallery-edit{position:relative;color:#fff;padding:24px;width:100%;display:block;background-color:#343131;border-radius:4px}li.wy-form-gallery-edit .arrow{position:absolute;display:block;top:-50px;left:50%;margin-left:-25px;z-index:500;height:0;width:0;border-color:transparent;border-style:solid;border-width:25px;border-bottom-color:#343131}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:0.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0.3em;display:block}.wy-form label{margin-bottom:0.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:0.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-controls{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:0.2em 0 0.8em}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-grid-one-col{*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;max-width:1066px;margin-top:1.618em}.wy-grid-one-col:before,.wy-grid-one-col:after{display:table;content:""}.wy-grid-one-col:after{clear:both}.wy-grid-one-col section{display:block;float:left;margin-right:2.35765%;width:100%;background:#fcfcfc;padding:1.618em;margin-right:0}.wy-grid-one-col section:last-child{margin-right:0}.wy-grid-index-card{*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;max-width:460px;margin-top:1.618em;background:#fcfcfc;padding:1.618em}.wy-grid-index-card:before,.wy-grid-index-card:after{display:table;content:""}.wy-grid-index-card:after{clear:both}.wy-grid-index-card header,.wy-grid-index-card section,.wy-grid-index-card aside{display:block;float:left;margin-right:2.35765%;width:100%}.wy-grid-index-card header:last-child,.wy-grid-index-card section:last-child,.wy-grid-index-card aside:last-child{margin-right:0}.wy-grid-index-card.twocol{max-width:768px}.wy-grid-index-card.twocol section{display:block;float:left;margin-right:2.35765%;width:48.82117%}.wy-grid-index-card.twocol section:last-child{margin-right:0}.wy-grid-index-card.twocol aside{display:block;float:left;margin-right:2.35765%;width:48.82117%}.wy-grid-index-card.twocol aside:last-child{margin-right:0}.wy-grid-search-filter{*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;margin-bottom:24px}.wy-grid-search-filter:before,.wy-grid-search-filter:after{display:table;content:""}.wy-grid-search-filter:after{clear:both}.wy-grid-search-filter .wy-grid-search-filter-input{display:block;float:left;margin-right:2.35765%;width:74.41059%}.wy-grid-search-filter .wy-grid-search-filter-input:last-child{margin-right:0}.wy-grid-search-filter .wy-grid-search-filter-btn{display:block;float:left;margin-right:2.35765%;width:23.23176%}.wy-grid-search-filter .wy-grid-search-filter-btn:last-child{margin-right:0}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px;margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}a{color:#2980b9;text-decoration:none}a:hover{color:#3091d1}a:visited{color:#9b59b6}.link-danger{color:#e74c3c}.link-danger:hover{color:#d62c1a}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}small{font-size:80%}code,.rst-content tt{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:"Incosolata","Consolata","Monaco",monospace;color:#e74c3c;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.full-width{width:100%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li{list-style:square}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li{list-style:decimal;margin-left:24px}.wy-type-large{font-size:120%}.wy-type-normal{font-size:100%}.wy-type-small{font-size:100%}.wy-type-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980b9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27ae60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#e74c3c !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}.codeblock-example{border:1px solid #e1e4e5;border-bottom:none;padding:24px;padding-top:48px;font-weight:500;background:#fff;position:relative}.codeblock-example:after{content:"Example";position:absolute;top:0px;left:0px;background:#9b59b6;color:#fff;padding:6px 12px}.codeblock-example.prettyprint-example-only{border:1px solid #e1e4e5;margin-bottom:24px}.codeblock,.rst-content .literal-block,div[class^='highlight']{border:1px solid #e1e4e5;padding:0px;overflow-x:auto;background:#fff;margin:1px 0 24px 0}.codeblock div[class^='highlight'],.rst-content .literal-block div[class^='highlight'],div[class^='highlight'] div[class^='highlight']{border:none;background:none;margin:0}div[class^='highlight'] td.code{width:100%}.linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:"Incosolata","Consolata","Monaco",monospace;font-size:12px;line-height:1.5;color:#d9d9d9}div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;font-family:"Incosolata","Consolata","Monaco",monospace;font-size:12px;line-height:1.5;display:block;overflow:auto;color:#404040}pre.literal-block{@extends .codeblock;}@media print{.codeblock,.rst-content .literal-block,div[class^='highlight'],div[class^='highlight'] pre{white-space:pre-wrap}}.hll{background-color:#ffc;margin:0 -12px;padding:0 12px;display:block}.c{color:#998;font-style:italic}.err{color:#a61717;background-color:#e3d2d2}.k{font-weight:bold}.o{font-weight:bold}.cm{color:#998;font-style:italic}.cp{color:#999;font-weight:bold}.c1{color:#998;font-style:italic}.cs{color:#999;font-weight:bold;font-style:italic}.gd{color:#000;background-color:#fdd}.gd .x{color:#000;background-color:#faa}.ge{font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.gi .x{color:#000;background-color:#afa}.go{color:#888}.gp{color:#555}.gs{font-weight:bold}.gu{color:purple;font-weight:bold}.gt{color:#a00}.kc{font-weight:bold}.kd{font-weight:bold}.kn{font-weight:bold}.kp{font-weight:bold}.kr{font-weight:bold}.kt{color:#458;font-weight:bold}.m{color:#099}.s{color:#d14}.n{color:#333}.na{color:teal}.nb{color:#0086b3}.nc{color:#458;font-weight:bold}.no{color:teal}.ni{color:purple}.ne{color:#900;font-weight:bold}.nf{color:#900;font-weight:bold}.nn{color:#555}.nt{color:navy}.nv{color:teal}.ow{font-weight:bold}.w{color:#bbb}.mf{color:#099}.mh{color:#099}.mi{color:#099}.mo{color:#099}.sb{color:#d14}.sc{color:#d14}.sd{color:#d14}.s2{color:#d14}.se{color:#d14}.sh{color:#d14}.si{color:#d14}.sx{color:#d14}.sr{color:#009926}.s1{color:#d14}.ss{color:#990073}.bp{color:#999}.vc{color:teal}.vg{color:teal}.vi{color:teal}.il{color:#099}.gc{color:#999;background-color:#eaf2f5}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical header{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#2980b9;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:0.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical .local-toc li ul{display:block}.wy-menu-vertical li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:0.4045em 1.618em;display:block;position:relative;font-size:90%;color:#b3b3b3}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-side-nav-search{z-index:200;background-color:#2980b9;text-align:center;padding:0.809em;display:block;color:#fcfcfc;margin-bottom:0.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto 0.809em auto;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:0.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all 0.2s ease-in;-moz-transition:all 0.2s ease-in;transition:all 0.2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:left repeat-y #fcfcfc;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);background-size:300px 1px}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:absolute;top:0;left:0;width:300px;overflow:hidden;min-height:100%;background:#343131;z-index:200}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:0.4045em 0.809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:#999}footer p{margin-bottom:12px}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1400px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}nav.stickynav{position:fixed;top:0}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-dropdown .caret,.wy-dropdown .rst-versions .rst-current-version .caret,.rst-versions .rst-current-version .wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-success .rst-versions .rst-current-version .wy-input-context,.rst-versions .rst-current-version .wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .rst-versions .rst-current-version .wy-input-context,.rst-versions .rst-current-version .wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .rst-versions .rst-current-version .wy-input-context,.rst-versions .rst-current-version .wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-info .rst-versions .rst-current-version .wy-input-context,.rst-versions .rst-current-version .wy-tag-input-group .wy-tag .wy-tag-remove,.wy-tag-input-group .wy-tag .rst-versions .rst-current-version .wy-tag-remove,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}.rst-content img{max-width:100%;height:auto !important}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img{margin-bottom:24px}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .line-block{margin-left:24px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto;display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink{display:none;visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after{visibility:visible;content:"\f0c1";font-family:fontawesome-webfont;display:inline-block}.rst-content h1:hover .headerlink,.rst-content h2:hover .headerlink,.rst-content h3:hover .headerlink,.rst-content h4:hover .headerlink,.rst-content h5:hover .headerlink,.rst-content h6:hover .headerlink,.rst-content dl dt:hover .headerlink{display:inline-block}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:super;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:#999}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none;padding-top:5px}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left;padding-left:0}.rst-content tt{color:#000}.rst-content tt big,.rst-content tt em{font-size:100% !important;line-height:normal}.rst-content tt .xref,a .rst-content tt{font-weight:bold}.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:inline-block;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:gray}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}
diff --git a/apiref.html b/apiref.html
index 2598ccf9..559d0f0b 100644
--- a/apiref.html
+++ b/apiref.html
@@ -8,7 +8,7 @@
- API Reference — nghttp2 0.3.0-DEV documentation
+ API Reference — nghttp2 0.4.0-DEV documentation
@@ -23,7 +23,7 @@
diff --git a/index.html b/index.html
index a0d445f3..f0ac8d3e 100644
--- a/index.html
+++ b/index.html
@@ -8,7 +8,7 @@
- nghttp2 - HTTP/2.0 C Library — nghttp2 0.3.0-DEV documentation
+ nghttp2 - HTTP/2.0 C Library — nghttp2 0.4.0-DEV documentation
@@ -23,7 +23,7 @@
@@ -193,6 +193,7 @@ version 2.0.
Released Versions
@@ -211,7 +212,7 @@ version 2.0.
diff --git a/nghttp2.h.html b/nghttp2.h.html
index 8300e586..96dbf742 100644
--- a/nghttp2.h.html
+++ b/nghttp2.h.html
@@ -8,7 +8,7 @@
-
nghttp2.h — nghttp2 0.3.0-DEV documentation
+
nghttp2.h — nghttp2 0.4.0-DEV documentation
@@ -23,7 +23,7 @@
@@ -180,7 +180,7 @@
* @macro
* Version number of the nghttp2 library release
*/
-
#define NGHTTP2_VERSION "0.3.0-DEV"
+
#define NGHTTP2_VERSION "0.4.0-DEV"
/**
* @macro
@@ -188,7 +188,7 @@
* release. This is a 24 bit number with 8 bits for major number, 8 bits
* for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.
*/
-
#define NGHTTP2_VERSION_NUM 0x000300
+
#define NGHTTP2_VERSION_NUM 0x000400
#endif /* NGHTTP2VER_H */
@@ -202,7 +202,7 @@
diff --git a/objects.inv b/objects.inv
index bd43ceba1307cd0643a546e7690c0ae415f1c7b3..d8b9be9f4de68ed933acb372dca6aa9190a77ae4 100644
GIT binary patch
delta 2028
zcmV>1B4bk=;}`GpjDQkcU(;~I(%I)Pv*P{pq5neL*N614
z*(#5ll+8^3uTMLcU0Edl+pp*ztyow_`{{$-|N6(g?tyi}?w(WlO@7d>1_VUU1*AJAq
zE;a4%x@8*F^L3x_MPXFtSJsI47frRNMVTLxifP#~W!bGaiB;KAJBDe)Fwa)3s<=5(
zn5LUBdaX40ur0#_qgj8>jnCrYJFJyYL^p^_=gw+P=C)uu|EUU}+kDnJCG;N=_wr+9T92a5H+BK==JQL5yS8_Ok(>GVcRBi-*kU$5j>072%C3#_!hp)
zZ7eIuz`A7NL1Sf^Ly+?rmDL5rSN`+o)!n@cU)krOh@q=QU$;%xb_irESh)I%pnWEZ
z&m@+#HD8+E)4t>qeML?um81y@FJ!nQMphN7|vUT7+AuKyLNfOv-
z&!SfWP<@CI*=Oj!j@V3BV{JoFFY&t=NdGq$C7GbWVqt&jORC>2o*^vV=H`~;5d-T2
zZGaQ$R)(-cYU8kZ!*+?_7!?AZ$F=ip+J^Itt(wz2YPQQu1U%m8jgplUG?fyKDFu`~
z-i4$nle|pocLn0nnSUQjY}ht0Szi%%aaO1Y*BAL`J3iGdPT>q>OI^UjoDTV}W1&Ez
zqo7DQ=TU#=5yLgn-S4CTAl{~sNNSv90gVT5<}tjG!rihAG?bjvw0Q;hu(j9hCO2w(JvvP_v&2~d>;OE|-J&_c&q`*cl!9`J4l
zk(vjt%XL9lMjocab`%^hcPdsMIheAy2V6Bw01SVpZg@HvWC4FrAT)l%J-Q9uuP#}V
zWFRnMjbsHZiB}YKwnuYQaiR17rcE;zy}(Dp}P)$Ko!-73;{kT5-EmUN}`mRt+ZjtOjab4=n#K&3osVMR|J2xrJ#5
zx{uR0E$1e-(Fz-0YAe&jqNY#^y1NWkP#jna#0MFz+okw1!9{52txvP&fN?}8NHLWP
z1Za2X9PLBaFAXnpig!(rsP&`4A9LNOF8O~axIJ#XNDRCmIiHkU;(B7&$b2Er0&AXp
zui|k5Cw8z>m;zvFA5#5*Cf863`C=8|`L5opv{-ns%{g3uJ%bbJDZw>H)Q%@8`C+2+
zZLZsMVj&)M$pQ$tA#79@Sh;p=l=d0J^EOsceiL4Z2ulZ&J#Ub{q#uo^
z;qVq@-SxXWjUEuflxrT4NO}O|wI3Jsj3ZbZxS3jKov1~XYUjD$TiAdSQeakBet~Vb
z{4DdxXqrRj(-GanxuV4qAW)8L`Y(U?o){?3Y)&(C)O_srd4yzr&rHyrq{&{h{O$id
z&$~R^L=Lmm#;BmeO
zO~>|7WjMh~+zpF%qlW2m7aG{&DfVr*23+?M%YnT07im$TAuq7e6cs~L0Kg7K2o)*6
KK=>cE8laM_(B)A8
delta 2012
zcmV<22P62=5Wx_TJpnV3K0<%na+^pHea}~@YWFo%C69R{(#WP3ftE`g=Vc0`kwh5*
z;UdTR`t9LnbTOP!_Q@rS5#7_LPoM6YL%NBQjrcVy%FUNJcoOmKtd6A9I@r*1=AENOphwvdlj7G%I-_
zN-arwP?aeU(;lCd{+tCFL34B|>4&laL6
zq&r~{$4^1{Txj%Rn+Jaf!IM-vpKSW?P%rP9zF-cY+pG16kKGEFd7fe2x!p2P|7tSs
z8b6Q?B4hU=*ob^+WciwjQJ2dyN_GVoNtwUC|9oelVR_84bW{3fJAg-P$Ka;@z+4aW
zpxN$RghwSWt^|&-81QgkCC?W>H;IJW3T?kZqC7VZW_c80%VK|XY5HWEvPsFcMa%7o?X-w<3RZ=rF
z=yD6(uckf!=N5k#rcpz5oKQGWV0gC8SGx5`7A{SLzUX%v2#WlHwPSlW@a#(eeiP>w
z)zcv=FHk?S@7>CVstc-Q0lFK$<@)Qj?Rad#zcI%pu2I1zvue-QzIzXNcJ2~N!Er>T
zgn;<+8N=T~_jJIVj>T@u;hQ8z`*+hNWdv1&rK#U>eKdc4`oJ{C%}v{73lPr>wxmB4
zf4Oa(eK$ty>IDP{=3p{B7}mmmK+~WFGciFac4-cjv!=ohHyok4lgg(o3ZBF^%|#0(
zSk0YToJVOMm9GjaqS+fX$qB2D*I~o5J+7NlKcN6w(!)}Vc#dsC6yE4Ru$IbHkRiY*
zZudLNc$9x^V?qVr2!(>QBy=O@chQhxf$VSSy4PHQ6P>@4!r1T((!~QAh^5fbZOdM<
z6wZ{l>5iDAu%FNb{zy*JCTvDKZ_1
zy}nX8q>MI9-(d=>awkfjR^?M#kpVv|Q4wcHzXe7jweIUg5@~p_8LN9n+N@(l$kZrZ
z)LidK;AYs>?=R9S4`mO0`t}I|x}WP_t?jtO+_i1F?A9hEB1sxYn|E4qAQy%s1+D)W
z!RUW}uzhoZHX$cERck*2rPpKA=9#PvOFWc>6rGqtpk=?
zNs+S`VhY_iRT|Pa4#QH-VN0q+oz}*?_c-Wl5{L~cYYfZRz46B9a$=&^H0aKqzoNWF
z6_*@Z)FGLyPv=_=Yoew#b#Kb(8xr^mDLj9PU6c%TK2D0V7*p-meIn#m*0wPA*NgGK
z>{|b#Myx07=&*l%1~p7|7ssrH!p2LnJB>5P^`;Z$!it*Ksidt8m!Zy1Ti!k1RY}WV
zDZ~Pmo?t5|2b2&QT*kvMcv0z@`W5vW5|SEry8^>!nF`z&pRb&6s93DW0)@E!lr4
z48{k=37F_6@3h9ZOy3p7!x>64gsYuBHLhgiZNix}v;XU4}oo}2i
zB}XVd$CdfS`j*15c+tzMJH6SXBY~{8H2czpis%U{*2)U$J*m3
zu<%a<>3q_lFm!E{4wy-jQ&dluChka_xG-0MRr3n0$v%>lIREzlRN!fU=xy7V&L4>
z9?mp37nH<;*ly)5reho58gzY2fdHpfYNE)}qyWd0@7)rHhEAFVKdXM4s-g;vMRWN1jii~pwt(Fp8@cl}+5FX8
z4<9l0vl)2oIdZ*cB4X`kV%NTUlw&ia^XpuhAdPege#z^dVU_1nXf=OkL;P`4v#~N)
z8@e!D8D&I0)%7IU3AL#{I_02Bl&xaPNJOKY+K5;qguD^6Bw7u(|COM)3Z5FAu2>7A1IZ
u=Aw9V^lf8FbDO^HF3^J(w55Kkq782b!F_x}1wB1v0VU>i7ylp2NT8BVdgMR=
diff --git a/package_README.html b/package_README.html
index e7b5bab1..c1c3cb09 100644
--- a/package_README.html
+++ b/package_README.html
@@ -8,7 +8,7 @@
- nghttp2 - HTTP/2.0 C Library — nghttp2 0.3.0-DEV documentation
+ nghttp2 - HTTP/2.0 C Library — nghttp2 0.4.0-DEV documentation
@@ -23,7 +23,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nghttp2
+
+
+
+
+
+
+
+
+
+
+
API Reference
+
+
Includes
+
To use the public APIs, include nghttp2/nghttp2.h :
+
#include <nghttp2/nghttp2.h>
+
+
+
The header files are also available online: nghttp2.h and
+nghttp2ver.h .
+
+
+
+
Macros
+
+
+NGHTTP2_VERSION
+Version number of the nghttp2 library release
+
+
+
+
+NGHTTP2_VERSION_NUM
+Numerical representation of the version number of the nghttp2 library
+release. This is a 24 bit number with 8 bits for major number, 8 bits
+for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.
+
+
+
+
+NGHTTP2_PROTO_VERSION_ID
+The protocol version identification of this library supports.
+
+
+
+
+NGHTTP2_PROTO_VERSION_ID_LEN
+The length of NGHTTP2_PROTO_VERSION_ID .
+
+
+
+
+NGHTTP2_VERSION_AGE
+The age of nghttp2_info
+
+
+
+
+NGHTTP2_PRI_DEFAULT
+The default priority value
+
+
+
+
+NGHTTP2_PRI_LOWEST
+The lowest priority value
+
+
+
+
+NGHTTP2_MAX_WINDOW_SIZE
+The maximum window size
+
+
+
+
+NGHTTP2_INITIAL_WINDOW_SIZE
+The initial window size for stream level flow control.
+
+
+
+
+NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE
+The initial window size for connection level flow control.
+
+
+
+
+The maximum header table size.
+
+
+
+
+The client connection header.
+
+
+
+
+The length of NGHTTP2_CLIENT_CONNECTION_HEADER .
+
+
+
+
+NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS
+Default maximum concurrent streams.
+
+
+
+
+
Enums
+
+
+nghttp2_error
+Error codes used in this library. The code range is [-999, -500],
+inclusive. The following values are defined:
+
+
+NGHTTP2_ERR_INVALID_ARGUMENT
+(-501 )
+Invalid argument passed.
+
+
+
+
+NGHTTP2_ERR_UNSUPPORTED_VERSION
+(-503 )
+The specified protocol version is not supported.
+
+
+
+
+NGHTTP2_ERR_WOULDBLOCK
+(-504 )
+Used as a return value from nghttp2_send_callback and
+nghttp2_recv_callback to indicate that the operation
+would block.
+
+
+
+
+NGHTTP2_ERR_PROTO
+(-505 )
+General protocol error
+
+
+
+
+NGHTTP2_ERR_INVALID_FRAME
+(-506 )
+The frame is invalid.
+
+
+
+
+NGHTTP2_ERR_EOF
+(-507 )
+The peer performed a shutdown on the connection.
+
+
+
+
+NGHTTP2_ERR_DEFERRED
+(-508 )
+Used as a return value from
+nghttp2_data_source_read_callback() to indicate that data
+transfer is postponed. See
+nghttp2_data_source_read_callback() for details.
+
+
+
+
+NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE
+(-509 )
+Stream ID has reached the maximum value. Therefore no stream ID
+is available.
+
+
+
+
+NGHTTP2_ERR_STREAM_CLOSED
+(-510 )
+The stream is already closed; or the stream ID is invalid.
+
+
+
+
+NGHTTP2_ERR_STREAM_CLOSING
+(-511 )
+RST_STREAM has been added to the outbound queue. The stream is in
+closing state.
+
+
+
+
+NGHTTP2_ERR_STREAM_SHUT_WR
+(-512 )
+The transmission is not allowed for this stream (e.g., a frame
+with END_STREAM flag set has already sent).
+
+
+
+
+NGHTTP2_ERR_INVALID_STREAM_ID
+(-513 )
+The stream ID is invalid.
+
+
+
+
+NGHTTP2_ERR_INVALID_STREAM_STATE
+(-514 )
+The state of the stream is not valid (e.g., DATA cannot be sent
+to the stream if response HEADERS has not been sent).
+
+
+
+
+NGHTTP2_ERR_DEFERRED_DATA_EXIST
+(-515 )
+Another DATA frame has already been deferred.
+
+
+
+
+NGHTTP2_ERR_START_STREAM_NOT_ALLOWED
+(-516 )
+Starting new stream is not allowed. (e.g., GOAWAY has been sent
+and/or received.
+
+
+
+
+NGHTTP2_ERR_GOAWAY_ALREADY_SENT
+(-517 )
+GOAWAY has already been sent.
+
+
+
+
+(-518 )
+The received frame contains the invalid header block. (e.g.,
+There are duplicate header names; or the header names are not
+encoded in US-ASCII character set and not lower cased; or the
+header name is zero-length string; or the header value contains
+multiple in-sequence NUL bytes).
+
+
+
+
+NGHTTP2_ERR_INVALID_STATE
+(-519 )
+Indicates that the context is not suitable to perform the
+requested operation.
+
+
+
+
+NGHTTP2_ERR_GZIP
+(-520 )
+The gzip error.
+
+
+
+
+NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE
+(-521 )
+The user callback function failed due to the temporal error.
+
+
+
+
+NGHTTP2_ERR_FRAME_SIZE_ERROR
+(-522 )
+The length of the frame is invalid, either too large or too small.
+
+
+
+
+(-523 )
+Header block inflate/deflate error.
+
+
+
+
+NGHTTP2_ERR_FLOW_CONTROL
+(-524 )
+Flow control error
+
+
+
+
+NGHTTP2_ERR_INSUFF_BUFSIZE
+(-525 )
+Insufficient buffer size given to function.
+
+
+
+
+NGHTTP2_ERR_PAUSE
+(-526 )
+Callback was paused by the application
+
+
+
+
+NGHTTP2_ERR_TOO_MANY_INFLIGHT_SETTINGS
+(-527 )
+There are too many in-flight SETTING frame and no more
+transmission of SETTINGS is allowed.
+
+
+
+
+NGHTTP2_ERR_PUSH_DISABLED
+(-528 )
+The server push is disabled.
+
+
+
+
+NGHTTP2_ERR_FATAL
+(-900 )
+The errors < NGHTTP2_ERR_FATAL mean that the library is
+under unexpected condition and cannot process any further data
+reliably (e.g., out of memory).
+
+
+
+
+NGHTTP2_ERR_NOMEM
+(-901 )
+Out of memory. This is a fatal error.
+
+
+
+
+NGHTTP2_ERR_CALLBACK_FAILURE
+(-902 )
+The user callback function failed. This is a fatal error.
+
+
+
+
+
+
+nghttp2_frame_type
+The control frame types in HTTP/2.0.
+
+
+NGHTTP2_DATA
+(0 )
+The DATA frame.
+
+
+
+
+(1 )
+The HEADERS frame.
+
+
+
+
+NGHTTP2_PRIORITY
+(2 )
+The PRIORITY frame.
+
+
+
+
+NGHTTP2_RST_STREAM
+(3 )
+The RST_STREAM frame.
+
+
+
+
+NGHTTP2_SETTINGS
+(4 )
+The SETTINGS frame.
+
+
+
+
+NGHTTP2_PUSH_PROMISE
+(5 )
+The PUSH_PROMISE frame.
+
+
+
+
+NGHTTP2_PING
+(6 )
+The PING frame.
+
+
+
+
+NGHTTP2_GOAWAY
+(7 )
+The GOAWAY frame.
+
+
+
+
+NGHTTP2_WINDOW_UPDATE
+(9 )
+The WINDOW_UPDATE frame.
+
+
+
+
+NGHTTP2_CONTINUATION
+(10 )
+The CONTINUATION frame.
+
+
+
+
+
+
+nghttp2_flag
+The flags for HTTP/2.0 frames. This enum defines all flags for
+frames, assuming that the same flag name has the same mask.
+
+
+NGHTTP2_FLAG_NONE
+(0 )
+No flag set.
+
+
+
+
+NGHTTP2_FLAG_END_STREAM
+(0x1 )
+The END_STREAM flag.
+
+
+
+
+(0x4 )
+The END_HEADERS flag.
+
+
+
+
+NGHTTP2_FLAG_PRIORITY
+(0x8 )
+The PRIORITY flag.
+
+
+
+
+NGHTTP2_FLAG_END_PUSH_PROMISE
+(0x4 )
+The END_PUSH_PROMISE flag.
+
+
+
+
+NGHTTP2_FLAG_ACK
+(0x1 )
+The ACK flag.
+
+
+
+
+
+
+nghttp2_settings_id
+The SETTINGS ID.
+
+
+(1 )
+SETTINGS_HEADER_TABLE_SIZE
+
+
+
+
+NGHTTP2_SETTINGS_ENABLE_PUSH
+(2 )
+SETTINGS_ENABLE_PUSH
+
+
+
+
+NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS
+(4 )
+SETTINGS_MAX_CONCURRENT_STREAMS
+
+
+
+
+NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE
+(7 )
+SETTINGS_INITIAL_WINDOW_SIZE
+
+
+
+
+NGHTTP2_SETTINGS_FLOW_CONTROL_OPTIONS
+(10 )
+SETTINGS_FLOW_CONTROL_OPTIONS
+
+
+
+
+NGHTTP2_SETTINGS_MAX
+(10 )
+Maximum ID of nghttp2_settings_id .
+
+
+
+
+
+
+nghttp2_error_code
+The status codes for the RST_STREAM and GOAWAY frames.
+
+
+NGHTTP2_NO_ERROR
+(0 )
+No errors.
+
+
+
+
+NGHTTP2_PROTOCOL_ERROR
+(1 )
+PROTOCOL_ERROR
+
+
+
+
+NGHTTP2_INTERNAL_ERROR
+(2 )
+INTERNAL_ERROR
+
+
+
+
+NGHTTP2_FLOW_CONTROL_ERROR
+(3 )
+FLOW_CONTROL_ERROR
+
+
+
+
+NGHTTP2_SETTINGS_TIMEOUT
+(4 )
+SETTINGS_TIMEOUT
+
+
+
+
+NGHTTP2_STREAM_CLOSED
+(5 )
+STREAM_CLOSED
+
+
+
+
+NGHTTP2_FRAME_SIZE_ERROR
+(6 )
+FRAME_SIZE_ERROR
+
+
+
+
+NGHTTP2_REFUSED_STREAM
+(7 )
+REFUSED_STREAM
+
+
+
+
+NGHTTP2_CANCEL
+(8 )
+CANCEL
+
+
+
+
+NGHTTP2_COMPRESSION_ERROR
+(9 )
+COMPRESSION_ERROR
+
+
+
+
+NGHTTP2_CONNECT_ERROR
+(10 )
+CONNECT_ERROR
+
+
+
+
+NGHTTP2_ENHANCE_YOUR_CALM
+(420 )
+ENHANCE_YOUR_CALM
+
+
+
+
+
+
+The category of HEADERS, which indicates the role of the frame. In
+HTTP/2.0 spec, request, response, push response and other arbitrary
+headers (e.g., trailers) are all called just HEADERS. To give the
+application the role of incoming HEADERS frame, we define several
+categories.
+
+
+NGHTTP2_HCAT_REQUEST
+(0 )
+The HEADERS frame is opening new stream, which is analogous to
+SYN_STREAM in SPDY.
+
+
+
+
+NGHTTP2_HCAT_RESPONSE
+(1 )
+The HEADERS frame is the first response headers, which is
+analogous to SYN_REPLY in SPDY.
+
+
+
+
+NGHTTP2_HCAT_PUSH_RESPONSE
+(2 )
+The HEADERS frame is the first headers sent against reserved
+stream.
+
+
+
+
+(3 )
+The HEADERS frame which does not apply for the above categories,
+which is analogous to HEADERS in SPDY.
+
+
+
+
+
+
+nghttp2_opt
+Configuration options for nghttp2_session .
+
+
+NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE
+(1 )
+This option prevents the library from sending WINDOW_UPDATE for a
+stream automatically. If this option is set to nonzero, the
+library won’t send WINDOW_UPDATE for a stream and the application
+is responsible for sending WINDOW_UPDATE using
+nghttp2_submit_window_update() . By default, this option is set to
+zero.
+
+
+
+
+NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE
+(1 << 1 )
+This option prevents the library from sending WINDOW_UPDATE for a
+connection automatically. If this option is set to nonzero, the
+library won’t send WINDOW_UPDATE for a connection and the
+application is responsible for sending WINDOW_UPDATE with stream
+ID 0 using nghttp2_submit_window_update() . By default, this
+option is set to zero.
+
+
+
+
+NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS
+(1 << 2 )
+This option sets the SETTINGS_MAX_CONCURRENT_STREAMS value of
+remote endpoint as if it is received in SETTINGS frame. Without
+specifying this option, before the local endpoint receives
+SETTINGS_MAX_CONCURRENT_STREAMS in SETTINGS frame from remote
+endpoint, SETTINGS_MAX_CONCURRENT_STREAMS is unlimited. This may
+cause problem if local endpoint submits lots of requests
+initially and sending them at once to the remote peer may lead to
+the rejection of some requests. Specifying this option to the
+sensible value, say 100, may avoid this kind of issue. This value
+will be overwritten if the local endpoint receives
+SETTINGS_MAX_CONCURRENT_STREAMS from the remote endpoint.
+
+
+
+
+
+
+
Types (structs, unions and typedefs)
+
+
+nghttp2_session
+The primary structure to hold the resources needed for a HTTP/2.0
+session. The details of this structure are intentionally hidden
+from the public API.
+
+
+
+
+nghttp2_info
+This struct is what nghttp2_version() returns. It holds
+information about the particular nghttp2 version.
+
+
+int age
+Age of this struct. This instance of nghttp2 sets it to
+NGHTTP2_VERSION_AGE but a future version may bump it and
+add more struct fields at the bottom
+
+
+
+
+int version_num
+the NGHTTP2_VERSION_NUM number (since age ==1)
+
+
+
+
+const char *version_str
+points to the NGHTTP2_VERSION string (since age ==1)
+
+
+
+
+const char *proto_str
+points to the NGHTTP2_PROTO_VERSION_ID string this
+instance implements (since age ==1)
+
+
+
+
+
+
+nghttp2_nv
+The name/value pair, which mainly used to represent header fields.
+
+
+uint8_t *name
+The name byte string, which is not necessarily NULL
+terminated.
+
+
+
+
+uint8_t *value
+The value byte string, which is not necessarily NULL
+terminated.
+
+
+
+
+uint16_t namelen
+The length of the name .
+
+
+
+
+uint16_t valuelen
+The length of the value .
+
+
+
+
+
+
+nghttp2_frame_hd
+The frame header.
+
+
+size_t length
+The length field of this frame, excluding frame header.
+
+
+
+
+int32_t stream_id
+The stream identifier (aka, stream ID)
+
+
+
+
+uint8_t type
+The type of this frame. See nghttp2_frame() .
+
+
+
+
+uint8_t flags
+The flags.
+
+
+
+
+
+
+nghttp2_data_source
+This union represents the some kind of data source passed to
+nghttp2_data_source_read_callback .
+
+
+int fd
+The integer field, suitable for a file descriptor.
+
+
+
+
+void *ptr
+The pointer to an arbitrary object.
+
+
+
+
+
+
+typedef ssize_t (*nghttp2_data_source_read_callback) ( nghttp2_session *session , int32_t stream_id , uint8_t *buf , size_t length , int *eof , nghttp2_data_source *source , void *user_data )
+Callback function invoked when the library wants to read data from
+the source . The read data is sent in the stream stream_id . The
+implementation of this function must read at most length bytes of
+data from source (or possibly other places) and store them in
+buf and return number of data stored in buf . If EOF is reached,
+set *eof to 1. If the application wants to postpone DATA frames,
+(e.g., asynchronous I/O, or reading data blocks for long time), it
+is achieved by returning NGHTTP2_ERR_DEFERRED without
+reading any data in this invocation. The library removes DATA
+frame from the outgoing queue temporarily. To move back deferred
+DATA frame to outgoing queue, call nghttp2_session_resume_data() .
+In case of error, there are 2 choices. Returning
+NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE will close the stream
+by issuing RST_STREAM with NGHTTP2_INTERNAL_ERROR .
+Returning NGHTTP2_ERR_CALLBACK_FAILURE will signal the
+entire session failure.
+
+
+
+
+nghttp2_data_provider
+This struct represents the data source and the way to read a chunk
+of data from it.
+
+
+nghttp2_data_source source
+The data source.
+
+
+
+
+nghttp2_data_source_read_callback read_callback
+The callback function to read a chunk of data from the source .
+
+
+
+
+
+
+nghttp2_data
+The DATA frame. The received data is delivered via
+nghttp2_on_data_chunk_recv_callback .
+
+
+
+
+The HEADERS frame. It has the following members:
+
+
+The frame header.
+
+
+
+
+The name/value pairs.
+
+
+
+
+The number of name/value pairs in nva .
+
+
+
+
+The category of this HEADERS frame.
+
+
+
+
+The priority.
+
+
+
+
+
+
+nghttp2_priority
+The PRIORITY frame. It has the following members:
+
+
+nghttp2_frame_hd hd
+The frame header.
+
+
+
+
+int32_t pri
+The priority.
+
+
+
+
+
+
+nghttp2_rst_stream
+The RST_STREAM frame. It has the following members:
+
+
+nghttp2_frame_hd hd
+The frame header.
+
+
+
+
+nghttp2_error_code error_code
+The error code. See nghttp2_error_code .
+
+
+
+
+
+
+nghttp2_settings_entry
+The SETTINGS ID/Value pair. It has the following members:
+
+
+int32_t settings_id
+The SETTINGS ID. See nghttp2_settings_id .
+
+
+
+
+uint32_t value
+The value of this entry.
+
+
+
+
+
+
+nghttp2_settings
+The SETTINGS frame. It has the following members:
+
+
+nghttp2_frame_hd hd
+The frame header.
+
+
+
+
+size_t niv
+The number of SETTINGS ID/Value pairs in iv .
+
+
+
+
+nghttp2_settings_entry *iv
+The pointer to the array of SETTINGS ID/Value pair.
+
+
+
+
+
+
+nghttp2_push_promise
+The PUSH_PROMISE frame. It has the following members:
+
+
+nghttp2_frame_hd hd
+The frame header.
+
+
+
+
+nghttp2_nv *nva
+The name/value pairs.
+
+
+
+
+size_t nvlen
+The number of name/value pairs in nva .
+
+
+
+
+int32_t promised_stream_id
+The promised stream ID
+
+
+
+
+
+
+nghttp2_ping
+The PING frame. It has the following members:
+
+
+nghttp2_frame_hd hd
+The frame header.
+
+
+
+
+uint8_t opaque_data[8]
+The opaque data
+
+
+
+
+
+
+nghttp2_goaway
+The GOAWAY frame. It has the following members:
+
+
+nghttp2_frame_hd hd
+The frame header.
+
+
+
+
+int32_t last_stream_id
+The last stream stream ID.
+
+
+
+
+nghttp2_error_code error_code
+The error code. See nghttp2_error_code .
+
+
+
+
+uint8_t *opaque_data
+The additional debug data
+
+
+
+
+size_t opaque_data_len
+The length of opaque_data member.
+
+
+
+
+
+
+nghttp2_window_update
+The WINDOW_UPDATE frame. It has the following members:
+
+
+nghttp2_frame_hd hd
+The frame header.
+
+
+
+
+int32_t window_size_increment
+The window size increment.
+
+
+
+
+
+
+nghttp2_frame
+This union includes all frames to pass them to various function
+calls as nghttp2_frame type. The CONTINUATION frame is omitted from
+here because the library deals with it internally.
+
+
+nghttp2_frame_hd hd
+The frame header, which is convenient to inspect frame header.
+
+
+
+
+nghttp2_data data
+The DATA frame.
+
+
+
+
+The HEADERS frame.
+
+
+
+
+nghttp2_priority priority
+The PRIORITY frame.
+
+
+
+
+nghttp2_rst_stream rst_stream
+The RST_STREAM frame.
+
+
+
+
+nghttp2_settings settings
+The SETTINGS frame.
+
+
+
+
+nghttp2_push_promise push_promise
+The PUSH_PROMISE frame.
+
+
+
+
+nghttp2_ping ping
+The PING frame.
+
+
+
+
+nghttp2_goaway goaway
+The GOAWAY frame.
+
+
+
+
+nghttp2_window_update window_update
+The WINDOW_UPDATE frame.
+
+
+
+
+
+
+typedef ssize_t (*nghttp2_send_callback) ( nghttp2_session *session , const uint8_t *data , size_t length , int flags , void *user_data )
+Callback function invoked when session wants to send data to the
+remote peer. The implementation of this function must send at most
+length bytes of data stored in data . The flags is currently
+not used and always 0. It must return the number of bytes sent if
+it succeeds. If it cannot send any single byte without blocking,
+it must return NGHTTP2_ERR_WOULDBLOCK . For other errors, it
+must return NGHTTP2_ERR_CALLBACK_FAILURE . The user_data
+pointer is the third argument passed in to the call to
+nghttp2_session_client_new() or nghttp2_session_server_new() .
+
+
+
+
+typedef ssize_t (*nghttp2_recv_callback) ( nghttp2_session *session , uint8_t *buf , size_t length , int flags , void *user_data )
+Callback function invoked when session wants to receive data from
+the remote peer. The implementation of this function must read at
+most length bytes of data and store it in buf . The flags is
+currently not used and always 0. It must return the number of bytes
+written in buf if it succeeds. If it cannot read any single byte
+without blocking, it must return NGHTTP2_ERR_WOULDBLOCK . If
+it gets EOF before it reads any single byte, it must return
+NGHTTP2_ERR_EOF . For other errors, it must return
+NGHTTP2_ERR_CALLBACK_FAILURE . Returning 0 is treated as
+NGHTTP2_ERR_WOULDBLOCK . The user_data pointer is the
+third argument passed in to the call to
+nghttp2_session_client_new() or nghttp2_session_server_new() .
+
+
+
+
+typedef int (*nghttp2_on_frame_recv_callback) ( nghttp2_session *session , const nghttp2_frame *frame , void *user_data )
+Callback function invoked by nghttp2_session_recv() when a aframe
+is received. The user_data pointer is the third argument passed
+in to the call to nghttp2_session_client_new() or
+nghttp2_session_server_new() .
+If frame is HEADERS or PUSH_PROMISE, the nva and nvlen
+member of their data structure are always NULL and 0
+respectively. The header name/value pairs are emitted via
+nghttp2_on_header_callback .
+For HEADERS, PUSH_PROMISE and DATA frames, this callback may be
+called after stream is closed (see
+nghttp2_on_stream_close_callback ). The application should
+check that stream is still alive using its own stream management or
+nghttp2_session_get_stream_user_data() .
+Only HEADERS and DATA frame can signal the end of incoming data. If
+frame->hd.flags & NGHTTP2_FLAG_END_STREAM is nonzero, the
+frame is the last frame from the remote peer in this stream.
+The implementation of this function must return 0 if it
+succeeds. If nonzero value is returned, it is treated as fatal
+error and nghttp2_session_recv() and nghttp2_session_mem_recv()
+functions immediately return NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+typedef int (*nghttp2_on_invalid_frame_recv_callback) ( nghttp2_session *session , const nghttp2_frame *frame , nghttp2_error_code error_code , void *user_data )
+Callback function invoked by nghttp2_session_recv() when an
+invalid non-DATA frame is received. The error_code is one of the
+nghttp2_error_code and indicates the error. When this
+callback function is invoked, the library automatically submits
+either RST_STREAM or GOAWAY frame. The user_data pointer is the
+third argument passed in to the call to
+nghttp2_session_client_new() or nghttp2_session_server_new() .
+If frame is HEADERS or PUSH_PROMISE, the nva and nvlen
+member of their data structure are always NULL and 0
+respectively.
+The implementation of this function must return 0 if it
+succeeds. If nonzero is returned, it is treated as fatal error and
+nghttp2_session_recv() and nghttp2_session_send() functions
+immediately return NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+typedef int (*nghttp2_on_data_chunk_recv_callback) ( nghttp2_session *session , uint8_t flags , int32_t stream_id , const uint8_t *data , size_t len , void *user_data )
+Callback function invoked when a chunk of data in DATA frame is
+received. The stream_id is the stream ID this DATA frame belongs
+to. The flags is the flags of DATA frame which this data chunk is
+contained. (flags & NGHTTP2_FLAG_END_STREAM) != 0 does not
+necessarily mean this chunk of data is the last one in the
+stream. You should use nghttp2_on_frame_recv_callback to
+know all data frames are received. The user_data pointer is the
+third argument passed in to the call to
+nghttp2_session_client_new() or nghttp2_session_server_new() .
+If the application uses nghttp2_session_mem_recv() , it can return
+NGHTTP2_ERR_PAUSE to make nghttp2_session_mem_recv()
+return without processing further input bytes. The memory by
+pointed by the data is retained until
+nghttp2_session_mem_recv() or nghttp2_session_recv() is
+called. The application must retain the input bytes which was used
+to produce the data parameter, because it may refer to the memory
+region included in the input bytes.
+The implementation of this function must return 0 if it
+succeeds. If nonzero is returned, it is treated as fatal error and
+nghttp2_session_recv() and nghttp2_session_mem_recv() functions
+immediately return NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+typedef int (*nghttp2_before_frame_send_callback) ( nghttp2_session *session , const nghttp2_frame *frame , void *user_data )
+Callback function invoked before the non-DATA frame frame is
+sent. This may be useful, for example, to know the stream ID of
+HEADERS and PUSH_PROMISE frame (see also
+nghttp2_session_get_stream_user_data() ), which is not assigned
+when it was queued. The user_data pointer is the third argument
+passed in to the call to nghttp2_session_client_new() or
+nghttp2_session_server_new() .
+The implementation of this function must return 0 if it
+succeeds. If nonzero is returned, it is treated as fatal error and
+nghttp2_session_recv() and nghttp2_session_send() functions
+immediately return NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+typedef int (*nghttp2_on_frame_send_callback) ( nghttp2_session *session , const nghttp2_frame *frame , void *user_data )
+Callback function invoked after the frame frame is sent. The
+user_data pointer is the third argument passed in to the call to
+nghttp2_session_client_new() or nghttp2_session_server_new() .
+The implementation of this function must return 0 if it
+succeeds. If nonzero is returned, it is treated as fatal error and
+nghttp2_session_recv() and nghttp2_session_send() functions
+immediately return NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+typedef int (*nghttp2_on_frame_not_send_callback) ( nghttp2_session *session , const nghttp2_frame *frame , int lib_error_code , void *user_data )
+Callback function invoked after the non-DATA frame frame is not
+sent because of the error. The error is indicated by the
+lib_error_code , which is one of the values defined in
+nghttp2_error . The user_data pointer is the third
+argument passed in to the call to nghttp2_session_client_new() or
+nghttp2_session_server_new() .
+The implementation of this function must return 0 if it
+succeeds. If nonzero is returned, it is treated as fatal error and
+nghttp2_session_recv() and nghttp2_session_send() functions
+immediately return NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+typedef int (*nghttp2_on_stream_close_callback) ( nghttp2_session *session , int32_t stream_id , nghttp2_error_code error_code , void *user_data )
+Callback function invoked when the stream stream_id is
+closed. The reason of closure is indicated by the error_code . The
+stream_user_data, which was specified in nghttp2_submit_request()
+or nghttp2_submit_headers() , is still available in this
+function. The user_data pointer is the third argument passed in
+to the call to nghttp2_session_client_new() or
+nghttp2_session_server_new() .
+The implementation of this function must return 0 if it
+succeeds. If nonzero is returned, it is treated as fatal error and
+nghttp2_session_recv() and nghttp2_session_send() functions
+immediately return NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+typedef int (*nghttp2_on_unknown_frame_recv_callback) ( nghttp2_session *session , const uint8_t *head , size_t headlen , const uint8_t *payload , size_t payloadlen , void *user_data )
+Callback function invoked when the received frame type is
+unknown. The head is the pointer to the header of the received
+frame. The headlen is the length of the head . According to the
+spec, the headlen is always 8. In other words, the head is the
+first 8 bytes of the received frame. The payload is the pointer
+to the data portion of the received frame. The payloadlen is the
+length of the payload . This is the data after the length
+field. The user_data pointer is the third argument passed in to
+the call to nghttp2_session_client_new() or
+nghttp2_session_server_new() .
+The implementation of this function must return 0 if it
+succeeds. If nonzero is returned, it is treated as fatal error and
+nghttp2_session_recv() and nghttp2_session_send() functions
+immediately return NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+Callback function invoked when the reception of header block in
+HEADERS or PUSH_PROMISE is started. Each header name/value pair
+will be emitted by nghttp2_on_header_callback .
+The frame->hd.flags may not have
+NGHTTP2_FLAG_END_HEADERS flag set, which indicates that one
+or more CONTINUATION frames are involved. But the application does
+not need to care about that because the header name/value pairs are
+emitted transparently regardless of CONTINUATION frames.
+The implementation of this function must return 0 if it succeeds or
+NGHTTP2_ERR_CALLBACK_FAILURE . If nonzero value other than
+NGHTTP2_ERR_CALLBACK_FAILURE is returned, it is treated as
+if NGHTTP2_ERR_CALLBACK_FAILURE is returned. If
+NGHTTP2_ERR_CALLBACK_FAILURE is returned,
+nghttp2_session_mem_recv() function will immediately return
+NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+Callback function invoked when a header name/value pair is received
+for the frame . When this callback is invoked, frame->hd.type
+is either NGHTTP2_HEADERS or NGHTTP2_PUSH_PROMISE .
+After all header name/value pairs are processed with this callback,
+and no error has been detected,
+nghttp2_on_frame_recv_callback will be invoked. If there
+is an error in decompression,
+nghttp2_on_frame_recv_callback for the frame will not be
+invoked.
+The name may be NULL if the namelen is 0. The same thing
+can be said about the value .
+Please note that nghttp2 library does not perform any validity
+check against the name and the value . For example, the
+namelen could be 0, and/or the value contains 0x0a or
+0x0d . The application must check them if it matters. The
+helper function nghttp2_check_header_name() and
+nghttp2_check_header_value() provide simple validation against
+HTTP2 header field construction rule.
+One more thing to note is that the value may contain NULL
+(0x00 ) characters. It is used to concatenate header values
+which share the same header field name. The application should
+split these values if it wants to get individual value. This
+concatenation is used in order to keep the ordering of headers.
+If the application uses nghttp2_session_mem_recv() , it can return
+NGHTTP2_ERR_PAUSE to make nghttp2_session_mem_recv()
+return without processing further input bytes. The memory pointed
+by frame , name and value parameters are retained until
+nghttp2_session_mem_recv() or nghttp2_session_recv() is
+called. The application must retain the input bytes which was used
+to produce these parameters, because it may refer to the memory
+region included in the input bytes.
+Returning NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE will close
+the stream by issuing RST_STREAM with
+NGHTTP2_INTERNAL_ERROR . In this case,
+nghttp2_on_frame_recv_callback will not be invoked.
+The implementation of this function must return 0 if it
+succeeds. It may return NGHTTP2_ERR_PAUSE or
+NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE . For other critical
+failures, it must return NGHTTP2_ERR_CALLBACK_FAILURE . If
+the other nonzero value is returned, it is treated as
+NGHTTP2_ERR_CALLBACK_FAILURE . If
+NGHTTP2_ERR_CALLBACK_FAILURE is returned,
+nghttp2_session_recv() and nghttp2_session_mem_recv() functions
+immediately return NGHTTP2_ERR_CALLBACK_FAILURE .
+
+
+
+
+nghttp2_session_callbacks
+Callback functions.
+
+
+nghttp2_send_callback send_callback
+Callback function invoked when the session wants to send data
+to the remote peer.
+
+
+
+
+nghttp2_recv_callback recv_callback
+Callback function invoked when the session wants to receive
+data from the remote peer.
+
+
+
+
+nghttp2_on_frame_recv_callback on_frame_recv_callback
+Callback function invoked by nghttp2_session_recv() when a
+frame is received.
+
+
+
+
+nghttp2_on_invalid_frame_recv_callback on_invalid_frame_recv_callback
+Callback function invoked by nghttp2_session_recv() when an
+invalid non-DATA frame is received.
+
+
+
+
+nghttp2_on_data_chunk_recv_callback on_data_chunk_recv_callback
+Callback function invoked when a chunk of data in DATA frame is
+received.
+
+
+
+
+nghttp2_before_frame_send_callback before_frame_send_callback
+Callback function invoked before a non-DATA frame is sent.
+
+
+
+
+nghttp2_on_frame_send_callback on_frame_send_callback
+Callback function invoked after a frame is sent.
+
+
+
+
+nghttp2_on_frame_not_send_callback on_frame_not_send_callback
+The callback function invoked when a non-DATA frame is not sent
+because of an error.
+
+
+
+
+nghttp2_on_stream_close_callback on_stream_close_callback
+Callback function invoked when the stream is closed.
+
+
+
+
+nghttp2_on_unknown_frame_recv_callback on_unknown_frame_recv_callback
+Callback function invoked when the received frame type is
+unknown.
+
+
+
+
+Callback function invoked when the reception of header block in
+HEADERS or PUSH_PROMISE is started.
+
+
+
+
+Callback function invoked when a header name/value pair is
+received.
+
+
+
+
+
+
+nghttp2_opt_set
+Struct to store option values for nghttp2_session.
+
+
+uint32_t peer_max_concurrent_streams
+NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS
+
+
+
+
+uint8_t no_auto_stream_window_update
+NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE
+
+
+
+
+uint8_t no_auto_connection_window_update
+NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE
+
+
+
+
+
+
+nghttp2_gzip
+The gzip stream to inflate data. The details of this structure are
+intentionally hidden from the public API.
+
+
+
+
+
Functions
+
+
+int nghttp2_session_client_new ( nghttp2_session **session_ptr , const nghttp2_session_callbacks *callbacks , void *user_data )
+Initializes *session_ptr for client use. The all members of
+callbacks are copied to *session_ptr . Therefore *session_ptr
+does not store callbacks . user_data is an arbitrary user
+supplied data, which will be passed to the callback functions.
+The nghttp2_session_callbacks.send_callback must be
+specified. If the application code uses nghttp2_session_recv() ,
+the nghttp2_session_callbacks.recv_callback must be
+specified. The other members of callbacks can be NULL .
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_session_server_new ( nghttp2_session **session_ptr , const nghttp2_session_callbacks *callbacks , void *user_data )
+Initializes *session_ptr for server use. The all members of
+callbacks are copied to *session_ptr . Therefore *session_ptr
+does not store callbacks . user_data is an arbitrary user
+supplied data, which will be passed to the callback functions.
+The nghttp2_session_callbacks.send_callback must be
+specified. If the application code uses nghttp2_session_recv() ,
+the nghttp2_session_callbacks.recv_callback must be
+specified. The other members of callbacks can be NULL .
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_session_client_new2 ( nghttp2_session **session_ptr , const nghttp2_session_callbacks *callbacks , void *user_data , uint32_t opt_set_mask , const nghttp2_opt_set *opt_set )
+Like nghttp2_session_client_new() , but with additional options
+specified in the opt_set . The caller must set bitwise-OR of
+nghttp2_opt for given options. For example, if it
+specifies NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE and
+NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS in the opt_set ,
+the opt_set_mask should be
+NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE |
+NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS .
+If the opt_set_mask is 0, the opt_set could be NULL safely
+and the call is equivalent to nghttp2_session_client_new() .
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_session_server_new2 ( nghttp2_session **session_ptr , const nghttp2_session_callbacks *callbacks , void *user_data , uint32_t opt_set_mask , const nghttp2_opt_set *opt_set )
+Like nghttp2_session_server_new() , but with additional options
+specified in the opt_set . The caller must set bitwise-OR of
+nghttp2_opt for given options. For example, if it
+specifies NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE and
+NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS in the opt_set ,
+the opt_set_mask should be
+NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE |
+NGHTTP2_OPT_PEER_MAX_CONCURRENT_STREAMS .
+If the opt_set_mask is 0, the opt_set could be NULL safely
+and the call is equivalent to nghttp2_session_server_new() .
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+void nghttp2_session_del ( nghttp2_session *session )
+Frees any resources allocated for session . If session is
+NULL , this function does nothing.
+
+
+
+
+int nghttp2_session_send ( nghttp2_session *session )
+Sends pending frames to the remote peer.
+This function retrieves the highest prioritized frame from the
+outbound queue and sends it to the remote peer. It does this as
+many as possible until the user callback
+nghttp2_session_callbacks.send_callback returns
+NGHTTP2_ERR_WOULDBLOCK or the outbound queue becomes empty.
+This function calls several callback functions which are passed
+when initializing the session . Here is the simple time chart
+which tells when each callback is invoked:
+
+Get the next frame to send from outbound queue.
+Prepare transmission of the frame.
+If the control frame cannot be sent because some preconditions
+are not met (e.g., request HEADERS cannot be sent after
+GOAWAY),
+nghttp2_session_callbacks.on_frame_not_send_callback is
+invoked. Abort the following steps.
+If the frame is request HEADERS, the stream is opened
+here.
+nghttp2_session_callbacks.before_frame_send_callback is
+invoked.
+nghttp2_session_callbacks.send_callback is invoked one
+or more times to send the frame.
+nghttp2_session_callbacks.on_frame_send_callback is
+invoked.
+If the transmission of the frame triggers closure of the stream,
+the stream is closed and
+nghttp2_session_callbacks.on_stream_close_callback is
+invoked.
+
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+NGHTTP2_ERR_CALLBACK_FAILURE
+The callback function failed.
+
+
+
+
+
+int nghttp2_session_recv ( nghttp2_session *session )
+Receives frames from the remote peer.
+This function receives as many frames as possible until the user
+callback nghttp2_session_callbacks.recv_callback returns
+NGHTTP2_ERR_WOULDBLOCK . This function calls several
+callback functions which are passed when initializing the
+session . Here is the simple time chart which tells when each
+callback is invoked:
+
+nghttp2_session_callbacks.recv_callback is invoked one
+or more times to receive frame header.
+If the frame is DATA frame:
+nghttp2_session_callbacks.recv_callback is invoked
+to receive DATA payload. For each chunk of data,
+nghttp2_session_callbacks.on_data_chunk_recv_callback
+is invoked.
+If one DATA frame is completely received,
+nghttp2_session_callbacks.on_frame_recv_callback is
+invoked. If the reception of the frame triggers the
+closure of the stream,
+nghttp2_session_callbacks.on_stream_close_callback
+is invoked.
+
+
+If the frame is the control frame:
+nghttp2_session_callbacks.recv_callback is invoked
+one or more times to receive whole frame.
+If the received frame is valid, then following actions are
+taken. If the frame is either HEADERS or PUSH_PROMISE,
+nghttp2_session_callbacks.on_begin_headers_callback
+is invoked. Then
+nghttp2_session_callbacks.on_header_callback is
+invoked for each header name/value pair. After all name/value
+pairs are emitted successfully,
+nghttp2_session_callbacks.on_frame_recv_callback is
+invoked. For other frames,
+nghttp2_session_callbacks.on_frame_recv_callback is
+invoked.
+If the reception of the frame triggers the closure of the
+stream,
+nghttp2_session_callbacks.on_stream_close_callback
+is invoked.
+If the received frame is unpacked but is interpreted as
+invalid,
+nghttp2_session_callbacks.on_invalid_frame_recv_callback
+is invoked.
+If the received frame type is unknown,
+nghttp2_session_callbacks.on_unknown_frame_recv_callback
+is invoked.
+
+
+
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_EOF
+The remote peer did shutdown on the connection.
+NGHTTP2_ERR_NOMEM
+Out of memory.
+NGHTTP2_ERR_CALLBACK_FAILURE
+The callback function failed.
+
+
+
+
+
+ssize_t nghttp2_session_mem_recv ( nghttp2_session *session , const uint8_t *in , size_t inlen )
+Processes data in as an input from the remote endpoint. The
+inlen indicates the number of bytes in the in .
+This function behaves like nghttp2_session_recv() except that it
+does not use nghttp2_session_callbacks.recv_callback to
+receive data; the in is the only data for the invocation of this
+function. If all bytes are processed, this function returns. The
+other callbacks are called in the same way as they are in
+nghttp2_session_recv() .
+In the current implementation, this function always tries to
+processes all input data unless either an error occurs or
+NGHTTP2_ERR_PAUSE is returned from
+nghttp2_session_callbacks.on_header_callback or
+nghttp2_session_callbacks.on_data_chunk_recv_callback .
+If NGHTTP2_ERR_PAUSE is used, the return value includes the
+number of bytes which was used to produce the data or frame for the
+callback.
+This function returns the number of processed bytes, or one of the
+following negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+NGHTTP2_ERR_CALLBACK_FAILURE
+The callback function failed.
+
+
+
+
+
+int nghttp2_session_resume_data ( nghttp2_session *session , int32_t stream_id )
+Puts back previously deferred DATA frame in the stream stream_id
+to the outbound queue.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_INVALID_ARGUMENT
+The stream does not exist or no deferred data exist.
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_session_want_read ( nghttp2_session *session )
+Returns nonzero value if session wants to receive data from the
+remote peer.
+If both nghttp2_session_want_read() and
+nghttp2_session_want_write() return 0, the application should
+drop the connection.
+
+
+
+
+int nghttp2_session_want_write ( nghttp2_session *session )
+Returns nonzero value if session wants to send data to the remote
+peer.
+If both nghttp2_session_want_read() and
+nghttp2_session_want_write() return 0, the application should
+drop the connection.
+
+
+
+
+void* nghttp2_session_get_stream_user_data ( nghttp2_session *session , int32_t stream_id )
+Returns stream_user_data for the stream stream_id . The
+stream_user_data is provided by nghttp2_submit_request() ,
+nghttp2_submit_headers() or
+nghttp2_session_set_stream_user_data() . Unless it is set using
+nghttp2_session_set_stream_user_data() , if the stream is
+initiated by the remote endpoint, stream_user_data is always
+NULL . If the stream does not exist, this function returns
+NULL .
+
+
+
+
+int nghttp2_session_set_stream_user_data ( nghttp2_session *session , int32_t stream_id , void *stream_user_data )
+Sets the stream_user_data to the stream denoted by the
+stream_id . If a stream user data is already set to the stream, it
+is replaced with the stream_user_data . It is valid to specify
+NULL in the stream_user_data , which nullifies the associated
+data pointer.
+It is valid to set the stream_user_data to the stream reserved by
+PUSH_PROMISE frame.
+This function returns 0 if it succeeds, or one of following
+negative error codes:
+
+NGHTTP2_ERR_INVALID_ARGUMENT
+The stream does not exist
+
+
+
+
+
+size_t nghttp2_session_get_outbound_queue_size ( nghttp2_session *session )
+Returns the number of frames in the outbound queue. This does not
+include the deferred DATA frames.
+
+
+
+
+int32_t nghttp2_session_get_stream_effective_recv_data_length ( nghttp2_session *session , int32_t stream_id )
+Returns the number of DATA payload in bytes received without
+WINDOW_UPDATE transmission for the stream stream_id . The local
+(receive) window size can be adjusted by
+nghttp2_submit_window_update() . This function takes into account
+that and returns effective data length. In particular, if the
+local window size is reduced by submitting negative
+window_size_increment with nghttp2_submit_window_update() , this
+function returns the number of bytes less than actually received.
+If flow control is disabled for that stream, this function returns
+0.
+This function returns -1 if it fails.
+
+
+
+
+int32_t nghttp2_session_get_stream_effective_local_window_size ( nghttp2_session *session , int32_t stream_id )
+Returns the local (receive) window size for the stream
+stream_id . The local window size can be adjusted by
+nghttp2_submit_window_update() . This function takes into account
+that and returns effective window size.
+This function returns -1 if it fails.
+
+
+
+
+int32_t nghttp2_session_get_effective_recv_data_length ( nghttp2_session *session )
+Returns the number of DATA payload in bytes received without
+WINDOW_UPDATE transmission for a connection. The local (receive)
+window size can be adjusted by
+nghttp2_submit_window_update() . This function takes into account
+that and returns effective data length. In particular, if the local
+window size is reduced by submitting negative window_size_increment
+with nghttp2_submit_window_update() , this function returns the
+number of bytes less than actually received.
+If flow control is disabled for a connection, this function returns
+0.
+This function returns -1 if it fails.
+
+
+
+
+int32_t nghttp2_session_get_effective_local_window_size ( nghttp2_session *session )
+Returns the local (receive) window size for a connection. The local
+window size can be adjusted by
+nghttp2_submit_window_update() . This function takes into account
+that and returns effective window size.
+This function returns -1 if it fails.
+
+
+
+
+int nghttp2_session_terminate_session ( nghttp2_session *session , nghttp2_error_code error_code )
+Signals the session so that the connection should be terminated.
+GOAWAY frame with the given error_code will be submitted if it
+has not been transmitted. After the transmission, both
+nghttp2_session_want_read() and nghttp2_session_want_write()
+return 0. If GOAWAY frame has already transmitted at the time when
+this function is invoked, nghttp2_session_want_read() and
+nghttp2_session_want_write() returns 0 immediately after this
+function succeeds.
+This function should be called when the connection should be
+terminated after sending GOAWAY. If the remaining streams should be
+processed after GOAWAY, use nghttp2_submit_goaway() instead.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_session_upgrade ( nghttp2_session *session , const uint8_t *settings_payload , size_t settings_payloadlen , void *stream_user_data )
+Performs post-process of HTTP Upgrade request. This function can be
+called from both client and server, but the behavior is very
+different in each other.
+If called from client side, the settings_payload must be the
+value sent in HTTP2-Settings header field and must be decoded
+by base64url decoder. The settings_payloadlen is the length of
+settings_payload . The settings_payload is unpacked and its
+setting values will be submitted using
+nghttp2_submit_settings() . This means that the client application
+code does not need to submit SETTINGS by itself. The stream with
+stream ID=1 is opened and the stream_user_data is used for its
+stream_user_data. The opened stream becomes half-closed (local)
+state.
+If called from server side, the settings_payload must be the
+value received in HTTP2-Settings header field and must be
+decoded by base64url decoder. The settings_payloadlen is the
+length of settings_payload . It is treated as if the SETTINGS
+frame with that payload is received. Thus, callback functions for
+the reception of SETTINGS frame will be invoked. The stream with
+stream ID=1 is opened. The stream_user_data is ignored. The
+opened stream becomes half-closed (remote).
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+NGHTTP2_ERR_INVALID_ARGUMENT
+The settings_payload is badly formed.
+NGHTTP2_ERR_PROTO
+The stream ID 1 is already used or closed; or is not available;
+or the settings_payload does not include both
+NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS and
+NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE .
+
+
+
+
+
+ssize_t nghttp2_pack_settings_payload ( uint8_t *buf , size_t buflen , const nghttp2_settings_entry *iv , size_t niv )
+Serializes the SETTINGS values iv in the buf . The size of the
+buf is specified by buflen . The number of entries in the iv
+array is given by niv . The required space in buf for the niv
+entries is 8*niv bytes and if the given buffer is too small, an
+error is returned. This function is used mainly for creating a
+SETTINGS payload to be sent with the HTTP2-Settings header
+field in an HTTP Upgrade request. The data written in buf is NOT
+base64url encoded and the application is responsible for encoding.
+This function returns the number of bytes written in buf , or one
+of the following negative error codes:
+
+NGHTTP2_ERR_INVALID_ARGUMENT
+The iv contains duplicate settings ID or invalid value.
+NGHTTP2_ERR_INSUFF_BUFSIZE
+The provided buflen size is too small to hold the output.
+
+
+
+
+
+const char* nghttp2_strerror ( int lib_error_code )
+Returns string describing the lib_error_code . The
+lib_error_code must be one of the nghttp2_error .
+
+
+
+
+int nghttp2_submit_request ( nghttp2_session *session , int32_t pri , const nghttp2_nv *nva , size_t nvlen , const nghttp2_data_provider *data_prd , void *stream_user_data )
+Submits HEADERS frame and optionally one or more DATA frames.
+The pri is priority of this request. 0 is the highest priority
+value and NGHTTP2_PRI_LOWEST is the lowest value.
+The nva is an array of name/value pair nghttp2_nv with
+nvlen elements. The value is opaque sequence of bytes and
+therefore can contain NULL byte (0x0). If the application requires
+that the ordering of values for a single header field name
+appearing in different header fields, it has to concatenate them
+using NULL byte (0x0) before passing them to this function.
+HTTP/2.0 specification has requirement about header fields in the
+request HEADERS. See the specification for more details.
+This function creates copies of all name/value pairs in nva . It
+also lower-cases all names in nva .
+If data_prd is not NULL , it provides data which will be sent
+in subsequent DATA frames. In this case, a method that allows
+request message bodies
+(http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9 ) must
+be specified with :method key in nva (e.g. POST ). This
+function does not take ownership of the data_prd . The function
+copies the members of the data_prd . If data_prd is NULL ,
+HEADERS have END_STREAM set. The stream_user_data is data
+associated to the stream opened by this request and can be an
+arbitrary pointer, which can be retrieved later by
+nghttp2_session_get_stream_user_data() .
+Since the library reorders the frames and tries to send the highest
+prioritized one first and the HTTP/2.0 specification requires the
+stream ID must be strictly increasing, the stream ID of this
+request cannot be known until it is about to sent. To know the
+stream ID of the request, the application can use
+nghttp2_session_callbacks.before_frame_send_callback . This
+callback is called just before the frame is sent. For HEADERS
+frame, the argument frame has the stream ID assigned. Also since
+the stream is already opened,
+nghttp2_session_get_stream_user_data() can be used to get
+stream_user_data to identify which HEADERS we are processing.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_INVALID_ARGUMENT
+The pri is invalid
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_submit_response ( nghttp2_session *session , int32_t stream_id , const nghttp2_nv *nva , size_t nvlen , const nghttp2_data_provider *data_prd )
+Submits response HEADERS frame and optionally one or more DATA
+frames against the stream stream_id .
+The nva is an array of name/value pair nghttp2_nv with
+nvlen elements. The value is opaque sequence of bytes and
+therefore can contain NULL byte (0x0). If the application requires
+that the ordering of values for a single header field name
+appearing in different header fields, it has to concatenate them
+using NULL byte (0x0) before passing them to this function.
+HTTP/2.0 specification has requirement about header fields in the
+response HEADERS. See the specification for more details.
+This function creates copies of all name/value pairs in nva . It
+also lower-cases all names in nva .
+If data_prd is not NULL , it provides data which will be sent
+in subsequent DATA frames. This function does not take ownership
+of the data_prd . The function copies the members of the
+data_prd . If data_prd is NULL , HEADERS will have
+END_STREAM flag set.
+This method can be used as normal HTTP response and push
+response. When pushing a resource using this function, the
+session must be configured using nghttp2_session_server_new()
+or its variants and the target stream denoted by the stream_id
+must be reserved using nghttp2_submit_push_promise() .
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+Submits HEADERS frame. The flags is bitwise OR of the
+following values:
+
+If flags includes NGHTTP2_FLAG_END_STREAM , this frame has
+END_STREAM flag set. The library does not support header
+continuation and the HEADERS frame always has
+NGHTTP2_FLAG_END_HEADERS flag set regardless of the flags
+value.
+If the stream_id is -1, this frame is assumed as request (i.e.,
+request HEADERS frame which opens new stream). In this case, the
+actual stream ID is assigned just before the frame is sent. For
+response, specify stream ID in stream_id .
+The pri is priority of this request.
+The nva is an array of name/value pair nghttp2_nv with
+nvlen elements. The value is opaque sequence of bytes and
+therefore can contain NULL byte (0x0). If the application requires
+that the ordering of values for a single header field name
+appearing in different header fields, it has to concatenate them
+using NULL byte (0x0) before passing them to this function.
+This function creates copies of all name/value pairs in nva . It
+also lower-cases all names in nva .
+The stream_user_data is a pointer to an arbitrary data which is
+associated to the stream this frame will open. Therefore it is only
+used if this frame opens streams, in other words, it changes stream
+state from idle or reserved to open.
+This function is low-level in a sense that the application code can
+specify flags directly. For usual HTTP request,
+nghttp2_submit_request() is useful.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_INVALID_ARGUMENT
+The pri is invalid
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_submit_data ( nghttp2_session *session , uint8_t flags , int32_t stream_id , const nghttp2_data_provider *data_prd )
+Submits one or more DATA frames to the stream stream_id . The
+data to be sent are provided by data_prd . If flags contains
+NGHTTP2_FLAG_END_STREAM , the last DATA frame has END_STREAM
+flag set.
+This function does not take ownership of the data_prd . The
+function copies the members of the data_prd .
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_submit_priority ( nghttp2_session *session , uint8_t flags , int32_t stream_id , int32_t pri )
+Submits PRIORITY frame to change the priority of stream stream_id
+to the priority value pri .
+The flags is currently ignored and should be
+NGHTTP2_FLAG_NONE .
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+NGHTTP2_ERR_INVALID_ARGUMENT
+The pri is negative.
+
+
+
+
+
+int nghttp2_submit_rst_stream ( nghttp2_session *session , uint8_t flags , int32_t stream_id , nghttp2_error_code error_code )
+Submits RST_STREAM frame to cancel/reject the stream stream_id
+with the error code error_code .
+The flags is currently ignored and should be
+NGHTTP2_FLAG_NONE .
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_submit_settings ( nghttp2_session *session , uint8_t flags , const nghttp2_settings_entry *iv , size_t niv )
+Stores local settings and submits SETTINGS frame. The iv is the
+pointer to the array of nghttp2_settings_entry . The niv
+indicates the number of nghttp2_settings_entry .
+The flags is currently ignored and should be
+NGHTTP2_FLAG_NONE .
+This function does not take ownership of the iv . This function
+copies all the elements in the iv .
+While updating individual stream’s local window size, if the window
+size becomes strictly larger than NGHTTP2_MAX_WINDOW_SIZE,
+RST_STREAM is issued against such a stream.
+SETTINGS with NGHTTP2_FLAG_ACK is automatically submitted
+by the library and application could not send it at its will.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_INVALID_ARGUMENT
+The iv contains invalid value (e.g., attempting to re-enable
+flow control).
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_submit_push_promise ( nghttp2_session *session , uint8_t flags , int32_t stream_id , const nghttp2_nv *nva , size_t nvlen )
+Submits PUSH_PROMISE frame. The flags is currently ignored and
+the resulting PUSH_PROMISE frame always has
+NGHTTP2_FLAG_END_PUSH_PROMISE flag set due to the lack of
+header continuation support in the library.
+The stream_id must be client initiated stream ID.
+The nva is an array of name/value pair nghttp2_nv with
+nvlen elements. The value is opaque sequence of bytes and
+therefore can contain NULL byte (0x0). If the application requires
+that the ordering of values for a single header field name
+appearing in different header fields, it has to concatenate them
+using NULL byte (0x0) before passing them to this function.
+This function creates copies of all name/value pairs in nva . It
+also lower-cases all names in nva .
+Since the library reorders the frames and tries to send the highest
+prioritized one first and the HTTP/2.0 specification requires the
+stream ID must be strictly increasing, the promised stream ID
+cannot be known until it is about to sent. To know the promised
+stream ID, the application can use
+nghttp2_session_callbacks.before_frame_send_callback . This
+callback is called just before the frame is sent. For PUSH_PROMISE
+frame, the argument frame has the promised stream ID assigned.
+The client side can use this function to send PUSH_PROMISE to the
+server. But in normal HTTP usage, the server may treat it error.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_submit_ping ( nghttp2_session *session , uint8_t flags , uint8_t *opaque_data )
+Submits PING frame. You don’t have to send PING back when you
+received PING frame. The library automatically submits PING frame
+in this case.
+The flags is currently ignored and should be
+NGHTTP2_FLAG_NONE .
+If the opaque_data is non NULL , then it should point to the 8
+bytes array of memory to specify opaque data to send with PING
+frame. If the opaque_data is NULL , zero-cleared 8 bytes will
+be sent as opaque data.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_submit_goaway ( nghttp2_session *session , uint8_t flags , nghttp2_error_code error_code , uint8_t *opaque_data , size_t opaque_data_len )
+Submits GOAWAY frame with the error code error_code .
+The flags is currently ignored and should be
+NGHTTP2_FLAG_NONE .
+If the opaque_data is not NULL and opaque_data_len is not
+zero, those data will be sent as additional debug data. The
+library makes a copy of the memory region pointed by opaque_data
+with the length opaque_data_len , so the caller does not need to
+keep this memory after the return of this function. If the
+opaque_data_len is 0, the opaque_data could be NULL .
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_submit_window_update ( nghttp2_session *session , uint8_t flags , int32_t stream_id , int32_t window_size_increment )
+Submits WINDOW_UPDATE frame.
+The flags is currently ignored and should be
+NGHTTP2_FLAG_NONE .
+If the window_size_increment is positive, the WINDOW_UPDATE with
+that value as window_size_increment is queued. If the
+window_size_increment is larger than the received bytes from the
+remote endpoint, the local window size is increased by that
+difference.
+If the window_size_increment is negative, the local window size
+is decreased by -window_size_increment . If
+NGHTTP2_OPT_NO_AUTO_STREAM_WINDOW_UPDATE (or
+NGHTTP2_OPT_NO_AUTO_CONNECTION_WINDOW_UPDATE if stream_id
+is 0) is not set and the library decided that the WINDOW_UPDATE
+should be submitted, then WINDOW_UPDATE is queued with the current
+received bytes count.
+If the window_size_increment is 0, the function does nothing and
+returns 0.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_FLOW_CONTROL
+The local window size overflow or gets negative.
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+int nghttp2_nv_compare_name ( const nghttp2_nv *lhs , const nghttp2_nv *rhs )
+Compares lhs->name with lhs->namelen bytes and rhs->name with
+rhs->namelen bytes. Returns negative integer if lhs->name is found
+to be less than rhs->name; or returns positive integer if lhs->name
+is found to be greater than rhs->name; or returns 0 otherwise.
+
+
+
+
+int nghttp2_select_next_protocol ( unsigned char **out , unsigned char *outlen , const unsigned char *in , unsigned int inlen )
+A helper function for dealing with NPN in client side or ALPN in
+server side. The in contains peer’s protocol list in preferable
+order. The format of in is length-prefixed and not
+null-terminated. For example, HTTP-draft-04/2.0 and
+http/1.1 stored in in like this:
+in [ 0 ] = 17
+in [ 1..17 ] = "HTTP-draft-04/2.0"
+in [ 18 ] = 8
+in [ 19..26 ] = "http/1.1"
+inlen = 27
+
+
+The selection algorithm is as follows:
+
+If peer’s list contains HTTP/2.0 protocol the library supports,
+it is selected and returns 1. The following step is not taken.
+If peer’s list contains http/1.1 , this function selects
+http/1.1 and returns 0. The following step is not taken.
+This function selects nothing and returns -1. (So called
+non-overlap case). In this case, out and outlen are left
+untouched.
+
+Selecting HTTP-draft-04/2.0 means that HTTP-draft-04/2.0 is
+written into *out and its length (which is 17) is
+assigned to *outlen .
+For ALPN, refer to
+http://tools.ietf.org/html/draft-ietf-tls-applayerprotoneg-04
+See http://technotes.googlecode.com/git/nextprotoneg.html for more
+details about NPN.
+For NPN, to use this method you should do something like:
+static int select_next_proto_cb ( SSL * ssl ,
+ unsigned char ** out ,
+ unsigned char * outlen ,
+ const unsigned char * in ,
+ unsigned int inlen ,
+ void * arg )
+{
+ int rv ;
+ rv = nghttp2_select_next_protocol ( out , outlen , in , inlen );
+ if ( rv == 1 ) {
+ (( MyType * ) arg ) -> http2_selected = 1 ;
+ }
+ return SSL_TLSEXT_ERR_OK ;
+}
+...
+SSL_CTX_set_next_proto_select_cb ( ssl_ctx , select_next_proto_cb , my_obj );
+
+
+
+
+
+
+int nghttp2_gzip_inflate_new ( nghttp2_gzip **inflater_ptr )
+A helper function to set up a per request gzip stream to inflate data.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_GZIP
+The initialization of gzip stream failed.
+NGHTTP2_ERR_NOMEM
+Out of memory.
+
+
+
+
+
+void nghttp2_gzip_inflate_del ( nghttp2_gzip *inflater )
+Frees the inflate stream. The inflater may be NULL .
+
+
+
+
+int nghttp2_gzip_inflate ( nghttp2_gzip *inflater , uint8_t *out , size_t *outlen_ptr , const uint8_t *in , size_t *inlen_ptr )
+Inflates data in in with the length *inlen_ptr and stores the
+inflated data to out which has allocated size at least
+*outlen_ptr . On return, *outlen_ptr is updated to represent
+the number of data written in out . Similarly, *inlen_ptr is
+updated to represent the number of input bytes processed.
+This function returns 0 if it succeeds, or one of the following
+negative error codes:
+
+NGHTTP2_ERR_GZIP
+The inflation of gzip stream failed.
+
+The example follows:
+void on_data_chunk_recv_callback ( nghttp2_session * session ,
+ uint8_t flags ,
+ int32_t stream_id ,
+ const uint8_t * data , size_t len ,
+ void * user_data )
+{
+ ...
+ req = nghttp2_session_get_stream_user_data ( session , stream_id );
+ nghttp2_gzip * inflater = req -> inflater ;
+ while ( len > 0 ) {
+ uint8_t out [ MAX_OUTLEN ];
+ size_t outlen = MAX_OUTLEN ;
+ size_t tlen = len ;
+ int rv ;
+ rv = nghttp2_gzip_inflate ( inflater , out , & outlen , data , & tlen );
+ if ( rv != 0 ) {
+ nghttp2_submit_rst_stream ( session , stream_id ,
+ NGHTTP2_INTERNAL_ERROR );
+ break ;
+ }
+ ... Do stuff ...
+ data += tlen ;
+ len -= tlen ;
+ }
+ ....
+}
+
+
+
+
+
+
+nghttp2_info *nghttp2_version ( int least_version )
+Returns a pointer to a nghttp2_info struct with version information about
+the run-time library in use. The least_version argument can be set to a
+24 bit numerical value for the least accepted version number and if the
+condition is not met, this function will return a NULL. Pass in 0 to skip
+the version checking.
+
+
+
+
+int nghttp2_is_fatal ( int lib_error )
+Returns nonzero if the nghttp2_error library error code
+lib_error is fatal.
+
+
+
+
+Returns nonzero if HTTP header field name name of length len is
+valid according to
+http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#section-3.2
+Because this is a header field name in HTTP2, the upper cased alphabet
+is treated as error.
+
+
+
+
+Returns nonzero if HTTP header field value value of length len
+is valid according to
+http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25#section-3.2
+Because this is HTTP2 header field value, it can contain NULL
+character (0x00).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+