diff --git a/docs/_modules/ect/ect_graph.html b/docs/_modules/ect/ect_graph.html index 50a9499..ac9c3d9 100644 --- a/docs/_modules/ect/ect_graph.html +++ b/docs/_modules/ect/ect_graph.html @@ -1,3 +1,5 @@ + + @@ -5,20 +7,16 @@ ect.ect_graph — ect 0.1.5 documentation - + - - - - - - - - + + + + + + @@ -83,6 +81,7 @@

Source code for ect.ect_graph

 from numba import jit
 import matplotlib.pyplot as plt
 from ect.embed_cw import EmbeddedCW
+import time
 
 
 
@@ -215,69 +214,43 @@

Source code for ect.ect_graph

 [docs]
     def calculateECC(self, G, theta, bound_radius=None, return_counts=False):
         """
-        Function to compute the Euler Characteristic of an `EmbeddedGraph`, that is, a graph with coordinates for each vertex.
+        Function to compute the Euler Characteristic Curve (ECC) of an `EmbeddedGraph`.
 
         Parameters:
-            G (nx.Graph):
-                The graph to compute the Euler Characteristic for.
-            theta (float):
-                The angle (in radians) to use for the direction function when computing the Euler Characteristic Curve.
-            bound_radius (float):
-                If None, uses the following in order: (i) the bounding radius stored in the class; or if not available (ii) the bounding radius of the given graph. Otherwise, should be a postive float :math:`R` where the ECC will be computed at thresholds in :math:`[-R,R]`. Default is None.
-            return_counts (bool):
-                Whether to return the counts of vertices, edges, and faces below the threshold. Default is False.
+            G (nx.Graph): The graph to compute the ECC for.
+            theta (float): The angle (in radians) for the direction function.
+            bound_radius (float, optional): Radius for threshold range. Default is None.
+            return_counts (bool, optional): Whether to return vertex, edge, and face counts. Default is False.
 
+        Returns:
+            numpy.ndarray: ECC values at each threshold.
+            (Optional) Tuple of counts: (ecc, vertex_count, edge_count, face_count)
         """
-
         r, r_threshes = self.get_radius_and_thresh(G, bound_radius)
 
-        # --
-        def num_below_threshold(func_list, thresh):
-            """ 
-            Returns the number of entries in func_list that are below the threshold thresh. 
-            Warning: func_list must be sorted in ascending order.
-
-            Parameters
-                func_list (list): sorted list of function values
-                thresh (float): threshold value
-
-            Returns
-                int 
-            """
-            # If the list is empty, return 0
-            if len(func_list) == 0:
-                return 0
-            else:
-                func_max = func_list[-1]
-                if thresh < func_max:
-                    return np.argmin(func_list < thresh)
-                else:
-                    return len(func_list)
-        # --
+        r_threshes = np.array(r_threshes)
 
+        # Sort vertices and edges based on projection
         v_list, g = G.sort_vertices(theta, return_g=True)
-        g_list = [g[v] for v in v_list]
-
-        vertex_count = np.array([num_below_threshold(
-            g_list, thresh) for thresh in r_threshes])
-        # print(vertex_count)
+        g_list = np.array([g[v] for v in v_list])
+        sorted_g_list = np.sort(g_list)
 
         e_list, g_e = G.sort_edges(theta, return_g=True)
-        g_e_list = [g_e[e] for e in e_list]
-        edge_count = np.array([num_below_threshold(
-            g_e_list, thresh) for thresh in r_threshes])
-        # print(edge_count)
+        g_e_list = np.array([g_e[e] for e in e_list])
+        sorted_g_e_list = np.sort(g_e_list)
+
+        vertex_count = np.searchsorted(sorted_g_list, r_threshes, side='left')
+        edge_count = np.searchsorted(sorted_g_e_list, r_threshes, side='left')
 
-        if type(G) == EmbeddedCW:
+        if isinstance(G, EmbeddedCW):
             f_list, g_f = G.sort_faces(theta, return_g=True)
-            g_f_list = [g_f[f] for f in f_list]
-            face_count = np.array([num_below_threshold(
-                g_f_list, thresh) for thresh in r_threshes])
-            # print(face_count)
+            g_f_list = np.array([g_f[f] for f in f_list])
+            sorted_g_f_list = np.sort(g_f_list)
+            face_count = np.searchsorted(
+                sorted_g_f_list, r_threshes, side='left')
         else:
-            face_count = np.zeros_like(vertex_count)
+            face_count = np.zeros_like(r_threshes, dtype=np.int32)
 
-        # print(vertex_count - edge_count)
         ecc = vertex_count - edge_count + face_count
 
         if return_counts:
diff --git a/docs/_modules/ect/embed_cw.html b/docs/_modules/ect/embed_cw.html
index c0ce220..6dd693c 100644
--- a/docs/_modules/ect/embed_cw.html
+++ b/docs/_modules/ect/embed_cw.html
@@ -1,3 +1,5 @@
+
+
 
 
 
@@ -5,20 +7,16 @@
   
   ect.embed_cw — ect 0.1.5 documentation
       
-      
+      
       
 
   
-  
-  
-        
-        
-        
-        
-        
-        
+      
+      
+      
+      
+      
+      
     
     
      
diff --git a/docs/_modules/ect/embed_graph.html b/docs/_modules/ect/embed_graph.html
index 4b46ace..188ff09 100644
--- a/docs/_modules/ect/embed_graph.html
+++ b/docs/_modules/ect/embed_graph.html
@@ -1,3 +1,5 @@
+
+
 
 
 
@@ -5,20 +7,16 @@
   
   ect.embed_graph — ect 0.1.5 documentation
       
-      
+      
       
 
   
-  
-  
-        
-        
-        
-        
-        
-        
+      
+      
+      
+      
+      
+      
     
     
      
diff --git a/docs/_modules/index.html b/docs/_modules/index.html
index df24327..bf19970 100644
--- a/docs/_modules/index.html
+++ b/docs/_modules/index.html
@@ -1,3 +1,5 @@
+
+
 
 
 
@@ -5,20 +7,16 @@
   
   Overview: module code — ect 0.1.5 documentation
       
-      
+      
       
 
   
-  
-  
-        
-        
-        
-        
-        
-        
+      
+      
+      
+      
+      
+      
     
     
      
diff --git a/docs/_static/basic.css b/docs/_static/basic.css
index 30fee9d..7ebbd6d 100644
--- a/docs/_static/basic.css
+++ b/docs/_static/basic.css
@@ -1,12 +1,5 @@
 /*
- * basic.css
- * ~~~~~~~~~
- *
  * Sphinx stylesheet -- basic theme.
- *
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
  */
 
 /* -- main layout ----------------------------------------------------------- */
@@ -115,15 +108,11 @@ img {
 /* -- search page ----------------------------------------------------------- */
 
 ul.search {
-    margin: 10px 0 0 20px;
-    padding: 0;
+    margin-top: 10px;
 }
 
 ul.search li {
-    padding: 5px 0 5px 20px;
-    background-image: url(file.png);
-    background-repeat: no-repeat;
-    background-position: 0 7px;
+    padding: 5px 0;
 }
 
 ul.search li a {
diff --git a/docs/_static/css/badge_only.css b/docs/_static/css/badge_only.css
index c718cee..88ba55b 100644
--- a/docs/_static/css/badge_only.css
+++ b/docs/_static/css/badge_only.css
@@ -1 +1 @@
-.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;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}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.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{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #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;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.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>.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}}
\ No newline at end of file
+.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;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}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.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{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #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-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.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>.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}}#flyout-search-form{padding:6px}
\ No newline at end of file
diff --git a/docs/_static/css/theme.css b/docs/_static/css/theme.css
index 19a446a..0f14f10 100644
--- a/docs/_static/css/theme.css
+++ b/docs/_static/css/theme.css
@@ -1,4 +1,4 @@
 html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){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:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{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,form{margin:0}label{cursor:pointer}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=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.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{body,html,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^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*!
  *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
  *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.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 p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.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:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.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 p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.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 p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.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 p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink: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 p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink: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 p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.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.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.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,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.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 .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.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.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition 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.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.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=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.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=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.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=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-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 .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],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=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.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=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.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=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.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]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all 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 td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,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;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.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 .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.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 .2s ease-in;-moz-transition:all .2s ease-in;transition:all .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:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.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;padding-top:inherit}.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,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@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-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.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:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;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:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.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{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #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;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.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>.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}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.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,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.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 p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.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}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block}
\ No newline at end of file
+ */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.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 p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.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:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.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 p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.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 p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.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 p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink: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 p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink: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 p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.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.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.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,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.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 .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.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.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition 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.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.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=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.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=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.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=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-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 .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],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=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.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=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.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=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.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]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all 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 td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,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;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.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 .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search .wy-dropdown>aactive,.wy-side-nav-search .wy-dropdown>afocus,.wy-side-nav-search>a:hover,.wy-side-nav-search>aactive,.wy-side-nav-search>afocus{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon,.wy-side-nav-search>a.icon{display:block}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.switch-menus{position:relative;display:block;margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-side-nav-search>div.switch-menus>div.language-switch,.wy-side-nav-search>div.switch-menus>div.version-switch{display:inline-block;padding:.2em}.wy-side-nav-search>div.switch-menus>div.language-switch select,.wy-side-nav-search>div.switch-menus>div.version-switch select{display:inline-block;margin-right:-2rem;padding-right:2rem;max-width:240px;text-align-last:center;background:none;border:none;border-radius:0;box-shadow:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-size:1em;font-weight:400;color:hsla(0,0%,100%,.3);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.wy-side-nav-search>div.switch-menus>div.language-switch select:active,.wy-side-nav-search>div.switch-menus>div.language-switch select:focus,.wy-side-nav-search>div.switch-menus>div.language-switch select:hover,.wy-side-nav-search>div.switch-menus>div.version-switch select:active,.wy-side-nav-search>div.switch-menus>div.version-switch select:focus,.wy-side-nav-search>div.switch-menus>div.version-switch select:hover{background:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.5)}.wy-side-nav-search>div.switch-menus>div.language-switch select option,.wy-side-nav-search>div.switch-menus>div.version-switch select option{color:#000}.wy-side-nav-search>div.switch-menus>div.language-switch:has(>select):after,.wy-side-nav-search>div.switch-menus>div.version-switch:has(>select):after{display:inline-block;width:1.5em;height:100%;padding:.1em;content:"\f0d7";font-size:1em;line-height:1.2em;font-family:FontAwesome;text-align:center;pointer-events:none;box-sizing:border-box}.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 .2s ease-in;-moz-transition:all .2s ease-in;transition:all .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:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.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;padding-top:inherit}.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,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@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-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.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:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;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:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.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{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #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-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.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>.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}}#flyout-search-form{padding:6px}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.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,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.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 p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.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}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block}
\ No newline at end of file
diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js
index d06a71d..0398ebb 100644
--- a/docs/_static/doctools.js
+++ b/docs/_static/doctools.js
@@ -1,12 +1,5 @@
 /*
- * doctools.js
- * ~~~~~~~~~~~
- *
  * Base JavaScript utilities for all Sphinx HTML documentation.
- *
- * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
  */
 "use strict";
 
diff --git a/docs/_static/fonts/Lato/lato-bold.eot b/docs/_static/fonts/Lato/lato-bold.eot
new file mode 100644
index 0000000..3361183
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bold.eot differ
diff --git a/docs/_static/fonts/Lato/lato-bold.ttf b/docs/_static/fonts/Lato/lato-bold.ttf
new file mode 100644
index 0000000..29f691d
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bold.ttf differ
diff --git a/docs/_static/fonts/Lato/lato-bold.woff b/docs/_static/fonts/Lato/lato-bold.woff
new file mode 100644
index 0000000..c6dff51
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bold.woff differ
diff --git a/docs/_static/fonts/Lato/lato-bold.woff2 b/docs/_static/fonts/Lato/lato-bold.woff2
new file mode 100644
index 0000000..bb19504
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bold.woff2 differ
diff --git a/docs/_static/fonts/Lato/lato-bolditalic.eot b/docs/_static/fonts/Lato/lato-bolditalic.eot
new file mode 100644
index 0000000..3d41549
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bolditalic.eot differ
diff --git a/docs/_static/fonts/Lato/lato-bolditalic.ttf b/docs/_static/fonts/Lato/lato-bolditalic.ttf
new file mode 100644
index 0000000..f402040
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bolditalic.ttf differ
diff --git a/docs/_static/fonts/Lato/lato-bolditalic.woff b/docs/_static/fonts/Lato/lato-bolditalic.woff
new file mode 100644
index 0000000..88ad05b
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bolditalic.woff differ
diff --git a/docs/_static/fonts/Lato/lato-bolditalic.woff2 b/docs/_static/fonts/Lato/lato-bolditalic.woff2
new file mode 100644
index 0000000..c4e3d80
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bolditalic.woff2 differ
diff --git a/docs/_static/fonts/Lato/lato-italic.eot b/docs/_static/fonts/Lato/lato-italic.eot
new file mode 100644
index 0000000..3f82642
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-italic.eot differ
diff --git a/docs/_static/fonts/Lato/lato-italic.ttf b/docs/_static/fonts/Lato/lato-italic.ttf
new file mode 100644
index 0000000..b4bfc9b
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-italic.ttf differ
diff --git a/docs/_static/fonts/Lato/lato-italic.woff b/docs/_static/fonts/Lato/lato-italic.woff
new file mode 100644
index 0000000..76114bc
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-italic.woff differ
diff --git a/docs/_static/fonts/Lato/lato-italic.woff2 b/docs/_static/fonts/Lato/lato-italic.woff2
new file mode 100644
index 0000000..3404f37
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-italic.woff2 differ
diff --git a/docs/_static/fonts/Lato/lato-regular.eot b/docs/_static/fonts/Lato/lato-regular.eot
new file mode 100644
index 0000000..11e3f2a
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-regular.eot differ
diff --git a/docs/_static/fonts/Lato/lato-regular.ttf b/docs/_static/fonts/Lato/lato-regular.ttf
new file mode 100644
index 0000000..74decd9
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-regular.ttf differ
diff --git a/docs/_static/fonts/Lato/lato-regular.woff b/docs/_static/fonts/Lato/lato-regular.woff
new file mode 100644
index 0000000..ae1307f
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-regular.woff differ
diff --git a/docs/_static/fonts/Lato/lato-regular.woff2 b/docs/_static/fonts/Lato/lato-regular.woff2
new file mode 100644
index 0000000..3bf9843
Binary files /dev/null and b/docs/_static/fonts/Lato/lato-regular.woff2 differ
diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
new file mode 100644
index 0000000..79dc8ef
Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot differ
diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
new file mode 100644
index 0000000..df5d1df
Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf differ
diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
new file mode 100644
index 0000000..6cb6000
Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff differ
diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
new file mode 100644
index 0000000..7059e23
Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 differ
diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
new file mode 100644
index 0000000..2f7ca78
Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot differ
diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
new file mode 100644
index 0000000..eb52a79
Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf differ
diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
new file mode 100644
index 0000000..f815f63
Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff differ
diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
new file mode 100644
index 0000000..f2c76e5
Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 differ
diff --git a/docs/_static/js/html5shiv-printshiv.min.js b/docs/_static/js/html5shiv-printshiv.min.js
deleted file mode 100644
index 2b43bd0..0000000
--- a/docs/_static/js/html5shiv-printshiv.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
-* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
-*/
-!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document);
\ No newline at end of file
diff --git a/docs/_static/js/html5shiv.min.js b/docs/_static/js/html5shiv.min.js
deleted file mode 100644
index cd1c674..0000000
--- a/docs/_static/js/html5shiv.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
-* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
-*/
-!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);
\ No newline at end of file
diff --git a/docs/_static/js/versions.js b/docs/_static/js/versions.js
new file mode 100644
index 0000000..4958195
--- /dev/null
+++ b/docs/_static/js/versions.js
@@ -0,0 +1,228 @@
+const themeFlyoutDisplay = "hidden";
+const themeVersionSelector = true;
+const themeLanguageSelector = true;
+
+if (themeFlyoutDisplay === "attached") {
+  function renderLanguages(config) {
+    if (!config.projects.translations.length) {
+      return "";
+    }
+
+    // Insert the current language to the options on the selector
+    let languages = config.projects.translations.concat(config.projects.current);
+    languages = languages.sort((a, b) => a.language.name.localeCompare(b.language.name));
+
+    const languagesHTML = `
+      
+
Languages
+ ${languages + .map( + (translation) => ` +
+ ${translation.language.code} +
+ `, + ) + .join("\n")} +
+ `; + return languagesHTML; + } + + function renderVersions(config) { + if (!config.versions.active.length) { + return ""; + } + const versionsHTML = ` +
+
Versions
+ ${config.versions.active + .map( + (version) => ` +
+ ${version.slug} +
+ `, + ) + .join("\n")} +
+ `; + return versionsHTML; + } + + function renderDownloads(config) { + if (!Object.keys(config.versions.current.downloads).length) { + return ""; + } + const downloadsNameDisplay = { + pdf: "PDF", + epub: "Epub", + htmlzip: "HTML", + }; + + const downloadsHTML = ` +
+
Downloads
+ ${Object.entries(config.versions.current.downloads) + .map( + ([name, url]) => ` +
+ ${downloadsNameDisplay[name]} +
+ `, + ) + .join("\n")} +
+ `; + return downloadsHTML; + } + + document.addEventListener("readthedocs-addons-data-ready", function (event) { + const config = event.detail.data(); + + const flyout = ` +
+ + Read the Docs + v: ${config.versions.current.slug} + + +
+
+ ${renderLanguages(config)} + ${renderVersions(config)} + ${renderDownloads(config)} +
+
On Read the Docs
+
+ Project Home +
+
+ Builds +
+
+ Downloads +
+
+
+
Search
+
+
+ +
+
+
+
+ + Hosted by Read the Docs + +
+
+ `; + + // Inject the generated flyout into the body HTML element. + document.body.insertAdjacentHTML("beforeend", flyout); + + // Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout. + document + .querySelector("#flyout-search-form") + .addEventListener("focusin", () => { + const event = new CustomEvent("readthedocs-search-show"); + document.dispatchEvent(event); + }); + }) +} + +if (themeLanguageSelector || themeVersionSelector) { + function onSelectorSwitch(event) { + const option = event.target.selectedIndex; + const item = event.target.options[option]; + window.location.href = item.dataset.url; + } + + document.addEventListener("readthedocs-addons-data-ready", function (event) { + const config = event.detail.data(); + + const versionSwitch = document.querySelector( + "div.switch-menus > div.version-switch", + ); + if (themeVersionSelector) { + let versions = config.versions.active; + if (config.versions.current.hidden || config.versions.current.type === "external") { + versions.unshift(config.versions.current); + } + const versionSelect = ` + + `; + + versionSwitch.innerHTML = versionSelect; + versionSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); + } + + const languageSwitch = document.querySelector( + "div.switch-menus > div.language-switch", + ); + + if (themeLanguageSelector) { + if (config.projects.translations.length) { + // Add the current language to the options on the selector + let languages = config.projects.translations.concat( + config.projects.current, + ); + languages = languages.sort((a, b) => + a.language.name.localeCompare(b.language.name), + ); + + const languageSelect = ` + + `; + + languageSwitch.innerHTML = languageSelect; + languageSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); + } + else { + languageSwitch.remove(); + } + } + }); +} + +document.addEventListener("readthedocs-addons-data-ready", function (event) { + // Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav. + document + .querySelector("[role='search'] input") + .addEventListener("focusin", () => { + const event = new CustomEvent("readthedocs-search-show"); + document.dispatchEvent(event); + }); +}); \ No newline at end of file diff --git a/docs/_static/language_data.js b/docs/_static/language_data.js index 250f566..c7fe6c6 100644 --- a/docs/_static/language_data.js +++ b/docs/_static/language_data.js @@ -1,19 +1,12 @@ /* - * language_data.js - * ~~~~~~~~~~~~~~~~ - * * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * */ var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; -/* Non-minified version is copied as a separate JS file, is available */ +/* Non-minified version is copied as a separate JS file, if available */ /** * Porter Stemmer diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js index 7918c3f..2c774d1 100644 --- a/docs/_static/searchtools.js +++ b/docs/_static/searchtools.js @@ -1,12 +1,5 @@ /* - * searchtools.js - * ~~~~~~~~~~~~~~~~ - * * Sphinx JavaScript utilities for the full-text search. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * */ "use strict"; @@ -20,7 +13,7 @@ if (typeof Scorer === "undefined") { // and returns the new score. /* score: result => { - const [docname, title, anchor, descr, score, filename] = result + const [docname, title, anchor, descr, score, filename, kind] = result return score }, */ @@ -47,6 +40,14 @@ if (typeof Scorer === "undefined") { }; } +// Global search result kind enum, used by themes to style search results. +class SearchResultKind { + static get index() { return "index"; } + static get object() { return "object"; } + static get text() { return "text"; } + static get title() { return "title"; } +} + const _removeChildren = (element) => { while (element && element.lastChild) element.removeChild(element.lastChild); }; @@ -64,9 +65,13 @@ const _displayItem = (item, searchTerms, highlightTerms) => { const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; const contentRoot = document.documentElement.dataset.content_root; - const [docName, title, anchor, descr, score, _filename] = item; + const [docName, title, anchor, descr, score, _filename, kind] = item; let listItem = document.createElement("li"); + // Add a class representing the item's type: + // can be used by a theme's CSS selector for styling + // See SearchResultKind for the class names. + listItem.classList.add(`kind-${kind}`); let requestUrl; let linkUrl; if (docBuilder === "dirhtml") { @@ -99,7 +104,7 @@ const _displayItem = (item, searchTerms, highlightTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms) + Search.makeSearchSummary(data, searchTerms, anchor) ); // highlight search terms in the summary if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js @@ -115,9 +120,11 @@ const _finishSearch = (resultCount) => { "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." ); else - Search.status.innerText = _( - `Search finished, found ${resultCount} page(s) matching the search query.` - ); + Search.status.innerText = Documentation.ngettext( + "Search finished, found one page matching the search query.", + "Search finished, found ${resultCount} pages matching the search query.", + resultCount, + ).replace('${resultCount}', resultCount); }; const _displayNextItem = ( results, @@ -137,6 +144,22 @@ const _displayNextItem = ( // search finished, update title and status message else _finishSearch(resultCount); }; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; /** * Default splitQuery function. Can be overridden in ``sphinx.search`` with a @@ -160,13 +183,26 @@ const Search = { _queued_query: null, _pulse_status: -1, - htmlToText: (htmlString) => { + htmlToText: (htmlString, anchor) => { const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent !== undefined) return docContent.textContent; + if (docContent) return docContent.textContent; + console.warn( - "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." ); return ""; }, @@ -219,6 +255,7 @@ const Search = { searchSummary.classList.add("search-summary"); searchSummary.innerText = ""; const searchList = document.createElement("ul"); + searchList.setAttribute("role", "list"); searchList.classList.add("search"); const out = document.getElementById("search-results"); @@ -239,16 +276,7 @@ const Search = { else Search.deferQuery(query); }, - /** - * execute search (requires search index to be loaded) - */ - query: (query) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - + _parseQuery: (query) => { // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -284,22 +312,40 @@ const Search = { // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); - // array of [docname, title, anchor, descr, score, filename] - let results = []; + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename, kind]. + const normalResults = []; + const nonMainIndexResults = []; + _removeChildren(document.getElementById("search-progress")); - const queryLower = query.toLowerCase(); + const queryLower = query.toLowerCase().trim(); for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { for (const [file, id] of foundTitles) { - let score = Math.round(100 * queryLower.length / title.length) - results.push([ + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ docNames[file], titles[file] !== title ? `${titles[file]} > ${title}` : title, id !== null ? "#" + id : "", null, - score, + score + boost, filenames[file], + SearchResultKind.title, ]); } } @@ -308,46 +354,48 @@ const Search = { // search for explicit entries in index directives for (const [entry, foundEntries] of Object.entries(indexEntries)) { if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id] of foundEntries) { - let score = Math.round(100 * queryLower.length / entry.length) - results.push([ + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ docNames[file], titles[file], id ? "#" + id : "", null, score, filenames[file], - ]); + SearchResultKind.index, + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } } } } // lookup as object objectTerms.forEach((term) => - results.push(...Search.performObjectSearch(term, objectTerms)) + normalResults.push(...Search.performObjectSearch(term, objectTerms)) ); // lookup as search terms in fulltext - results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); // let the scorer override scores with a custom scoring function - if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); - - // now sort the results by score (in opposite order of appearance, since the - // display function below uses pop() to retrieve items) and then - // alphabetically - results.sort((a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; - }); + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; // remove duplicate search results // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept @@ -361,7 +409,12 @@ const Search = { return acc; }, []); - results = results.reverse(); + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); // for debugging //Search.lastresults = results.slice(); // a copy @@ -432,6 +485,7 @@ const Search = { descr, score, filenames[match[0]], + SearchResultKind.object, ]); }; Object.keys(objects).forEach((prefix) => @@ -466,14 +520,18 @@ const Search = { // add support for partial matches if (word.length > 2) { const escapedWord = _escapeRegExp(word); - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord) && !terms[word]) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord) && !titleTerms[word]) - arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); - }); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } } // no match but word was a required one @@ -496,9 +554,8 @@ const Search = { // create the mapping files.forEach((file) => { - if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) - fileMap.get(file).push(word); - else fileMap.set(file, [word]); + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); }); }); @@ -539,6 +596,7 @@ const Search = { null, score, filenames[file], + SearchResultKind.text, ]); } return results; @@ -549,8 +607,8 @@ const Search = { * search summary for a given text. keywords is a list * of stemmed words. */ - makeSearchSummary: (htmlText, keywords) => { - const text = Search.htmlToText(htmlText); + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); if (text === "") return null; const textLower = text.toLowerCase(); diff --git a/docs/citing.html b/docs/citing.html index f9c2d43..608195f 100644 --- a/docs/citing.html +++ b/docs/citing.html @@ -1,25 +1,23 @@ + + - + 6. Citing — ect 0.1.5 documentation - + - - - - - - - - + + + + + + diff --git a/docs/contributing.html b/docs/contributing.html index 65961de..deede7a 100644 --- a/docs/contributing.html +++ b/docs/contributing.html @@ -1,25 +1,23 @@ + + - + 4. Contributing to the ect Package — ect 0.1.5 documentation - + - - - - - - - - + + + + + + diff --git a/docs/doctrees/citing.doctree b/docs/doctrees/citing.doctree index 07f2510..e505785 100644 Binary files a/docs/doctrees/citing.doctree and b/docs/doctrees/citing.doctree differ diff --git a/docs/doctrees/contributing.doctree b/docs/doctrees/contributing.doctree index 99d9b0d..b75c10b 100644 Binary files a/docs/doctrees/contributing.doctree and b/docs/doctrees/contributing.doctree differ diff --git a/docs/doctrees/ect_on_graphs.doctree b/docs/doctrees/ect_on_graphs.doctree index 0c10ba7..60cacac 100644 Binary files a/docs/doctrees/ect_on_graphs.doctree and b/docs/doctrees/ect_on_graphs.doctree differ diff --git a/docs/doctrees/embed_cw.doctree b/docs/doctrees/embed_cw.doctree index 5f44a1f..6753860 100644 Binary files a/docs/doctrees/embed_cw.doctree and b/docs/doctrees/embed_cw.doctree differ diff --git a/docs/doctrees/embed_graph.doctree b/docs/doctrees/embed_graph.doctree index 6af0c8f..1485f86 100644 Binary files a/docs/doctrees/embed_graph.doctree and b/docs/doctrees/embed_graph.doctree differ diff --git a/docs/doctrees/environment.pickle b/docs/doctrees/environment.pickle index 448535d..5148285 100644 Binary files a/docs/doctrees/environment.pickle and b/docs/doctrees/environment.pickle differ diff --git a/docs/doctrees/index.doctree b/docs/doctrees/index.doctree index db37400..1d9039e 100644 Binary files a/docs/doctrees/index.doctree and b/docs/doctrees/index.doctree differ diff --git a/docs/doctrees/installation.doctree b/docs/doctrees/installation.doctree index c38b2cf..993de32 100644 Binary files a/docs/doctrees/installation.doctree and b/docs/doctrees/installation.doctree differ diff --git a/docs/doctrees/license.doctree b/docs/doctrees/license.doctree index 41a49ba..aaaf6e4 100644 Binary files a/docs/doctrees/license.doctree and b/docs/doctrees/license.doctree differ diff --git a/docs/doctrees/modules.doctree b/docs/doctrees/modules.doctree index 5babbb9..b8170a6 100644 Binary files a/docs/doctrees/modules.doctree and b/docs/doctrees/modules.doctree differ diff --git a/docs/doctrees/notebooks/CodingFiguresFern.doctree b/docs/doctrees/notebooks/CodingFiguresFern.doctree index 7aae9ec..c098158 100644 Binary files a/docs/doctrees/notebooks/CodingFiguresFern.doctree and b/docs/doctrees/notebooks/CodingFiguresFern.doctree differ diff --git a/docs/doctrees/notebooks/Matisse/Matisse_ECT.doctree b/docs/doctrees/notebooks/Matisse/Matisse_ECT.doctree index c21d9c1..816ce58 100644 Binary files a/docs/doctrees/notebooks/Matisse/Matisse_ECT.doctree and b/docs/doctrees/notebooks/Matisse/Matisse_ECT.doctree differ diff --git a/docs/doctrees/notebooks/Tutorial-ECT_for_CW_Complexes.doctree b/docs/doctrees/notebooks/Tutorial-ECT_for_CW_Complexes.doctree index a0f324a..b11ddd1 100644 Binary files a/docs/doctrees/notebooks/Tutorial-ECT_for_CW_Complexes.doctree and b/docs/doctrees/notebooks/Tutorial-ECT_for_CW_Complexes.doctree differ diff --git a/docs/doctrees/notebooks/Tutorial-ECT_for_embedded_graphs.doctree b/docs/doctrees/notebooks/Tutorial-ECT_for_embedded_graphs.doctree index 973efe2..8b86370 100644 Binary files a/docs/doctrees/notebooks/Tutorial-ECT_for_embedded_graphs.doctree and b/docs/doctrees/notebooks/Tutorial-ECT_for_embedded_graphs.doctree differ diff --git a/docs/doctrees/tutorials.doctree b/docs/doctrees/tutorials.doctree index e931ca9..9b81a8b 100644 Binary files a/docs/doctrees/tutorials.doctree and b/docs/doctrees/tutorials.doctree differ diff --git a/docs/ect_on_graphs.html b/docs/ect_on_graphs.html index 297cb54..ee02192 100644 --- a/docs/ect_on_graphs.html +++ b/docs/ect_on_graphs.html @@ -1,27 +1,25 @@ + + - + 2.3. ECT on Graphs — ect 0.1.5 documentation - + - - - - - - - - - - + + + + + + + + @@ -189,16 +187,23 @@
calculateECC(G, theta, bound_radius=None, return_counts=False)[source]
-

Function to compute the Euler Characteristic of an EmbeddedGraph, that is, a graph with coordinates for each vertex.

+

Function to compute the Euler Characteristic Curve (ECC) of an EmbeddedGraph.

Parameters:
    -
  • G (nx.Graph) – The graph to compute the Euler Characteristic for.

  • -
  • theta (float) – The angle (in radians) to use for the direction function when computing the Euler Characteristic Curve.

  • -
  • bound_radius (float) – If None, uses the following in order: (i) the bounding radius stored in the class; or if not available (ii) the bounding radius of the given graph. Otherwise, should be a postive float \(R\) where the ECC will be computed at thresholds in \([-R,R]\). Default is None.

  • -
  • return_counts (bool) – Whether to return the counts of vertices, edges, and faces below the threshold. Default is False.

  • +
  • G (nx.Graph) – The graph to compute the ECC for.

  • +
  • theta (float) – The angle (in radians) for the direction function.

  • +
  • bound_radius (float, optional) – Radius for threshold range. Default is None.

  • +
  • return_counts (bool, optional) – Whether to return vertex, edge, and face counts. Default is False.

+
Returns:
+

ECC values at each threshold. +(Optional) Tuple of counts: (ecc, vertex_count, edge_count, face_count)

+
+
Return type:
+

numpy.ndarray

+
diff --git a/docs/embed_cw.html b/docs/embed_cw.html index 0cba429..061177d 100644 --- a/docs/embed_cw.html +++ b/docs/embed_cw.html @@ -1,27 +1,25 @@ + + - + 2.2. Embedded CW complex — ect 0.1.5 documentation - + - - - - - - - - - - + + + + + + + + diff --git a/docs/embed_graph.html b/docs/embed_graph.html index 8e43b5a..92ddca5 100644 --- a/docs/embed_graph.html +++ b/docs/embed_graph.html @@ -1,27 +1,25 @@ + + - + 2.1. Embedded graphs — ect 0.1.5 documentation - + - - - - - - - - - - + + + + + + + + diff --git a/docs/genindex.html b/docs/genindex.html index b5a0708..9b83b1e 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -1,3 +1,5 @@ + + @@ -5,20 +7,16 @@ Index — ect 0.1.5 documentation - + - - - - - - - - + + + + + + diff --git a/docs/index.html b/docs/index.html index d987a6d..74ce84d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,25 +1,25 @@ + + - + ect: Euler Characteristic Transform in Python — ect 0.1.5 documentation - + - - - - - - - - + + + + + + + + diff --git a/docs/installation.html b/docs/installation.html index b42e29a..44d2370 100644 --- a/docs/installation.html +++ b/docs/installation.html @@ -1,25 +1,23 @@ + + - + 1. Installation — ect 0.1.5 documentation - + - - - - - - - - + + + + + + diff --git a/docs/license.html b/docs/license.html index caeda13..af04f7b 100644 --- a/docs/license.html +++ b/docs/license.html @@ -1,25 +1,23 @@ + + - + 5. GPL-3.0 License — ect 0.1.5 documentation - + - - - - - - - - + + + + + + diff --git a/docs/modules.html b/docs/modules.html index 2250220..0644b33 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1,25 +1,25 @@ + + - + 2. Table of Contents — ect 0.1.5 documentation - + - - - - - - - - + + + + + + + + diff --git a/docs/notebooks/CodingFiguresFern.html b/docs/notebooks/CodingFiguresFern.html index 6327d78..d0b1e06 100644 --- a/docs/notebooks/CodingFiguresFern.html +++ b/docs/notebooks/CodingFiguresFern.html @@ -1,28 +1,26 @@ + + - + Figure generation for Invitation to the ECT — ect 0.1.5 documentation - + - + - - - - - - - - - - + + + + + + + + @@ -91,16 +89,16 @@

Figure generation for Invitation to the ECT
[ ]:
 

- - - - - - - - - - - - - - - - - - -
# Version without colorbars
+
# Version without colorbars
 
-thetaStrs = [r'\pi/4', r'3\pi/4', r'3\pi/2', '7\pi/4']
-thetaStrsFile = [r'pi_over_4', r'3pi_over_4', r'3pi_over_2', '7pi_over_4']
-thetas = [np.pi/4, 3*np.pi/4, 3*np.pi/2, 7*np.pi/4]
+thetaStrs = [r'\pi/4', r'3\pi/4', r'3\pi/2', '7\pi/4']
+thetaStrsFile = [r'pi_over_4', r'3pi_over_4', r'3pi_over_2', '7pi_over_4']
+thetas = [np.pi/4, 3*np.pi/4, 3*np.pi/2, 7*np.pi/4]
 
 
-for i, theta in enumerate(thetas):
-    print(theta)
-    im = plt.matshow(makeFernPic(F,theta), origin = 'lower', cmap = cmap_viridis, vmin = -200, vmax = 200)
-    ax = plt.gca()
-    midx = 279
-    ax.set_xticks(midx+100*np.arange(-2,3))
-    ax.set_xticklabels(np.arange(-2,3)*100)
-    ax.xaxis.set_ticks_position('bottom')
+for i, theta in enumerate(thetas):
+    print(theta)
+    im = plt.matshow(makeFernPic(F,theta), origin = 'lower', cmap = cmap_viridis, vmin = -200, vmax = 200)
+    ax = plt.gca()
+    midx = 279
+    ax.set_xticks(midx+100*np.arange(-2,3))
+    ax.set_xticklabels(np.arange(-2,3)*100)
+    ax.xaxis.set_ticks_position('bottom')
 
-    midy = 177
-    ax.set_yticks(midy+100*np.arange(-2,3))
-    ax.set_yticklabels(np.arange(-2,3)*100)
+    midy = 177
+    ax.set_yticks(midy+100*np.arange(-2,3))
+    ax.set_yticklabels(np.arange(-2,3)*100)
 
-    # plt.colorbar(fraction=0.035, pad=0.04)
-    plt.title(r'$f_{\omega}$ for $\omega = ' + thetaStrs[i] + r'$')
-    fig = plt.gcf()
-    fig.set_figwidth(1.8)
+    # plt.colorbar(fraction=0.035, pad=0.04)
+    plt.title(r'$f_{\omega}$ for $\omega = ' + thetaStrs[i] + r'$')
+    fig = plt.gcf()
+    fig.set_figwidth(1.8)
 
-    print(fig.get_size_inches())
-    height_fig = fig.get_size_inches()[0]
-    print(height_fig)
+    print(fig.get_size_inches())
+    height_fig = fig.get_size_inches()[0]
+    print(height_fig)
 
-    plt.savefig('figures/Fern_' + thetaStrsFile[i] + '_nocolorbar.png', bbox_inches = 'tight', dpi = 300)
-    plt.savefig('figures/Fern_' + thetaStrsFile[i] + '_nocolorbar.eps', bbox_inches = 'tight')
+    plt.savefig('figures/Fern_' + thetaStrsFile[i] + '_nocolorbar.png', bbox_inches = 'tight', dpi = 300)
+    plt.savefig('figures/Fern_' + thetaStrsFile[i] + '_nocolorbar.eps', bbox_inches = 'tight')
 
@@ -591,35 +589,35 @@

Making pictures
[ ]:
 

-


thetaStrs = [r'\pi/4', r'3\pi/4', r'3\pi/2', '7\pi/4'] -thetaStrsFile = [r'pi_over_4', r'3pi_over_4', r'3pi_over_2', '7pi_over_4'] -thetas = [np.pi/4, 3*np.pi/4, 3*np.pi/2, 7*np.pi/4] +


thetaStrs = [r'\pi/4', r'3\pi/4', r'3\pi/2', '7\pi/4'] +thetaStrsFile = [r'pi_over_4', r'3pi_over_4', r'3pi_over_2', '7pi_over_4'] +thetas = [np.pi/4, 3*np.pi/4, 3*np.pi/2, 7*np.pi/4] -for i, theta in enumerate(thetas): - print(theta) - plt.matshow(makeFernPic(F,theta), origin = 'lower', cmap = cmap_viridis, vmin = -200, vmax = 200) - ax = plt.gca() - midx = 279 - ax.set_xticks(midx+100*np.arange(-2,3)) - ax.set_xticklabels(np.arange(-2,3)*100) - ax.xaxis.set_ticks_position('bottom') +for i, theta in enumerate(thetas): + print(theta) + plt.matshow(makeFernPic(F,theta), origin = 'lower', cmap = cmap_viridis, vmin = -200, vmax = 200) + ax = plt.gca() + midx = 279 + ax.set_xticks(midx+100*np.arange(-2,3)) + ax.set_xticklabels(np.arange(-2,3)*100) + ax.xaxis.set_ticks_position('bottom') - midy = 177 - ax.set_yticks(midy+100*np.arange(-2,3)) - ax.set_yticklabels(np.arange(-2,3)*100) + midy = 177 + ax.set_yticks(midy+100*np.arange(-2,3)) + ax.set_yticklabels(np.arange(-2,3)*100) - plt.colorbar(fraction=0.03, pad=0.04) - plt.title(r'$f_{\omega}$ for $\omega = ' + thetaStrs[i] + r'$') - fig = plt.gcf() - # fig.set_figwidth(2.4) - print(height_fig) - fig.set_figheight(height_fig) + plt.colorbar(fraction=0.03, pad=0.04) + plt.title(r'$f_{\omega}$ for $\omega = ' + thetaStrs[i] + r'$') + fig = plt.gcf() + # fig.set_figwidth(2.4) + print(height_fig) + fig.set_figheight(height_fig) - print(fig.get_size_inches()) + print(fig.get_size_inches()) - plt.savefig('figures/Fern_' + thetaStrsFile[i] + '.png', bbox_inches = 'tight', dpi = 300) - plt.savefig('figures/Fern_' + thetaStrsFile[i] + '.eps', bbox_inches = 'tight') + plt.savefig('figures/Fern_' + thetaStrsFile[i] + '.png', bbox_inches = 'tight', dpi = 300) + plt.savefig('figures/Fern_' + thetaStrsFile[i] + '.eps', bbox_inches = 'tight')
@@ -674,13 +672,13 @@

Making pictures
[ ]:
 

- - - -
theta = 3*np.pi/4
+
theta = 3*np.pi/4
 
-for thresh in [-150,-100,-50,0,50,100,150]:
+for thresh in [-150,-100,-50,0,50,100,150]:
 
 
-    heights = np.sum(leaf.cells[0]*omega, axis=1)
+    heights = np.sum(leaf.cells[0]*omega, axis=1)
 
-    # Plot colors above theshold
-    plt.matshow(makeFernPicThreshold(F,theta,thresh),
-                origin = 'lower',
-                cmap = cmap_viridis,
-                vmin = -200, vmax = 200)
+    # Plot colors above theshold
+    plt.matshow(makeFernPicThreshold(F,theta,thresh),
+                origin = 'lower',
+                cmap = cmap_viridis,
+                vmin = -200, vmax = 200)
 
-    ax = plt.gca()
-    midx = 279
-    ax.set_xticks(midx+100*np.arange(-2,3))
-    ax.set_xticklabels(np.arange(-2,3)*100)
-    ax.xaxis.set_ticks_position('bottom')
-    ax.tick_params(axis='x', labelrotation=45)
+    ax = plt.gca()
+    midx = 279
+    ax.set_xticks(midx+100*np.arange(-2,3))
+    ax.set_xticklabels(np.arange(-2,3)*100)
+    ax.xaxis.set_ticks_position('bottom')
+    ax.tick_params(axis='x', labelrotation=45)
 
 
-    midy = 177
-    ax.set_yticks(midy+100*np.arange(-2,3))
-    ax.set_yticklabels(np.arange(-2,3)*100)
+    midy = 177
+    ax.set_yticks(midy+100*np.arange(-2,3))
+    ax.set_yticklabels(np.arange(-2,3)*100)
 
-    plt.title(r'$K_{' + str(thresh) + r'}$')
+    plt.title(r'$K_{' + str(thresh) + r'}$')
 
-    fig = plt.gcf()
-    fig.set_figwidth(1.25)
+    fig = plt.gcf()
+    fig.set_figwidth(1.25)
 
-    thresh_size_fig = fig.get_size_inches()
-    print(thresh_size_fig)
+    thresh_size_fig = fig.get_size_inches()
+    print(thresh_size_fig)
 
-    # plt.colorbar()
+    # plt.colorbar()
 
-    plt.savefig('figures/Fern_3pi_over_4_Thresh'+str(thresh)+'.png', bbox_inches = 'tight',dpi = 300)
-    plt.savefig('figures/Fern_3pi_over_4_Thresh'+str(thresh)+'.eps', bbox_inches = 'tight')
+    plt.savefig('figures/Fern_3pi_over_4_Thresh'+str(thresh)+'.png', bbox_inches = 'tight',dpi = 300)
+    plt.savefig('figures/Fern_3pi_over_4_Thresh'+str(thresh)+'.eps', bbox_inches = 'tight')
 
-    # plt.clf()
+    # plt.clf()
 
@@ -866,51 +864,51 @@

Thresholded Figure
[ ]:
 

-
theta = 3*np.pi/4
+
theta = 3*np.pi/4
 
-fig,axes = plt.subplots(1,5,sharey = True, figsize = (6,2))
+fig,axes = plt.subplots(1,5,sharey = True, figsize = (6,2))
 
-for i, thresh in enumerate([-150,-50,0,50,150]):
+for i, thresh in enumerate([-150,-50,0,50,150]):
 
-    ax = axes[i]
+    ax = axes[i]
 
-    heights = np.sum(leaf.cells[0]*omega, axis=1)
+    heights = np.sum(leaf.cells[0]*omega, axis=1)
 
-    # Plot colors above theshold
-    ax.matshow(makeFernPicThreshold(F,theta,thresh),
-                origin = 'lower',
-                cmap = cmap_viridis,
-                vmin = -200, vmax = 200)
+    # Plot colors above theshold
+    ax.matshow(makeFernPicThreshold(F,theta,thresh),
+                origin = 'lower',
+                cmap = cmap_viridis,
+                vmin = -200, vmax = 200)
 
-    # midx = 279
-    # ax.set_xticks(midx+100*np.arange(-2,3))
-    # ax.set_xticklabels(np.arange(-2,3)*100)
-    # ax.xaxis.set_ticks_position('bottom')
-    # ax.tick_params(axis='x', labelrotation=45)
+    # midx = 279
+    # ax.set_xticks(midx+100*np.arange(-2,3))
+    # ax.set_xticklabels(np.arange(-2,3)*100)
+    # ax.xaxis.set_ticks_position('bottom')
+    # ax.tick_params(axis='x', labelrotation=45)
 
 
-    # midy = 177
-    # ax.set_yticks(midy+100*np.arange(-2,3))
-    # ax.set_yticklabels(np.arange(-2,3)*100)
+    # midy = 177
+    # ax.set_yticks(midy+100*np.arange(-2,3))
+    # ax.set_yticklabels(np.arange(-2,3)*100)
 
-    ax.set_xticks([])
-    ax.set_yticks([])
-    ax.set_title(r'$K_{' + str(thresh) + r'}$')
+    ax.set_xticks([])
+    ax.set_yticks([])
+    ax.set_title(r'$K_{' + str(thresh) + r'}$')
 
-    # fig = plt.gcf()
-    # fig.set_figwidth(1.25)
+    # fig = plt.gcf()
+    # fig.set_figwidth(1.25)
 
-    # thresh_size_fig = fig.get_size_inches()
-    # print(thresh_size_fig)
+    # thresh_size_fig = fig.get_size_inches()
+    # print(thresh_size_fig)
 
-    # plt.colorbar()
+    # plt.colorbar()
 
-    # plt.savefig('figures/Fern_3pi_over_4_Thresh'+str(thresh)+'.png', bbox_inches = 'tight',dpi = 300)
-    # plt.savefig('figures/Fern_3pi_over_4_Thresh'+str(thresh)+'.eps', bbox_inches = 'tight')
+    # plt.savefig('figures/Fern_3pi_over_4_Thresh'+str(thresh)+'.png', bbox_inches = 'tight',dpi = 300)
+    # plt.savefig('figures/Fern_3pi_over_4_Thresh'+str(thresh)+'.eps', bbox_inches = 'tight')
 
-    # plt.clf()
-plt.savefig('figures/Fern_3pi_over_4_AllThresh.png', bbox_inches = 'tight',dpi = 300)
-plt.savefig('figures/Fern_3pi_over_4_AllThresh.eps', bbox_inches = 'tight',dpi = 300)
+    # plt.clf()
+plt.savefig('figures/Fern_3pi_over_4_AllThresh.png', bbox_inches = 'tight',dpi = 300)
+plt.savefig('figures/Fern_3pi_over_4_AllThresh.eps', bbox_inches = 'tight',dpi = 300)
 
@@ -928,37 +926,37 @@

ECC in one direction
[ ]:
 

-
theta = 3*np.pi/4
-omega = (np.cos(theta), np.sin(theta))
-heights = np.sum(leaf.cells[0]*omega, axis=1)
-numThresh = 64
+
theta = 3*np.pi/4
+omega = (np.cos(theta), np.sin(theta))
+heights = np.sum(leaf.cells[0]*omega, axis=1)
+numThresh = 64
 
-threshes= np.linspace(heights.min(), heights.max(), numThresh)
+threshes= np.linspace(heights.min(), heights.max(), numThresh)
 
-outECC = leaf.ECC(heights, numThresh)
+outECC = leaf.ECC(heights, numThresh)
 
-fig = plt.figure()
-ax = plt.gca()
+fig = plt.figure()
+ax = plt.gca()
 
-positions = [-150, -50, 0, 50, 150]
-for pos in positions:
-    ax.axvline(x=pos, color='grey', linestyle='--')
+positions = [-150, -50, 0, 50, 150]
+for pos in positions:
+    ax.axvline(x=pos, color='grey', linestyle='--')
 
 
 
-plt.step(threshes,outECC)
-plt.title(r'ECC for $\omega = \frac{3 \pi}{4}$')
-plt.xlabel('$a$')
-plt.ylabel(r'$\chi(K_a)$')
+plt.step(threshes,outECC)
+plt.title(r'ECC for $\omega = \frac{3 \pi}{4}$')
+plt.xlabel('$a$')
+plt.ylabel(r'$\chi(K_a)$')
 
-# ax.set_xticks([-200,-150,-100,-50,0,50,100,150,200])
-    # midx = 279
-    # ax.set_xticks(midx+100*np.arange(-2,3))
-    # ax.set_xticklabels(np.arange(-2,3)*100)
-    # ax.xaxis.set_ticks_position('bottom')
-    # ax.tick_params(axis='x', labelrotation=45)
-ax.tick_params(axis='x', labelrotation=45)
-ax.tick_params(axis='y', labelrotation=45)
+# ax.set_xticks([-200,-150,-100,-50,0,50,100,150,200])
+    # midx = 279
+    # ax.set_xticks(midx+100*np.arange(-2,3))
+    # ax.set_xticklabels(np.arange(-2,3)*100)
+    # ax.xaxis.set_ticks_position('bottom')
+    # ax.tick_params(axis='x', labelrotation=45)
+ax.tick_params(axis='x', labelrotation=45)
+ax.tick_params(axis='y', labelrotation=45)
 
 
 
@@ -966,14 +964,14 @@ 

ECC in one directionfig = plt.gcf() -fig.set_size_inches(5,2) -# fig.set_size_inches(thresh_size_fig) -# print(thresh_size_fig) -# print(fig.get_size_inches()) +fig = plt.gcf() +fig.set_size_inches(5,2) +# fig.set_size_inches(thresh_size_fig) +# print(thresh_size_fig) +# print(fig.get_size_inches()) -plt.savefig('figures/Fern_3pi_over_4_ECC.png', bbox_inches = 'tight',dpi=300) -plt.savefig('figures/Fern_3pi_over_4_ECC.eps', bbox_inches = 'tight') +plt.savefig('figures/Fern_3pi_over_4_ECC.png', bbox_inches = 'tight',dpi=300) +plt.savefig('figures/Fern_3pi_over_4_ECC.eps', bbox_inches = 'tight')

@@ -988,7 +986,7 @@

ECC in one direction
[ ]:
 

- -
# Get all the directions around the circle
-numCircleDirs = 32
-circledirs =  np.linspace(0, 2*np.pi, num=numCircleDirs, endpoint=False)
-circledirs
+
# Get all the directions around the circle
+numCircleDirs = 32
+circledirs =  np.linspace(0, 2*np.pi, num=numCircleDirs, endpoint=False)
+circledirs
 
-print(circledirs/np.pi)
+print(circledirs/np.pi)
 
@@ -1031,8 +1029,8 @@

ECT
[ ]:
 

-
# Choose number of thresholds for the ECC to stop at
-numThresh = 100
+
# Choose number of thresholds for the ECC to stop at
+numThresh = 100
 
@@ -1040,32 +1038,32 @@

ECT
[ ]:
 

-
ECT_preprocess = {}
+
ECT_preprocess = {}
 
-overallmin = 0
-overallmax = 0
+overallmin = 0
+overallmax = 0
 
-for i, omega in enumerate(circledirs):
+for i, omega in enumerate(circledirs):
 
-    omegavec = np.array((np.cos(omega),np.sin(omega)))
+    omegavec = np.array((np.cos(omega),np.sin(omega)))
 
-    # Function values of all the pixels
-    heights = np.sum(leaf.cells[0]*omegavec, axis=1)
+    # Function values of all the pixels
+    heights = np.sum(leaf.cells[0]*omegavec, axis=1)
 
-    # Thresholds implicitly calculated by Erik's code
-    threshes= np.linspace(heights.min(), heights.max(), numThresh)
+    # Thresholds implicitly calculated by Erik's code
+    threshes= np.linspace(heights.min(), heights.max(), numThresh)
 
-    if heights.min()<overallmin:
-        overallmin = heights.min()
-    if heights.max()>overallmax:
-        overallmax= heights.max()
+    if heights.min()<overallmin:
+        overallmin = heights.min()
+    if heights.max()>overallmax:
+        overallmax= heights.max()
 
 
-    outECC = leaf.ECC(heights, numThresh)
+    outECC = leaf.ECC(heights, numThresh)
 
-    ECT_preprocess[i] = (threshes,outECC)
+    ECT_preprocess[i] = (threshes,outECC)
 
-print(overallmin,overallmax)
+print(overallmin,overallmax)
 
@@ -1081,9 +1079,9 @@

ECT
[ ]:
 

-
i = 2
+
i = 2
 
-plt.step( ECT_preprocess[i][0],  ECT_preprocess[i][1])
+plt.step( ECT_preprocess[i][0],  ECT_preprocess[i][1])
 
@@ -1106,32 +1104,32 @@

ECT
[ ]:
 

-
# Making a matrix of size numThreshes x numCircleDirs
-# M[i,j] =
+
# Making a matrix of size numThreshes x numCircleDirs
+# M[i,j] =
 
 
-# Make meshgrid. The +1 is to draw 2pi on both ends
-X,Y = np.meshgrid(range(numCircleDirs+1),np.linspace(-250,250,numThresh))
-M = np.ones_like(X)
+# Make meshgrid. The +1 is to draw 2pi on both ends
+X,Y = np.meshgrid(range(numCircleDirs+1),np.linspace(-250,250,numThresh))
+M = np.ones_like(X)
 
-for i in range(X.shape[0]):
-    for j in range(X.shape[1]):
-        omegai = X[i,j]
+for i in range(X.shape[0]):
+    for j in range(X.shape[1]):
+        omegai = X[i,j]
 
-        # Deal with redrawing the 2pi
-        omegai = np.mod(omegai,numCircleDirs)
+        # Deal with redrawing the 2pi
+        omegai = np.mod(omegai,numCircleDirs)
 
 
-        omega = i*np.pi/numCircleDirs
-        a = Y[i,j]
-        threshes = ECT_preprocess[omegai][0]
-#         print(threshes)
-        try:
-            index = np.where(threshes>=a)[0][0]
-        except:
-            index = [-1]
+        omega = i*np.pi/numCircleDirs
+        a = Y[i,j]
+        threshes = ECT_preprocess[omegai][0]
+#         print(threshes)
+        try:
+            index = np.where(threshes>=a)[0][0]
+        except:
+            index = [-1]
 
-        M[i,j] = ECT_preprocess[omegai][1][index]
+        M[i,j] = ECT_preprocess[omegai][1][index]
 
@@ -1148,35 +1146,35 @@

ECT
[ ]:
 

-
plt.pcolormesh(X,Y,M, cmap = 'viridis')
-plt.colorbar()
+
plt.pcolormesh(X,Y,M, cmap = 'viridis')
+plt.colorbar()
 
-ax = plt.gca()
-ax.set_xticks(np.arange(0,numCircleDirs+1,4))
+ax = plt.gca()
+ax.set_xticks(np.arange(0,numCircleDirs+1,4))
 
-labels = [r'$0$',
-          r'$\frac{\pi}{4}$',
-          r'$\frac{\pi}{2}$',
-          r'$\frac{3\pi}{4}$',
-          r'$\pi$',
-          r'$\frac{5\pi}{4}$',
-          r'$\frac{3\pi}{2}$',
-          r'$\frac{7\pi}{4}$',
-          r'$2\pi$',
-         ]
+labels = [r'$0$',
+          r'$\frac{\pi}{4}$',
+          r'$\frac{\pi}{2}$',
+          r'$\frac{3\pi}{4}$',
+          r'$\pi$',
+          r'$\frac{5\pi}{4}$',
+          r'$\frac{3\pi}{2}$',
+          r'$\frac{7\pi}{4}$',
+          r'$2\pi$',
+         ]
 
-ax.set_xticklabels(labels)
+ax.set_xticklabels(labels)
 
 
-plt.xlabel(r'$\omega$')
-plt.ylabel(r'$a$')
+plt.xlabel(r'$\omega$')
+plt.ylabel(r'$a$')
 
-plt.title(r'ECT of Fern Leaf')
-fig = plt.gcf()
-fig.set_size_inches(3,2)
+plt.title(r'ECT of Fern Leaf')
+fig = plt.gcf()
+fig.set_size_inches(3,2)
 
-plt.savefig('figures/Fern_ECT.png', bbox_inches = 'tight',dpi=900)
-plt.savefig('figures/Fern_ECT.eps', bbox_inches = 'tight')
+plt.savefig('figures/Fern_ECT.png', bbox_inches = 'tight',dpi=900)
+plt.savefig('figures/Fern_ECT.eps', bbox_inches = 'tight')
 
@@ -1191,7 +1189,7 @@

ECT
[ ]:
 

-
M[0,:]
+
M[0,:]
 
@@ -1208,10 +1206,10 @@

ECT
[ ]:
 

-
bigvals = np.where(M[0,:] >3)[0]
+
bigvals = np.where(M[0,:] >3)[0]
 
 
-circledirs[bigvals]/np.pi*16
+circledirs[bigvals]/np.pi*16
 
@@ -1230,14 +1228,14 @@

Let’s draw a cylinder!
[ ]:
 

- - - - -
"""
-equation for a circle
+
"""
+equation for a circle
 
-x  =  h + r cosθ
-y  =  k + r sinθ
+x  =  h + r cosθ
+y  =  k + r sinθ
 
-where h and k are the co-ordinates of the center
+where h and k are the co-ordinates of the center
 
-0 <= θ <= 360
-"""
+0 <= θ <= 360
+"""
 
-fig = plt.figure(figsize=(4,3))
-ax = fig.add_subplot(111, projection='3d')
+fig = plt.figure(figsize=(4,3))
+ax = fig.add_subplot(111, projection='3d')
 
-# theta = np.linspace(0, 2 * np.pi, 24)
-radius = 1
+# theta = np.linspace(0, 2 * np.pi, 24)
+radius = 1
 
 
-x = np.linspace(0, numThresh, numThresh)
+x = np.linspace(0, numThresh, numThresh)
 
-# theta = circledirs
-theta = np.linspace(0, 2 * np.pi, 32)
+# theta = circledirs
+theta = np.linspace(0, 2 * np.pi, 32)
 
-thetas, xs = np.meshgrid(theta, x)
+thetas, xs = np.meshgrid(theta, x)
 
-y = radius * np.cos(thetas)
-z = radius * np.sin(thetas)
+y = radius * np.cos(thetas)
+z = radius * np.sin(thetas)
 
-#ax.plot_surface(xs, y, z, color='orange')
-#ax.plot_surface(xs, y, z, facecolors=fcolors)
-surf = ax.plot_surface(xs, y, z, facecolors = fcolors,linewidth = 0.1)
-surf.set_edgecolor('grey')
+#ax.plot_surface(xs, y, z, color='orange')
+#ax.plot_surface(xs, y, z, facecolors=fcolors)
+surf = ax.plot_surface(xs, y, z, facecolors = fcolors,linewidth = 0.1)
+surf.set_edgecolor('grey')
 
-ax.set_axis_off()
+ax.set_axis_off()
 
-plt.savefig('figures/fern_ECT_cylinder.png', bbox_inches = 'tight',dpi = 900)
-plt.savefig('figures/fern_ECT_cylinder.eps', bbox_inches = 'tight')
+plt.savefig('figures/fern_ECT_cylinder.png', bbox_inches = 'tight',dpi = 900)
+plt.savefig('figures/fern_ECT_cylinder.eps', bbox_inches = 'tight')
 
@@ -1358,16 +1356,16 @@

Let’s draw a cylinder!
[ ]:
 

- -
# t = 32
-# tic = time.perf_counter()
-# ect = leaf.ECT(circle_dirs, T=t)
-# toc = time.perf_counter()
-# print("Complex with {} vertices\n".format(len(leaf.cells[0])))
-# print("ECT with {} directions in {:.4f} seconds.\n{:.4f}s per direction".format(len(circle_dirs), toc-tic, (toc-tic)/len(circle_dirs)))
+
# t = 32
+# tic = time.perf_counter()
+# ect = leaf.ECT(circle_dirs, T=t)
+# toc = time.perf_counter()
+# print("Complex with {} vertices\n".format(len(leaf.cells[0])))
+# print("ECT with {} directions in {:.4f} seconds.\n{:.4f}s per direction".format(len(circle_dirs), toc-tic, (toc-tic)/len(circle_dirs)))
 
-# plt.figure(figsize=(15,2))
-# plt.plot(ect);
-# plt.title('ECT for {} directions and {} thresholds each'.format(len(circle_dirs),t), fontsize=24);
+# plt.figure(figsize=(15,2))
+# plt.plot(ect);
+# plt.title('ECT for {} directions and {} thresholds each'.format(len(circle_dirs),t), fontsize=24);
 
@@ -1436,33 +1434,33 @@

SECT<
[ ]:
 
-
# THe original ECT
+
# THe original ECT
 
-plt.pcolormesh(X,Y,M, cmap = 'viridis')
-plt.colorbar()
+plt.pcolormesh(X,Y,M, cmap = 'viridis')
+plt.colorbar()
 
-ax = plt.gca()
-ax.set_xticks(np.arange(0,numCircleDirs+1,4))
+ax = plt.gca()
+ax.set_xticks(np.arange(0,numCircleDirs+1,4))
 
-labels = [r'$0$',
-          r'$\frac{\pi}{4}$',
-          r'$\frac{\pi}{2}$',
-          r'$\frac{3\pi}{4}$',
-          r'$\pi$',
-          r'$\frac{5\pi}{4}$',
-          r'$\frac{3\pi}{2}$',
-          r'$\frac{7\pi}{4}$',
-          r'$2\pi$',
-         ]
+labels = [r'$0$',
+          r'$\frac{\pi}{4}$',
+          r'$\frac{\pi}{2}$',
+          r'$\frac{3\pi}{4}$',
+          r'$\pi$',
+          r'$\frac{5\pi}{4}$',
+          r'$\frac{3\pi}{2}$',
+          r'$\frac{7\pi}{4}$',
+          r'$2\pi$',
+         ]
 
-ax.set_xticklabels(labels)
+ax.set_xticklabels(labels)
 
-fig = plt.gcf()
-fig.set_size_inches(3,2)
-plt.xlabel(r'$\omega$')
-plt.ylabel(r'$a$')
+fig = plt.gcf()
+fig.set_size_inches(3,2)
+plt.xlabel(r'$\omega$')
+plt.ylabel(r'$a$')
 
-plt.title(r'ECT of Fern Leaf')
+plt.title(r'ECT of Fern Leaf')
 
@@ -1485,16 +1483,16 @@

SECT<
[ ]:
 
-
# Following Crawford2019 for the moment. Is this different in the Meng22 version?
-print(M.shape)
+
# Following Crawford2019 for the moment. Is this different in the Meng22 version?
+print(M.shape)
 
-# Averages for a fixed direction
-AvgOverOmega = np.average(M,axis = 0)
-print(AvgOverOmega)
+# Averages for a fixed direction
+AvgOverOmega = np.average(M,axis = 0)
+print(AvgOverOmega)
 
-# Mean centered
+# Mean centered
 
-Mcentered = M-AvgOverOmega
+Mcentered = M-AvgOverOmega
 
@@ -1514,35 +1512,35 @@

SECT<
[ ]:
 
-
plt.pcolormesh(X,Y,Mcentered, cmap = 'viridis')
-plt.colorbar()
+
plt.pcolormesh(X,Y,Mcentered, cmap = 'viridis')
+plt.colorbar()
 
-ax = plt.gca()
-ax.set_xticks(np.arange(0,numCircleDirs+1,4))
+ax = plt.gca()
+ax.set_xticks(np.arange(0,numCircleDirs+1,4))
 
-labels = [r'$0$',
-          r'$\frac{\pi}{4}$',
-          r'$\frac{\pi}{2}$',
-          r'$\frac{3\pi}{4}$',
-          r'$\pi$',
-          r'$\frac{5\pi}{4}$',
-          r'$\frac{3\pi}{2}$',
-          r'$\frac{7\pi}{4}$',
-          r'$2\pi$',
-         ]
+labels = [r'$0$',
+          r'$\frac{\pi}{4}$',
+          r'$\frac{\pi}{2}$',
+          r'$\frac{3\pi}{4}$',
+          r'$\pi$',
+          r'$\frac{5\pi}{4}$',
+          r'$\frac{3\pi}{2}$',
+          r'$\frac{7\pi}{4}$',
+          r'$2\pi$',
+         ]
 
-ax.set_xticklabels(labels)
+ax.set_xticklabels(labels)
 
 
-plt.xlabel(r'$\omega$')
-plt.ylabel(r'$a$')
+plt.xlabel(r'$\omega$')
+plt.ylabel(r'$a$')
 
-plt.title(r'ECT of Fern Leaf with value centered')
+plt.title(r'ECT of Fern Leaf with value centered')
 
-fig = plt.gcf()
-fig.set_size_inches(3,2)
+fig = plt.gcf()
+fig.set_size_inches(3,2)
 
-plt.savefig('figures/Fern-ECT-centered.png', bbox_inches = 'tight')
+plt.savefig('figures/Fern-ECT-centered.png', bbox_inches = 'tight')
 
@@ -1557,7 +1555,7 @@

SECT<
[ ]:
 
-
Mcentered.sum(axis = 0)
+
Mcentered.sum(axis = 0)
 
@@ -1581,9 +1579,9 @@

SECT<
[ ]:
 
-
a = np.array([[1,2,3], [4,5,6]])
-print(a)
-np.cumsum(a,axis = 0)
+
a = np.array([[1,2,3], [4,5,6]])
+print(a)
+np.cumsum(a,axis = 0)
 
@@ -1609,7 +1607,7 @@

SECT<
[ ]:
 
-
Mint = np.cumsum(Mcentered,axis = 0)
+
Mint = np.cumsum(Mcentered,axis = 0)
 
@@ -1617,36 +1615,36 @@

SECT<
[ ]:
 
-
plt.pcolormesh(X,Y,Mint, cmap = 'viridis')
-plt.colorbar()
+
plt.pcolormesh(X,Y,Mint, cmap = 'viridis')
+plt.colorbar()
 
-ax = plt.gca()
-ax.set_xticks(np.arange(0,numCircleDirs+1,4))
+ax = plt.gca()
+ax.set_xticks(np.arange(0,numCircleDirs+1,4))
 
-labels = [r'$0$',
-          r'$\frac{\pi}{4}$',
-          r'$\frac{\pi}{2}$',
-          r'$\frac{3\pi}{4}$',
-          r'$\pi$',
-          r'$\frac{5\pi}{4}$',
-          r'$\frac{3\pi}{2}$',
-          r'$\frac{7\pi}{4}$',
-          r'$2\pi$',
-         ]
+labels = [r'$0$',
+          r'$\frac{\pi}{4}$',
+          r'$\frac{\pi}{2}$',
+          r'$\frac{3\pi}{4}$',
+          r'$\pi$',
+          r'$\frac{5\pi}{4}$',
+          r'$\frac{3\pi}{2}$',
+          r'$\frac{7\pi}{4}$',
+          r'$2\pi$',
+         ]
 
-ax.set_xticklabels(labels)
+ax.set_xticklabels(labels)
 
 
-fig = plt.gcf()
-fig.set_size_inches(3,2)
+fig = plt.gcf()
+fig.set_size_inches(3,2)
 
-plt.xlabel(r'$\omega$')
-plt.ylabel(r'$t$')
+plt.xlabel(r'$\omega$')
+plt.ylabel(r'$t$')
 
-plt.title(r'SECT of Fern Leaf')
+plt.title(r'SECT of Fern Leaf')
 
-plt.savefig('figures/Fern-SECT.png',bbox_inches = 'tight',dpi=900)
-plt.savefig('figures/Fern-SECT.eps',bbox_inches = 'tight')
+plt.savefig('figures/Fern-SECT.png',bbox_inches = 'tight',dpi=900)
+plt.savefig('figures/Fern-SECT.eps',bbox_inches = 'tight')
 
diff --git a/docs/notebooks/Matisse/Matisse_ECT.html b/docs/notebooks/Matisse/Matisse_ECT.html index 36084c2..4eb1e1f 100644 --- a/docs/notebooks/Matisse/Matisse_ECT.html +++ b/docs/notebooks/Matisse/Matisse_ECT.html @@ -1,28 +1,26 @@ + + - + 3.3. ECT on Matisse’s “The Parakeet and the Mermaid” — ect 0.1.5 documentation - + - + - - - - - - - - - - + + + + + + + + @@ -100,23 +98,23 @@

3.3. ECT on Matisse’s “The Parakeet
[1]:
 
-
#-----------------
-# Standard imports
-#-----------------
-import numpy as np # for arrays
-import matplotlib.pyplot as plt # for plotting
-from sklearn.decomposition import PCA # for PCA for normalization
-from scipy.spatial import distance_matrix
+
#-----------------
+# Standard imports
+#-----------------
+import numpy as np # for arrays
+import matplotlib.pyplot as plt # for plotting
+from sklearn.decomposition import PCA # for PCA for normalization
+from scipy.spatial import distance_matrix
 
-from os import listdir # for retrieving files from directory
-from os.path import isfile, join # for retrieving files from directory
-from sklearn.manifold import MDS # for MDS
-import pandas as pd # for loading in colors csv
+from os import listdir # for retrieving files from directory
+from os.path import isfile, join # for retrieving files from directory
+from sklearn.manifold import MDS # for MDS
+import pandas as pd # for loading in colors csv
 
-#---------------------------
-# The ECT packages we'll use
-#---------------------------
-from ect import ECT, EmbeddedGraph # for calculating ECTs
+#---------------------------
+# The ECT packages we'll use
+#---------------------------
+from ect import ECT, EmbeddedGraph # for calculating ECTs
 
@@ -126,10 +124,10 @@

3.3. ECT on Matisse’s “The Parakeet
[2]:
 
-
data_dir = "doc_source/notebooks/Matisse/outlines/" # set data directory
-file_names = [f for f in listdir(data_dir) if isfile(join(data_dir, f)) and f[-4:] == '.txt'] # create a list of file names
-file_names.sort() # sort the list of file names
-print(f"There are {len(file_names)} files in the directory") # print number of files
+
data_dir = "doc_source/notebooks/Matisse/outlines/" # set data directory
+file_names = [f for f in listdir(data_dir) if isfile(join(data_dir, f)) and f[-4:] == '.txt'] # create a list of file names
+file_names.sort() # sort the list of file names
+print(f"There are {len(file_names)} files in the directory") # print number of files
 
@@ -146,12 +144,12 @@

3.3. ECT on Matisse’s “The Parakeet
[3]:
 
-
i = 3
-shape = np.loadtxt(data_dir + file_names[i])
-# shape = normalize(shape)
-G = EmbeddedGraph()
-G.add_cycle(shape)
-G.plot(with_labels = False, node_size = 10)
+
i = 3
+shape = np.loadtxt(data_dir + file_names[i])
+# shape = normalize(shape)
+G = EmbeddedGraph()
+G.add_cycle(shape)
+G.plot(with_labels = False, node_size = 10)
 
@@ -176,8 +174,8 @@

3.3. ECT on Matisse’s “The Parakeet
[4]:
 
-
G.set_PCA_coordinates( center_type='min_max', scale_radius=1)
-G.plot(with_labels = False, node_size = 10, bounding_circle=True)
+
G.set_PCA_coordinates( center_type='min_max', scale_radius=1)
+G.plot(with_labels = False, node_size = 10, bounding_circle=True)
 
@@ -202,14 +200,14 @@

3.3. ECT on Matisse’s “The Parakeet
[5]:
 
-
num_dirs=50 # set number of directional axes
-num_thresh=50 # set number of thresholds each axis
+
num_dirs=50 # set number of directional axes
+num_thresh=50 # set number of thresholds each axis
 
-myect = ECT(num_dirs = num_dirs, num_thresh=num_thresh) # intiate ECT
-myect.set_bounding_radius(1) # set bounding radius
-myect.calculateECT(G) # calculate ECT on embedded graph
+myect = ECT(num_dirs = num_dirs, num_thresh=num_thresh) # intiate ECT
+myect.set_bounding_radius(1) # set bounding radius
+myect.calculateECT(G) # calculate ECT on embedded graph
 
-myect.plotECT() # plot ECT
+myect.plotECT() # plot ECT
 
@@ -225,15 +223,15 @@

3.3. ECT on Matisse’s “The Parakeet
[6]:
 
-
def matisse_ect(filename, num_dirs, num_thresh):
-    shape = np.loadtxt(data_dir + filename)
-    G = EmbeddedGraph()
-    G.add_cycle(shape)
-    G.set_PCA_coordinates( center_type='min_max', scale_radius=1)
-    myect = ECT(num_dirs = num_dirs, num_thresh=num_thresh)
-    myect.set_bounding_radius(1)
-    M = myect.calculateECT(G)
-    return M
+
def matisse_ect(filename, num_dirs, num_thresh):
+    shape = np.loadtxt(data_dir + filename)
+    G = EmbeddedGraph()
+    G.add_cycle(shape)
+    G.set_PCA_coordinates( center_type='min_max', scale_radius=1)
+    myect = ECT(num_dirs = num_dirs, num_thresh=num_thresh)
+    myect.set_bounding_radius(1)
+    M = myect.calculateECT(G)
+    return M
 
@@ -242,12 +240,12 @@

3.3. ECT on Matisse’s “The Parakeet
[7]:
 
-
num_dirs=50 # set number of directional axes
-num_thresh=50 # set number of thresholds each axis
+
num_dirs=50 # set number of directional axes
+num_thresh=50 # set number of thresholds each axis
 
-ect_arr = np.zeros((len(file_names),num_dirs,num_thresh))
-for i in range(len(file_names)): # for each leaf
-    ect_arr[i,:,:] = matisse_ect(file_names[i], num_dirs, num_thresh)
+ect_arr = np.zeros((len(file_names),num_dirs,num_thresh))
+for i in range(len(file_names)): # for each leaf
+    ect_arr[i,:,:] = matisse_ect(file_names[i], num_dirs, num_thresh)
 
@@ -256,9 +254,9 @@

3.3. ECT on Matisse’s “The Parakeet
[8]:
 
-
flattened_ect = ect_arr.reshape(len(file_names), num_dirs*num_thresh)
-D = distance_matrix(flattened_ect, flattened_ect)
-plt.matshow(D)
+
flattened_ect = ect_arr.reshape(len(file_names), num_dirs*num_thresh)
+D = distance_matrix(flattened_ect, flattened_ect)
+plt.matshow(D)
 
@@ -283,13 +281,13 @@

3.3. ECT on Matisse’s “The Parakeet
[9]:
 
-
n_components = 2 # select number of components
-mds = MDS(n_components=n_components, # initialize MDS
-          dissimilarity="precomputed", # we have precomputed the distance matrix
-          normalized_stress='auto',
-          random_state=5 # select random state for reproducibility
-         )
-MDS_scores = mds.fit_transform(D) # get MDS scores
+
n_components = 2 # select number of components
+mds = MDS(n_components=n_components, # initialize MDS
+          dissimilarity="precomputed", # we have precomputed the distance matrix
+          normalized_stress='auto',
+          random_state=5 # select random state for reproducibility
+         )
+MDS_scores = mds.fit_transform(D) # get MDS scores
 
@@ -297,23 +295,23 @@

3.3. ECT on Matisse’s “The Parakeet
[10]:
 
-
# read in color hexcodes
-col_df = pd.read_csv("doc_source/notebooks/Matisse/colors.csv", header=None)
+
# read in color hexcodes
+col_df = pd.read_csv("doc_source/notebooks/Matisse/colors.csv", header=None)
 
-scale_val = 6 # set scale value
-plt.figure(figsize=(8,8)) # set figure dimensions
+scale_val = 6 # set scale value
+plt.figure(figsize=(8,8)) # set figure dimensions
 
-for i in range(len(file_names)): # for each leaf
-    shape = np.loadtxt(data_dir+file_names[i]) # get the current shape
-    shape = shape - np.mean(shape, axis=0) # zero center shape
-    shape = scale_val * shape / max(np.linalg.norm(shape, axis = 1)) # scale to radius 1 then mult by scale_val
+for i in range(len(file_names)): # for each leaf
+    shape = np.loadtxt(data_dir+file_names[i]) # get the current shape
+    shape = shape - np.mean(shape, axis=0) # zero center shape
+    shape = scale_val * shape / max(np.linalg.norm(shape, axis = 1)) # scale to radius 1 then mult by scale_val
 
-    trans_sh = (shape + MDS_scores[i]) # translate shape to MDS position
+    trans_sh = (shape + MDS_scores[i]) # translate shape to MDS position
 
-    plt.fill(trans_sh[:,0], trans_sh[:,1], c=col_df[0][i], lw=0) # plot shape
-    plt.gca().set_aspect("equal")
+    plt.fill(trans_sh[:,0], trans_sh[:,1], c=col_df[0][i], lw=0) # plot shape
+    plt.gca().set_aspect("equal")
 
-plt.title("MDS of Matisse's Leaves via ECT distances")
+plt.title("MDS of Matisse's Leaves via ECT distances")
 
diff --git a/docs/notebooks/Tutorial-ECT_for_CW_Complexes.html b/docs/notebooks/Tutorial-ECT_for_CW_Complexes.html index e1da986..1717a1f 100644 --- a/docs/notebooks/Tutorial-ECT_for_CW_Complexes.html +++ b/docs/notebooks/Tutorial-ECT_for_CW_Complexes.html @@ -1,28 +1,26 @@ + + - + 3.2. Tutorial: ECT for CW complexes — ect 0.1.5 documentation - + - + - - - - - - - - - - + + + + + + + + @@ -96,8 +94,8 @@

3.2. Tutorial: ECT for CW complexes
[31]:
 

- - - - - - - - - - -
myect.plotSECT()
+
myect.plotSECT()
 
diff --git a/docs/notebooks/Tutorial-ECT_for_embedded_graphs.html b/docs/notebooks/Tutorial-ECT_for_embedded_graphs.html index f325133..2e7e807 100644 --- a/docs/notebooks/Tutorial-ECT_for_embedded_graphs.html +++ b/docs/notebooks/Tutorial-ECT_for_embedded_graphs.html @@ -1,28 +1,26 @@ + + - + 3.1. Tutorial : ECT for embedded graphs — ect 0.1.5 documentation - + - + - - - - - - - - - - + + + + + + + + @@ -101,11 +99,11 @@

3.1. Tutorial : ECT for embedded graphs<
[51]:
 
-
- - - - - - - -
# Here's an example in another direction.
-G.plot(color_nodes_theta=np.pi/2)
+
# Here's an example in another direction.
+G.plot(color_nodes_theta=np.pi/2)
 
@@ -366,13 +364,13 @@

3.1.2. Computing the ECT of
[9]:
 

-
myect = ECT(num_dirs = 16, num_thresh=20)
+
myect = ECT(num_dirs = 16, num_thresh=20)
 
-# The ECT object will automatically choose the directions.
-print(f'Directions chosen are: {myect.thetas}')
+# The ECT object will automatically choose the directions.
+print(f'Directions chosen are: {myect.thetas}')
 
-# However, because a bounding radius hasn't been chosen yet, the thresholds are not yet set.
-print(f'Thresholds chosen are: {myect.threshes}')
+# However, because a bounding radius hasn't been chosen yet, the thresholds are not yet set.
+print(f'Thresholds chosen are: {myect.threshes}')
 
@@ -392,12 +390,12 @@

3.1.2. Computing the ECT of
[10]:
 

-
myect.set_bounding_radius(1.2 * G.get_bounding_radius())
+
myect.set_bounding_radius(1.2 * G.get_bounding_radius())
 
-print(f'Internally set radius is: {myect.bound_radius}')
+print(f'Internally set radius is: {myect.bound_radius}')
 
-# Now the thresholds are set.
-print(f'Thresholds chosen are: {myect.threshes}')
+# Now the thresholds are set.
+print(f'Thresholds chosen are: {myect.threshes}')
 
@@ -418,7 +416,7 @@

3.1.2. Computing the ECT of
[12]:
 

-
myect.calculateECC(G, np.pi/2,bound_radius=True)
+
myect.calculateECC(G, np.pi/2,bound_radius=True)
 
@@ -436,7 +434,7 @@

3.1.2. Computing the ECT of
[13]:
 

-
myect.plotECC(G, -np.pi/2)
+
myect.plotECC(G, -np.pi/2)
 
@@ -452,16 +450,16 @@

3.1.2. Computing the ECT of
[14]:
 

-
- -
myect.plot('SECT')
+
myect.plot('SECT')
 
diff --git a/docs/py-modindex.html b/docs/py-modindex.html index 252ca0c..f4231ca 100644 --- a/docs/py-modindex.html +++ b/docs/py-modindex.html @@ -1,3 +1,5 @@ + + @@ -5,20 +7,16 @@ Python Module Index — ect 0.1.5 documentation - + - - - - - - - - + + + + + + diff --git a/docs/search.html b/docs/search.html index 0711457..8be8e39 100644 --- a/docs/search.html +++ b/docs/search.html @@ -1,3 +1,5 @@ + + @@ -5,21 +7,17 @@ Search — ect 0.1.5 documentation - + - - - - - - - - + + + + + + diff --git a/docs/searchindex.js b/docs/searchindex.js index dfb8fbe..df94c7b 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["citing", "contributing", "ect_on_graphs", "embed_cw", "embed_graph", "index", "installation", "license", "modules", "notebooks/CodingFiguresFern", "notebooks/Matisse/Matisse_ECT", "notebooks/Tutorial-ECT_for_CW_Complexes", "notebooks/Tutorial-ECT_for_embedded_graphs", "tutorials"], "filenames": ["citing.rst", "contributing.rst", "ect_on_graphs.md", "embed_cw.md", "embed_graph.md", "index.rst", "installation.rst", "license.md", "modules.rst", "notebooks/CodingFiguresFern.ipynb", "notebooks/Matisse/Matisse_ECT.ipynb", "notebooks/Tutorial-ECT_for_CW_Complexes.ipynb", "notebooks/Tutorial-ECT_for_embedded_graphs.ipynb", "tutorials.rst"], "titles": ["6. Citing", "4. Contributing to the ect Package", "2.3. ECT on Graphs", "2.2. Embedded CW complex", "2.1. Embedded graphs", "ect: Euler Characteristic Transform in Python", "1. Installation", "5. GPL-3.0 License", "2. Table of Contents", "Figure generation for Invitation to the ECT", "3.3. ECT on Matisse\u2019s \u201cThe Parakeet and the Mermaid\u201d", "3.2. Tutorial: ECT for CW complexes", "3.1. Tutorial : ECT for embedded graphs", "3. Tutorials"], "terms": {"To": [0, 1, 6, 9, 12], "ect": [0, 3, 4, 8, 13], "pleas": [0, 1, 7], "us": [0, 1, 2, 4, 5, 7, 9, 10, 11, 12], "follow": [0, 1, 2, 6, 9, 11, 12], "public": [0, 7], "elizabeth": [0, 5, 9], "munch": [0, 1, 5, 9, 10], "an": [0, 1, 2, 3, 4, 5, 9, 10, 11, 12], "invit": [0, 5], "euler": [0, 2, 9, 11, 12], "characterist": [0, 2, 9, 11, 12], "transform": [0, 2, 9, 11, 12], "arxiv": [0, 5, 9], "2310": [0, 5, 9], "10395": [0, 5, 9], "2023": [0, 5, 9], "note": [1, 2, 3, 11, 12], "thi": [1, 2, 4, 5, 9, 10, 11, 12], "i": [1, 2, 3, 4, 5, 9, 10, 11, 12], "draft": 1, "subject": 1, "chang": [1, 9], "prerequisit": 1, "set": [1, 2, 4, 9, 10, 11, 12], "up": [1, 3, 4, 12], "develop": 1, "environ": 1, "fork": [1, 9], "repositori": [1, 6], "clone": [1, 5, 6], "It": 1, "essenti": 1, "project": [1, 5, 9, 10], "have": [1, 2, 5, 6, 9, 10, 11, 12], "well": [1, 4], "clean": 1, "readabl": 1, "The": [1, 2, 3, 4, 5, 7, 9, 11, 12, 13], "should": [1, 2, 3, 4], "when": [1, 2, 11, 12], "pep": 1, "8": [1, 9, 10, 12], "guid": 1, "python": [1, 6], "docstr": 1, "given": [1, 2, 3, 4, 11, 12], "below": [1, 2], "function": [1, 2, 3, 4, 9, 11, 12], "class": [1, 2, 3, 4, 10, 11, 12], "sphinx": 1, "system": 1, "gener": [1, 3, 4, 7, 11], "alwai": 1, "includ": [1, 4, 5, 11], "new": [1, 3, 4], "featur": 1, "bug": 1, "fix": [1, 9, 12], "There": [1, 10], "ar": [1, 3, 4, 9, 10, 11, 12], "two": [1, 10], "thing": 1, "do": [1, 3, 4, 5, 9], "first": [1, 4], "which": [1, 3, 4, 12], "autogener": 1, "doubt": 1, "write": [1, 12], "too": 1, "much": 1, "second": [1, 4, 9], "doc_sourc": [1, 10], "directori": [1, 10], "restructuredtext": 1, "also": [1, 3, 4, 11, 12], "support": 1, "file": [1, 5, 10], "markdown": 1, "although": 1, "some": [1, 12], "deal": [1, 9], "content": 1, "so": [1, 3, 11, 12], "": [1, 4, 11, 12, 13], "bit": [1, 10, 11, 12], "mix": 1, "moment": [1, 9], "everyth": 1, "doc": 1, "folder": 1, "delet": 1, "overwritten": 1, "your": [1, 9], "work": [1, 3, 4], "lost": 1, "assum": [1, 3, 11, 12], "todo": [1, 3, 4, 12], "add": [1, 3, 4, 11], "instal": [1, 9], "list": [1, 3, 4, 10, 11, 12], "correctli": 1, "you": [1, 4, 5, 6, 9, 10, 11, 12], "can": [1, 2, 4, 5, 6, 7, 9, 10, 11, 12], "run": [1, 6, 12], "command": [1, 6, 11, 12], "from": [1, 2, 3, 4, 6, 9, 10, 11, 12], "top": 1, "level": 1, "make": [1, 2, 3, 4, 6, 10, 11, 12], "html": 1, "view": 1, "open": 1, "index": [1, 9], "browser": 1, "exampl": [1, 3, 4, 10, 11, 12], "indent": 1, "sinc": [1, 4, 12], "rst": 1, "picki": 1, "about": 1, "def": [1, 9, 10], "sort_edg": [1, 4], "self": [1, 2, 4], "theta": [1, 2, 3, 4, 9, 11, 12], "return_g": [1, 3, 4], "fals": [1, 2, 3, 4, 9, 10, 12], "sort": [1, 3, 4, 10], "edg": [1, 2, 3, 4, 9, 11], "graph": [1, 3, 5, 8, 10, 11, 13], "accord": [1, 3, 4], "math": 1, "g_": [1, 3, 4, 11, 12], "omega": [1, 3, 4, 9, 11, 12], "e": [1, 3, 4, 12], "max": [1, 3, 4, 9, 10], "v": [1, 3, 4, 11, 12], "mid": [1, 3, 4], "direct": [1, 2, 3, 4, 10, 11, 12], "0": [1, 2, 3, 4, 9, 10, 11, 12], "2": [1, 2, 3, 4, 9, 10, 11, 12], "pi": [1, 2, 3, 4, 9, 11, 12], "paramet": [1, 2, 3, 4], "float": [1, 2, 3, 4], "angl": [1, 2, 3, 4], "bool": [1, 2, 3, 4], "whether": [1, 2, 3, 4], "return": [1, 2, 3, 4, 9, 10, 11, 12], "g": [1, 2, 3, 4, 9, 10, 11, 13], "valu": [1, 3, 4, 9, 10, 11, 12], "along": [1, 3, 4, 5], "A": [1, 2, 3, 4, 5, 11, 12], "increas": [1, 3, 4], "order": [1, 2, 3, 4], "If": [1, 2, 3, 4, 12], "true": [1, 2, 3, 4, 9, 10, 11, 12], "dictionari": [1, 3, 4, 12], "vertex_nam": [1, 3, 4], "func_valu": [1, 3, 4], "pytest": 1, "framework": 1, "locat": 1, "standard": [1, 10], "unittest": 1, "habit": 1, "lot": 1, "simpl": [1, 3, 4], "better": [1, 12], "mani": [1, 11], "than": [1, 12], "few": 1, "written": [1, 5, 10], "wai": 1, "thei": [1, 4], "quickli": 1, "easili": [1, 12], "easier": [1, 11], "other": [1, 11], "review": 1, "take": [1, 11, 12], "look": [1, 3, 11], "exist": [1, 4], "must": [1, 2, 9, 12], "prefix": 1, "test_": 1, "For": [1, 5, 10], "call": [1, 2, 12], "my_funct": 1, "would": 1, "test_my_funct": 1, "find": [1, 4], "post": 1, "github": [1, 5, 6], "tracker": 1, "provid": 1, "inform": 1, "possibl": 1, "version": [1, 5, 6, 7], "oper": [1, 9], "ani": [1, 11], "relev": 1, "like": [1, 3, 4], "contributor": 1, "creat": [1, 3, 4, 10], "branch": 1, "main": 1, "protect": 1, "abl": 1, "push": 1, "directli": [1, 5, 6, 12], "onc": [1, 11, 12], "readi": 1, "discuss": 1, "descript": 1, "templat": 1, "fill": [1, 3, 10], "out": [1, 9, 10], "help": [1, 4], "pip": [1, 5, 6, 9], "number": [1, 2, 4, 9, 10, 12], "pyproject": 1, "toml": 1, "updat": [1, 9], "sure": [1, 3, 6, 11], "match": 1, "conf": 1, "py": [1, 9], "ensur": [1, 9], "correct": 1, "Be": 1, "all": [1, 2, 4, 9, 10, 11, 12], "befor": [1, 2, 6, 7, 9], "commit": 1, "date": 1, "pass": [1, 3, 11, 12], "need": [1, 11], "approv": 1, "liz": [1, 5, 10], "merg": 1, "acknowledg": [1, 13], "futur": [1, 9], "plan": 1, "contact": 1, "ect_graph": 2, "num_dir": [2, 10, 11, 12], "num_thresh": [2, 10, 11, 12], "bound_radiu": [2, 11, 12], "none": [2, 3, 4, 10, 12], "sourc": [2, 3, 4, 5, 6], "calcul": [2, 3, 4, 9, 10, 11, 12], "input": [2, 11, 12], "embeddedgraph": [2, 3, 4, 8, 10, 11, 12], "embeddedcw": [2, 3, 8, 11], "result": 2, "matrix": [2, 4, 9, 10, 11, 12], "where": [2, 3, 9, 11, 12], "entri": 2, "m": [2, 9, 10, 12], "j": [2, 9], "chi": [2, 9, 12], "k_": [2, 9], "a_i": 2, "omega_j": 2, "ith": 2, "thresh": [2, 9, 12], "attribut": [2, 4, 12], "int": [2, 4, 9], "consid": [2, 4], "threshold": [2, 10, 11, 12], "either": [2, 4], "posit": [2, 4, 9, 10], "radiu": [2, 4, 9, 10, 11, 12], "bound": [2, 3, 4, 10, 11, 12], "circl": [2, 4, 9, 12], "ect_matrix": 2, "np": [2, 4, 9, 10, 11, 12], "arrai": [2, 4, 9, 10, 11, 12], "store": [2, 10, 12], "sect_matrix": [2, 12], "sect": [2, 11, 13], "__init__": [2, 3, 4], "construct": [2, 13], "necessari": [2, 12], "object": [2, 3, 4, 12], "set_bounding_radiu": [2, 10, 11, 12], "manual": 2, "center": [2, 3, 4, 9, 10, 12], "origin": [2, 3, 4, 9, 10, 12], "get_radius_and_thresh": 2, "intern": [2, 11, 12], "get": [2, 9, 10, 12], "avail": [2, 5], "ii": 2, "otherwis": 2, "postiv": 2, "r": [2, 9, 11, 12], "ecc": [2, 11], "comput": [2, 4, 5, 10, 11, 13], "default": [2, 12], "get_ect": [2, 12], "get_sect": 2, "calculateecc": [2, 11, 12], "return_count": 2, "coordin": [2, 3, 4, 10, 12], "each": [2, 4, 9, 10, 12], "vertex": [2, 3, 4, 11, 12], "nx": [2, 4, 12], "radian": 2, "curv": [2, 12], "count": [2, 4], "vertic": [2, 3, 4, 9, 11, 12], "face": [2, 3, 11], "calculateect": [2, 10, 11, 12], "compute_sect": [2, 12], "a_j": 2, "omega_i": 2, "jth": 2, "after": 2, "doesn": 2, "t": [2, 9, 12], "method": [2, 4, 12], "repres": [2, 3, 4], "size": [2, 9, 12], "calculatesect": [2, 12], "smooth": [2, 12], "plotecc": [2, 11, 12], "draw_count": 2, "plot": [2, 3, 4, 9, 10, 11, 12], "specif": [2, 4, 12], "cw": [2, 8, 13], "complex": [2, 5, 8, 9, 13], "draw": [2, 3], "vari": 2, "across": 2, "plotect": [2, 10, 11, 12], "x": [2, 4, 9, 11, 12], "axi": [2, 9, 10, 11], "y": [2, 4, 9, 11], "plotsect": [2, 11], "plot_typ": 2, "type": [2, 3, 4], "str": [2, 4, 9], "embed_cw": 3, "straight": 3, "line": [3, 9], "we": [3, 4, 10, 11, 12], "1": [3, 4, 9, 10, 11, 12], "skeleton": 3, "fact": 3, "full": [3, 7, 12], "cell": [3, 9], "interior": [3, 11], "shape": [3, 9, 10, 12], "outlin": [3, 10], "its": [3, 11], "boundari": 3, "around": [3, 4, 9, 11], "howev": [3, 11, 12], "still": 3, "differ": [3, 9], "might": [3, 4], "strang": 3, "doe": [3, 4, 11, 12], "yet": [3, 11, 12], "check": [3, 11], "valid": 3, "cycl": [3, 4], "region": [3, 11], "plane": 3, "initi": [3, 4, 10, 11, 12], "empti": [3, 4, 11], "add_from_embedded_graph": 3, "embedded_graph": 3, "add_fac": [3, 11], "want": [3, 4, 12], "legit": 3, "addit": [3, 11], "g_omega_fac": [3, 11], "equal": [3, 4, 10], "dict": [3, 4], "sort_fac": 3, "sigma": [3, 11], "plot_fac": 3, "ax": [3, 4, 9, 10, 11, 12], "kwarg": [3, 4], "matplotlib": [3, 5, 9, 10, 12], "figur": [3, 10], "keyword": 3, "argument": 3, "bounding_circl": [3, 4, 10, 11, 12], "color_nodes_theta": [3, 4, 11, 12], "create_example_cw": [3, 8, 11], "center_typ": [3, 4, 10], "min_max": [3, 4, 10], "could": 3, "mean": [3, 4, 9, 10], "embed_graph": 4, "2d": [4, 5, 10, 12], "networkx": [4, 5, 12], "map": [4, 12], "add_nod": [4, 11, 12], "name": [4, 10], "assign": 4, "via": [4, 10], "next_vert_nam": 4, "hashabl": 4, "being": 4, "ad": [4, 11], "reset_po": 4, "option": 4, "reset": 4, "node": [4, 11, 12], "base": [4, 10, 11], "add_nodes_from": 4, "multipl": 4, "them": 4, "num_vert": 4, "re": [4, 10], "integ": [4, 12], "just": [4, 9, 10, 11], "one": [4, 10, 11], "letter": 4, "increment": 4, "alphabet": 4, "reach": 4, "z": [4, 9, 12], "aa": 4, "zz": 4, "aaa": 4, "etc": [4, 5], "next": 4, "sequenc": 4, "add_edg": [4, 12], "u": 4, "between": [4, 10], "add_cycl": [4, 10], "coord_matrix": 4, "row": [4, 9], "connect": 4, "appear": [4, 9], "close": 4, "numpi": [4, 5, 9, 10, 11, 12], "n": [4, 9], "get_coordin": 4, "whose": 4, "tupl": 4, "set_coordin": 4, "rais": 4, "valueerror": 4, "get_bounding_box": 4, "box": 4, "minimum": [4, 11], "maximum": 4, "get_cent": 4, "done": [4, 12], "averag": [4, 9, 12], "coordiant": 4, "ndarrai": 4, "get_bounding_radiu": [4, 11, 12], "rel": 4, "get_centered_coordin": 4, "min": [4, 9, 10], "set_centered_coordin": 4, "warn": 4, "overwrit": [4, 12], "get_scaled_coordin": 4, "scale": [4, 10], "fit": [4, 10], "disk": 4, "set_scaled_coordin": 4, "get_pca_coordin": 4, "pca": [4, 10], "normal": [4, 9, 10], "set_pca_coordin": [4, 10], "scale_radiu": [4, 10], "coars": 4, "align": [4, 10], "zero": [4, 10], "g_omega": [4, 11, 12], "defin": [4, 12], "langl": [4, 12], "texttt": 4, "po": [4, 9], "rangl": [4, 12], "g_omega_edg": [4, 11], "sort_vertic": 4, "eventu": [4, 5], "alreadi": [4, 11, 12], "lower_edg": 4, "lower": [4, 9], "v_list": 4, "vector": [4, 12], "2pi": [4, 9], "bounding_center_typ": 4, "with_label": [4, 10], "drawn": 4, "Then": [4, 11, 12], "color": [4, 9, 10, 11, 12], "label": [4, 9], "rescale_to_unit_disk": [4, 12], "preserve_cent": [4, 12], "rescal": [4, 12], "within": 4, "maintain": 4, "current": [4, 10], "point": [4, 11, 12], "instanc": 4, "chain": 4, "ha": 4, "ident": 4, "create_example_graph": [4, 8, 12], "test": [4, 9], "tool": 5, "embed": [5, 8, 10, 13], "modul": 5, "contribut": 5, "cite": 5, "right": [5, 9, 12], "now": [5, 9, 10, 12], "stuff": 5, "goal": 5, "voxel": 5, "higher": [5, 6], "dimension": [5, 10], "simplici": 5, "here": [5, 10, 11, 12], "more": [5, 11, 12], "see": [5, 11, 12], "munchlab": [5, 6], "io": 5, "jupyt": [5, 12], "notebook": [5, 9, 10, 12], "found": [5, 7], "code": [5, 9, 10, 12], "com": [5, 6], "numba": 5, "packag": [5, 6, 10, 12], "altern": [5, 6], "repo": 5, "git": [5, 6], "cd": [5, 6], "wa": [5, 9, 10, 11, 12], "her": 5, "research": 5, "group": 5, "collabor": 5, "peopl": 5, "who": 5, "sarah": 5, "mcguir": 5, "under": 5, "gplv3": 5, "detail": [5, 12], "websit": 5, "email": 5, "3": [6, 9, 10, 11, 12], "7": [6, 9, 10, 11, 12], "termin": 6, "http": 6, "simpli": 6, "text": [7, 9, 10, 12], "agreement": 7, "gnu": 7, "read": [7, 10], "carefulli": 7, "softwar": 7, "paper": [9, 12], "maa": 9, "monthli": 9, "2024": 9, "import": [9, 10, 11, 12], "pyplot": [9, 10, 12], "plt": [9, 10, 12], "teaspoon": 9, "rcparam": 9, "usetex": 9, "font": 9, "famili": 9, "helvetica": 9, "serif": 9, "__version__": 9, "39": [9, 10, 11, 12], "4": [9, 10, 12], "colormap": 9, "transpar": 9, "issu": 9, "cmap_viridi": 9, "cm": 9, "viridi": 9, "set_bad": 9, "white": 9, "cmap_binari": 9, "tab20b": 9, "f": [9, 10, 11, 12], "imread": 9, "leafbw": 9, "tif": 9, "255": 9, "f_finit": 9, "copi": 9, "2000": 9, "ones_lik": 9, "print": [9, 10, 11, 12], "nan": 9, "matshow": [9, 10], "cmap": 9, "fig": 9, "gcf": 9, "set_raster": 9, "set_figwidth": 9, "5": [9, 10, 11, 12], "titl": [9, 10], "savefig": 9, "png": 9, "dpi": 9, "300": 9, "ep": 9, "facecolor": 9, "bbox_inch": 9, "tight": 9, "pdf": 9, "makefernp": 9, "maxrow": 9, "maxcol": 9, "co": [9, 12], "sin": [9, 12], "col": 9, "meshgrid": 9, "rang": [9, 10], "floor": 9, "fmask": 9, "dt": [9, 12], "multipli": 9, "colorbar": 9, "fraction": 9, "035": 9, "pad": 9, "04": 9, "demet": 9, "dir": 9, "misc": 9, "time": [9, 12], "tifffil": 9, "tf": 9, "leaf_fil": 9, "leaf_img": 9, "subplot": 9, "figsiz": [9, 10], "20": [9, 12], "6": [9, 10, 12], "imshow": 9, "grai": 9, "200": 9, "250": 9, "280": 9, "310": 9, "c": [9, 10, 11, 12], "red": 9, "lw": [9, 10], "tic": 9, "perf_count": 9, "leaf": [9, 10], "cubicalcomplex": 9, "complexifi": 9, "toc": 9, "4f": 9, "ncubic": 9, "made": 9, "format": 9, "summari": 9, "0271": 9, "cubic": 9, "53832": 9, "99196": 9, "45167": 9, "squar": 9, "197": 9, "271": 9, "57746322": 9, "89": 9, "89517387": 9, "90": 9, "270": 9, "88": 9, "259": 9, "42253678": 9, "44": 9, "10482613": 9, "43": 9, "260": 9, "45": 9, "53828": 9, "53829": 9, "53831": 9, "53830": 9, "9": [9, 10, 12], "53821": 9, "53822": 9, "53826": 9, "53827": 9, "53825": 9, "height": 9, "sum": 9, "128": 9, "46877882": 9, "127": 9, "76167204": 9, "152": 9, "25261331": 9, "9597201": 9, "scatter": 9, "magma": 9, "32": [9, 11], "lt": [9, 10, 11, 12], "0x73f180e96250": 9, "gt": [9, 10, 11, 12], "177": 9, "279": 9, "vmin": 9, "150": [9, 10], "vmax": 9, "gca": [9, 10], "midx": 9, "set_xtick": 9, "100": [9, 11], "arang": 9, "set_xticklabel": 9, "midi": 9, "set_ytick": 9, "set_yticklabel": 9, "fern": 9, "1000": 9, "0x73f16b1855d0": 9, "without": 9, "thetastr": 9, "thetastrsfil": 9, "pi_over_4": 9, "3pi_over_4": 9, "3pi_over_2": 9, "7pi_over_4": 9, "enumer": 9, "im": 9, "xaxi": 9, "set_ticks_posit": 9, "bottom": 9, "f_": [9, 12], "get_size_inch": 9, "height_fig": 9, "fern_": 9, "_nocolorbar": 9, "7853981633974483": 9, "356194490192345": 9, "71238898038469": 9, "497787143782138": 9, "03": 9, "set_figheight": 9, "54478873": 9, "remov": 9, "onlycolorbar": 9, "5497": 9, "makefernpicthreshold": 9, "both": [9, 12], "fmaskbelow": 9, "fmaskabov": 9, "dtdown": 9, "dtup": 9, "why": 9, "backward": 9, "someth": [9, 11], "fight": 9, "els": 9, "50": [9, 10], "abov": [9, 12], "theshold": 9, "tick_param": 9, "labelrot": 9, "25": 9, "thresh_size_fig": 9, "fern_3pi_over_4_thresh": 9, "clf": 9, "sharei": 9, "set_titl": 9, "fern_3pi_over_4_allthresh": 9, "numthresh": 9, "64": 9, "linspac": 9, "outecc": 9, "axvlin": 9, "grei": 9, "linestyl": 9, "step": 9, "frac": [9, 12], "xlabel": 9, "ylabel": 9, "k_a": 9, "set_size_inch": 9, "fern_3pi_over_4_ecc": 9, "numcircledir": 9, "circledir": 9, "num": 9, "endpoint": 9, "0625": 9, "125": 9, "1875": 9, "3125": 9, "375": 9, "4375": 9, "5625": 9, "625": 9, "6875": 9, "75": [9, 11], "8125": 9, "875": 9, "9375": 9, "choos": [9, 12], "stop": [9, 11], "ect_preprocess": 9, "overallmin": 9, "overallmax": 9, "omegavec": 9, "pixel": 9, "implicitli": 9, "285": 9, "68893688291087": 9, "line2d": 9, "0x73f16b12de10": 9, "end": [9, 12], "omegai": 9, "redraw": 9, "mod": 9, "except": 9, "tmp": 9, "ipykernel_57600": 9, "1470381530": 9, "26": [9, 11], "deprecationwarn": 9, "convers": 9, "ndim": 9, "scalar": 9, "deprec": 9, "error": 9, "extract": [9, 10], "singl": [9, 11], "element": 9, "perform": 9, "pcolormesh": 9, "fern_ect": 9, "900": 9, "10": [9, 10, 12], "bigval": 9, "16": [9, 12], "11": 9, "19": 9, "mpl_toolkit": 9, "mplot3d": 9, "axes3d": 9, "ipympl": 9, "widget": 9, "grid": 9, "color_dimens": 9, "desir": 9, "fourth": 9, "dimens": [9, 10], "minn": 9, "maxx": 9, "norm": [9, 10], "scalarmapp": 9, "set_arrai": 9, "fcolor": 9, "to_rgba": 9, "24": 9, "27318197": 9, "54636394": 9, "81954591": 9, "09272788": 9, "36590985": 9, "63909182": 9, "91227379": 9, "18545576": 9, "45863773": 9, "7318197": 9, "00500167": 9, "27818364": 9, "55136561": 9, "82454758": 9, "09772955": 9, "37091152": 9, "64409349": 9, "91727546": 9, "19045743": 9, "4636394": 9, "73682137": 9, "01000334": 9, "28318531": 9, "equat": 9, "h": [9, 11], "cos\u03b8": 9, "k": [9, 11], "sin\u03b8": 9, "ordin": 9, "\u03b8": 9, "360": 9, "add_subplot": 9, "111": 9, "3d": [9, 10], "plot_surfac": 9, "orang": 9, "surf": 9, "linewidth": 9, "set_edgecolor": 9, "set_axis_off": 9, "fern_ect_cylind": 9, "17": 9, "193": 9, "98518858": 9, "190": 9, "40235323": 9, "186": 9, "81951788": 9, "183": 9, "23668253": 9, "179": 9, "65384718": 9, "176": 9, "07101183": 9, "172": 9, "48817648": 9, "168": 9, "90534113": 9, "165": 9, "32250578": 9, "161": 9, "73967042": 9, "158": 9, "15683507": 9, "154": 9, "57399972": 9, "99116437": 9, "147": 9, "40832902": 9, "143": 9, "82549367": 9, "140": 9, "24265832": 9, "136": 9, "65982297": 9, "133": 9, "07698762": 9, "129": 9, "49415227": 9, "91131692": 9, "122": 9, "32848157": 9, "118": 9, "74564621": 9, "115": 9, "16281086": 9, "57997551": 9, "107": 9, "99714016": 9, "104": 9, "41430481": 9, "83146946": 9, "97": 9, "24863411": 9, "93": 9, "66579876": 9, "08296341": 9, "86": 9, "50012806": 9, "82": 9, "91729271": 9, "79": 9, "33445735": 9, "751622": 9, "72": 9, "16878665": 9, "68": 9, "5859513": 9, "65": 9, "00311595": 9, "61": 9, "4202806": 9, "57": [9, 12], "83744525": 9, "54": [9, 12], "2546099": 9, "67177455": 9, "47": [9, 11], "0889392": 9, "50610385": 9, "92326849": 9, "36": [9, 11], "34043314": 9, "75759779": 9, "29": [9, 11], "17476244": 9, "59192709": 9, "22": 9, "00909174": 9, "18": 9, "42625639": 9, "14": [9, 12], "84342104": 9, "26058569": 9, "67775034": 9, "09491499": 9, "51207963": 9, "07075572": 9, "65359107": 9, "23642642": 9, "13": [9, 12], "81926177": 9, "40209712": 9, "98493247": 9, "56776782": 9, "28": 9, "15060317": 9, "31": [9, 11], "73343852": 9, "35": 9, "31627387": 9, "38": 9, "89910923": 9, "42": 9, "48194458": 9, "46": [9, 11], "06477993": 9, "49": 9, "64761528": 9, "53": [9, 12], "23045063": 9, "56": 9, "81328598": 9, "60": [9, 11, 12], "39612133": 9, "63": 9, "97895668": 9, "67": 9, "56179203": 9, "71": 9, "14462738": 9, "74": 9, "72746273": 9, "78": 9, "31029808": 9, "81": 9, "89313344": 9, "85": 9, "47596879": 9, "05880414": 9, "92": 9, "64163949": 9, "96": 9, "22447484": 9, "99": [9, 11], "80731019": 9, "103": 9, "39014554": 9, "106": 9, "97298089": 9, "110": 9, "55581624": 9, "114": 9, "13865159": 9, "117": 9, "72148694": 9, "121": 9, "3043223": 9, "124": 9, "88715765": 9, "469993": 9, "132": 9, "05282835": 9, "135": 9, "6356637": 9, "139": 9, "21849905": 9, "142": 9, "8013344": 9, "146": 9, "38416975": 9, "149": 9, "9670051": 9, "153": 9, "54984045": 9, "157": 9, "1326758": 9, "160": 9, "71551116": 9, "59": [9, 11], "402097119801482": 9, "83": 9, "circle_dir": 9, "len": [9, 10], "per": 9, "15": [9, 12], "fontsiz": 9, "THe": 9, "crawford2019": 9, "meng22": 9, "avgoveromega": 9, "mcenter": 9, "33": 9, "01": 9, "95": 9, "91": 9, "34": [9, 10], "69": 9, "07": 9, "87": 9, "98": 9, "94": 9, "51": [9, 12], "05": 9, "101": 9, "12": [9, 12], "09992015e": 9, "23066002e": 9, "07718279e": 9, "00000000e": 9, "00": 9, "27613475e": 9, "48538992e": 9, "96331881e": 9, "03064257e": 9, "71800377e": 9, "78754838e": 9, "33582034e": 9, "12336873e": 9, "42854650e": 9, "56017471e": 9, "35074240e": 9, "25339739e": 9, "56541488e": 9, "54223334e": 9, "40758582e": 9, "66116035e": 9, "87059265e": 9, "29913915e": 9, "53175300e": 9, "cumsum": 9, "mint": 9, "go": 10, "give": [10, 12], "classifi": 10, "cutout": 10, "henri": 10, "1952": 10, "sklearn": 10, "decomposit": 10, "scipi": 10, "spatial": 10, "distance_matrix": 10, "o": 10, "listdir": 10, "retriev": 10, "path": 10, "isfil": 10, "join": 10, "manifold": 10, "md": 10, "panda": 10, "pd": 10, "load": 10, "csv": 10, "ll": 10, "ve": 10, "taken": 10, "care": [10, 11], "preprocess": 10, "advanc": 10, "imag": 10, "download": 10, "zip": 10, "data_dir": 10, "data": 10, "file_nam": 10, "txt": 10, "leav": 10, "loadtxt": 10, "node_s": 10, "ball": 10, "eas": 10, "comparison": 10, "And": 10, "myect": [10, 11, 12], "intiat": 10, "let": [10, 11], "loader": 10, "matisse_ect": 10, "filenam": 10, "ect_arr": 10, "distanc": 10, "l_2": 10, "flattened_ect": 10, "reshap": 10, "d": [10, 11, 12], "axesimag": 10, "0x303d56d40": 10, "visual": [10, 12], "purpos": 10, "multi": 10, "n_compon": 10, "select": 10, "compon": 10, "dissimilar": 10, "precomput": 10, "normalized_stress": 10, "auto": 10, "random_st": 10, "random": 10, "state": 10, "reproduc": 10, "mds_score": 10, "fit_transform": 10, "score": 10, "hexcod": 10, "col_df": 10, "read_csv": 10, "header": 10, "scale_v": 10, "linalg": 10, "mult": 10, "trans_sh": 10, "translat": 10, "set_aspect": 10, "dan": 10, "chitwood": 10, "walk": [11, 12], "through": [11, 12], "how": 11, "build": 11, "same": [11, 12], "abil": 11, "further": 11, "b": [11, 12], "add_edges_from": 11, "set_mean_centered_coordin": [11, 12], "interest": 11, "complic": 11, "built": [11, 12], "mean_cent": 11, "max_": 11, "show": 11, "triangl": 11, "kdc": 11, "vert_g": 11, "edge_g": 11, "face_g": 11, "round": 11, "As": 11, "decid": 11, "80": 11, "In": 11, "case": 11, "interv": 11, "2r": [11, 12], "But": 11, "cours": 11, "immedi": 11, "48": 11, "similarli": 11, "control": 11, "58": [11, 12], "been": [11, 12], "9529463851622046": 11, "ask": 11, "know": 12, "what": 12, "thorough": 12, "treatment": 12, "our": 12, "undirect": 12, "mathbb": 12, "access": 12, "becaus": 12, "rotat": 12, "aspect": 12, "often": 12, "shift": 12, "3333333333333335": 12, "6666666666666665": 12, "actual": 12, "4197140881138655": 12, "unit": 12, "specifi": 12, "convert": 12, "dot": 12, "product": 12, "shown": 12, "11785113019775861": 12, "11785113019775795": 12, "5892556509887904": 12, "2963624321753375": 12, "532064692570853": 12, "11785113019775761": 12, "anoth": 12, "begin": 12, "func": 12, "mapsto": 12, "infti": 12, "automat": 12, "chosen": 12, "hasn": 12, "39269908": 12, "78539816": 12, "17809725": 12, "57079633": 12, "96349541": 12, "35619449": 12, "74889357": 12, "14159265": 12, "53429174": 12, "92699082": 12, "3196899": 12, "71238898": 12, "10508806": 12, "49778714": 12, "89048623": 12, "bigger": 12, "pictur": 12, "1036569057366385": 12, "10365691": 12, "67169302": 12, "23972914": 12, "80776525": 12, "37580137": 12, "94383748": 12, "5118736": 12, "07990971": 12, "64794583": 12, "21598194": 12, "output": 12, "correspond": 12, "fly": 12, "save": 12, "unlik": 12, "earlier": 12, "equival": 12, "overlin": 12, "_": 12, "int_": 12, "left": 12, "da": 12, "intro": 12, "m_sect": 12, "technic": 12, "don": 12, "instead": 12, "matiss": 13, "parakeet": 13, "mermaid": 13}, "objects": {"ect": [[2, 0, 0, "-", "ect_graph"], [3, 0, 0, "-", "embed_cw"], [4, 0, 0, "-", "embed_graph"]], "ect.ect_graph": [[2, 1, 1, "", "ECT"]], "ect.ect_graph.ECT": [[2, 2, 1, "", "__init__"], [2, 2, 1, "", "calculateECC"], [2, 2, 1, "", "calculateECT"], [2, 2, 1, "", "calculateSECT"], [2, 2, 1, "", "get_ECT"], [2, 2, 1, "", "get_SECT"], [2, 2, 1, "", "get_radius_and_thresh"], [2, 2, 1, "", "plot"], [2, 2, 1, "", "plotECC"], [2, 2, 1, "", "plotECT"], [2, 2, 1, "", "plotSECT"], [2, 2, 1, "", "set_bounding_radius"]], "ect.embed_cw": [[3, 1, 1, "", "EmbeddedCW"], [3, 3, 1, "", "create_example_cw"]], "ect.embed_cw.EmbeddedCW": [[3, 2, 1, "", "__init__"], [3, 2, 1, "", "add_face"], [3, 2, 1, "", "add_from_embedded_graph"], [3, 2, 1, "", "g_omega_faces"], [3, 2, 1, "", "plot"], [3, 2, 1, "", "plot_faces"], [3, 2, 1, "", "sort_faces"]], "ect.embed_graph": [[4, 1, 1, "", "EmbeddedGraph"], [4, 3, 1, "", "create_example_graph"]], "ect.embed_graph.EmbeddedGraph": [[4, 2, 1, "", "__init__"], [4, 2, 1, "", "add_cycle"], [4, 2, 1, "", "add_edge"], [4, 2, 1, "", "add_node"], [4, 2, 1, "", "add_nodes_from"], [4, 2, 1, "", "g_omega"], [4, 2, 1, "", "g_omega_edges"], [4, 2, 1, "", "get_PCA_coordinates"], [4, 2, 1, "", "get_bounding_box"], [4, 2, 1, "", "get_bounding_radius"], [4, 2, 1, "", "get_center"], [4, 2, 1, "", "get_centered_coordinates"], [4, 2, 1, "", "get_coordinates"], [4, 2, 1, "", "get_scaled_coordinates"], [4, 2, 1, "", "lower_edges"], [4, 2, 1, "", "next_vert_name"], [4, 2, 1, "", "plot"], [4, 2, 1, "", "rescale_to_unit_disk"], [4, 2, 1, "", "set_PCA_coordinates"], [4, 2, 1, "", "set_centered_coordinates"], [4, 2, 1, "", "set_coordinates"], [4, 2, 1, "", "set_scaled_coordinates"], [4, 2, 1, "", "sort_edges"], [4, 2, 1, "", "sort_vertices"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "titleterms": {"cite": 0, "contribut": 1, "ect": [1, 2, 5, 6, 9, 10, 11, 12], "packag": 1, "get": [1, 5], "start": [1, 5], "guidelin": 1, "code": 1, "style": 1, "format": 1, "document": [1, 5], "test": 1, "issu": 1, "track": 1, "pull": 1, "request": 1, "conclus": 1, "graph": [2, 4, 12], "embed": [3, 4, 12], "cw": [3, 11], "complex": [3, 11], "euler": 5, "characterist": 5, "transform": 5, "python": 5, "tabl": [5, 8], "content": [5, 8, 13], "descript": 5, "tutori": [5, 11, 12, 13], "depend": 5, "instal": [5, 6], "author": 5, "licens": [5, 7], "contact": 5, "inform": 5, "prerequisit": 6, "uninstal": 6, "gpl": 7, "3": 7, "0": 7, "figur": 9, "gener": 9, "invit": 9, "try": 9, "erik": 9, "": [9, 10], "stuff": 9, "make": 9, "pictur": 9, "threshold": 9, "ecc": 9, "one": 9, "direct": 9, "let": 9, "draw": 9, "cylind": 9, "version": 9, "sect": [9, 12], "matiss": 10, "The": 10, "parakeet": 10, "mermaid": 10, "acknowledg": 10, "construct": 12, "comput": 12, "g": 12}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Citing": [[0, "citing"]], "Contributing to the ect Package": [[1, "contributing-to-the-ect-package"]], "Getting Started": [[1, "getting-started"], [5, "getting-started"]], "Contributing Guidelines": [[1, "contributing-guidelines"]], "Code style and formatting": [[1, "code-style-and-formatting"]], "Documentation guidelines": [[1, "documentation-guidelines"]], "Testing guidelines": [[1, "testing-guidelines"]], "Issue tracking and pull requests": [[1, "issue-tracking-and-pull-requests"]], "Conclusion": [[1, "conclusion"]], "ECT on Graphs": [[2, "module-ect.ect_graph"]], "Embedded CW complex": [[3, "module-ect.embed_cw"]], "Embedded graphs": [[4, "module-ect.embed_graph"]], "ect: Euler Characteristic Transform in Python": [[5, "ect-euler-characteristic-transform-in-python"]], "Table of Contents": [[5, "table-of-contents"], [8, "table-of-contents"]], "Contents:": [[5, null], [13, null]], "Description": [[5, "description"]], "Documentation and tutorials": [[5, "documentation-and-tutorials"]], "Dependencies": [[5, "dependencies"]], "Installing": [[5, "installing"]], "Authors": [[5, "authors"]], "License": [[5, "license"]], "Contact Information": [[5, "contact-information"]], "Installation": [[6, "installation"]], "Prerequisites": [[6, "prerequisites"]], "Installing ect": [[6, "installing-ect"]], "Uninstalling ect": [[6, "uninstalling-ect"]], "GPL-3.0 License": [[7, "gpl-3-0-license"]], "Figure generation for Invitation to the ECT": [[9, "Figure-generation-for-Invitation-to-the-ECT"]], "Trying Erik\u2019s stuff": [[9, "Trying-Erik's-stuff"]], "Making pictures": [[9, "Making-pictures"]], "Thresholded Figure": [[9, "Thresholded-Figure"]], "ECC in one direction": [[9, "ECC-in-one-direction"]], "ECT": [[9, "ECT"]], "Let\u2019s draw a cylinder!": [[9, "Let's-draw-a-cylinder!"]], "Erik\u2019s version": [[9, "Erik's-version"]], "SECT": [[9, "SECT"], [12, "SECT"]], "ECT on Matisse\u2019s \u201cThe Parakeet and the Mermaid\u201d": [[10, "ECT-on-Matisse's-%22The-Parakeet-and-the-Mermaid%22"]], "Acknowledgements": [[10, "Acknowledgements"]], "Tutorial: ECT for CW complexes": [[11, "Tutorial:-ECT-for-CW-complexes"]], "Tutorial : ECT for embedded graphs": [[12, "Tutorial-:-ECT-for-embedded-graphs"]], "Constructing the embedded graph": [[12, "Constructing-the-embedded-graph"]], "Computing the ECT of G": [[12, "Computing-the-ECT-of-G"]], "Tutorials": [[13, "tutorials"]]}, "indexentries": {"ect (class in ect.ect_graph)": [[2, "ect.ect_graph.ECT"]], "__init__() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.__init__"]], "calculateecc() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.calculateECC"]], "calculateect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.calculateECT"]], "calculatesect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.calculateSECT"]], "ect.ect_graph": [[2, "module-ect.ect_graph"]], "get_ect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.get_ECT"]], "get_sect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.get_SECT"]], "get_radius_and_thresh() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.get_radius_and_thresh"]], "module": [[2, "module-ect.ect_graph"], [3, "module-ect.embed_cw"], [4, "module-ect.embed_graph"]], "plot() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.plot"]], "plotecc() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.plotECC"]], "plotect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.plotECT"]], "plotsect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.plotSECT"]], "set_bounding_radius() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.set_bounding_radius"]], "embeddedcw (class in ect.embed_cw)": [[3, "ect.embed_cw.EmbeddedCW"]], "__init__() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.__init__"]], "add_face() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.add_face"]], "add_from_embedded_graph() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.add_from_embedded_graph"]], "create_example_cw() (in module ect.embed_cw)": [[3, "ect.embed_cw.create_example_cw"]], "ect.embed_cw": [[3, "module-ect.embed_cw"]], "g_omega_faces() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.g_omega_faces"]], "plot() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.plot"]], "plot_faces() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.plot_faces"]], "sort_faces() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.sort_faces"]], "embeddedgraph (class in ect.embed_graph)": [[4, "ect.embed_graph.EmbeddedGraph"]], "__init__() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.__init__"]], "add_cycle() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.add_cycle"]], "add_edge() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.add_edge"]], "add_node() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.add_node"]], "add_nodes_from() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.add_nodes_from"]], "create_example_graph() (in module ect.embed_graph)": [[4, "ect.embed_graph.create_example_graph"]], "ect.embed_graph": [[4, "module-ect.embed_graph"]], "g_omega() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.g_omega"]], "g_omega_edges() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.g_omega_edges"]], "get_pca_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_PCA_coordinates"]], "get_bounding_box() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_bounding_box"]], "get_bounding_radius() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_bounding_radius"]], "get_center() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_center"]], "get_centered_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_centered_coordinates"]], "get_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_coordinates"]], "get_scaled_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_scaled_coordinates"]], "lower_edges() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.lower_edges"]], "next_vert_name() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.next_vert_name"]], "plot() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.plot"]], "rescale_to_unit_disk() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.rescale_to_unit_disk"]], "set_pca_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.set_PCA_coordinates"]], "set_centered_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.set_centered_coordinates"]], "set_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.set_coordinates"]], "set_scaled_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.set_scaled_coordinates"]], "sort_edges() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.sort_edges"]], "sort_vertices() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.sort_vertices"]]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"Acknowledgements": [[10, "Acknowledgements"]], "Authors": [[5, "authors"]], "Citing": [[0, null]], "Code style and formatting": [[1, "code-style-and-formatting"]], "Computing the ECT of G": [[12, "Computing-the-ECT-of-G"]], "Conclusion": [[1, "conclusion"]], "Constructing the embedded graph": [[12, "Constructing-the-embedded-graph"]], "Contact Information": [[5, "contact-information"]], "Contents:": [[5, null], [13, null]], "Contributing Guidelines": [[1, "contributing-guidelines"]], "Contributing to the ect Package": [[1, null]], "Dependencies": [[5, "dependencies"]], "Description": [[5, "description"]], "Documentation and tutorials": [[5, "documentation-and-tutorials"]], "Documentation guidelines": [[1, "documentation-guidelines"]], "ECC in one direction": [[9, "ECC-in-one-direction"]], "ECT": [[9, "ECT"]], "ECT on Graphs": [[2, null]], "ECT on Matisse\u2019s \u201cThe Parakeet and the Mermaid\u201d": [[10, null]], "Embedded CW complex": [[3, null]], "Embedded graphs": [[4, null]], "Erik\u2019s version": [[9, "Erik's-version"]], "Figure generation for Invitation to the ECT": [[9, null]], "GPL-3.0 License": [[7, null]], "Getting Started": [[1, "getting-started"], [5, "getting-started"]], "Installation": [[6, null]], "Installing": [[5, "installing"]], "Installing ect": [[6, "installing-ect"]], "Issue tracking and pull requests": [[1, "issue-tracking-and-pull-requests"]], "Let\u2019s draw a cylinder!": [[9, "Let's-draw-a-cylinder!"]], "License": [[5, "license"]], "Making pictures": [[9, "Making-pictures"]], "Prerequisites": [[6, "prerequisites"]], "SECT": [[9, "SECT"], [12, "SECT"]], "Table of Contents": [[5, "table-of-contents"], [8, null]], "Testing guidelines": [[1, "testing-guidelines"]], "Thresholded Figure": [[9, "Thresholded-Figure"]], "Trying Erik\u2019s stuff": [[9, "Trying-Erik's-stuff"]], "Tutorial : ECT for embedded graphs": [[12, null]], "Tutorial: ECT for CW complexes": [[11, null]], "Tutorials": [[13, null]], "Uninstalling ect": [[6, "uninstalling-ect"]], "ect: Euler Characteristic Transform in Python": [[5, null]]}, "docnames": ["citing", "contributing", "ect_on_graphs", "embed_cw", "embed_graph", "index", "installation", "license", "modules", "notebooks/CodingFiguresFern", "notebooks/Matisse/Matisse_ECT", "notebooks/Tutorial-ECT_for_CW_Complexes", "notebooks/Tutorial-ECT_for_embedded_graphs", "tutorials"], "envversion": {"nbsphinx": 4, "sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1}, "filenames": ["citing.rst", "contributing.rst", "ect_on_graphs.md", "embed_cw.md", "embed_graph.md", "index.rst", "installation.rst", "license.md", "modules.rst", "notebooks/CodingFiguresFern.ipynb", "notebooks/Matisse/Matisse_ECT.ipynb", "notebooks/Tutorial-ECT_for_CW_Complexes.ipynb", "notebooks/Tutorial-ECT_for_embedded_graphs.ipynb", "tutorials.rst"], "indexentries": {"__init__() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.__init__", false]], "__init__() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.__init__", false]], "__init__() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.__init__", false]], "add_cycle() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.add_cycle", false]], "add_edge() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.add_edge", false]], "add_face() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.add_face", false]], "add_from_embedded_graph() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.add_from_embedded_graph", false]], "add_node() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.add_node", false]], "add_nodes_from() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.add_nodes_from", false]], "calculateecc() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.calculateECC", false]], "calculateect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.calculateECT", false]], "calculatesect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.calculateSECT", false]], "create_example_cw() (in module ect.embed_cw)": [[3, "ect.embed_cw.create_example_cw", false]], "create_example_graph() (in module ect.embed_graph)": [[4, "ect.embed_graph.create_example_graph", false]], "ect (class in ect.ect_graph)": [[2, "ect.ect_graph.ECT", false]], "ect.ect_graph": [[2, "module-ect.ect_graph", false]], "ect.embed_cw": [[3, "module-ect.embed_cw", false]], "ect.embed_graph": [[4, "module-ect.embed_graph", false]], "embeddedcw (class in ect.embed_cw)": [[3, "ect.embed_cw.EmbeddedCW", false]], "embeddedgraph (class in ect.embed_graph)": [[4, "ect.embed_graph.EmbeddedGraph", false]], "g_omega() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.g_omega", false]], "g_omega_edges() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.g_omega_edges", false]], "g_omega_faces() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.g_omega_faces", false]], "get_bounding_box() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_bounding_box", false]], "get_bounding_radius() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_bounding_radius", false]], "get_center() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_center", false]], "get_centered_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_centered_coordinates", false]], "get_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_coordinates", false]], "get_ect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.get_ECT", false]], "get_pca_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_PCA_coordinates", false]], "get_radius_and_thresh() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.get_radius_and_thresh", false]], "get_scaled_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.get_scaled_coordinates", false]], "get_sect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.get_SECT", false]], "lower_edges() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.lower_edges", false]], "module": [[2, "module-ect.ect_graph", false], [3, "module-ect.embed_cw", false], [4, "module-ect.embed_graph", false]], "next_vert_name() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.next_vert_name", false]], "plot() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.plot", false]], "plot() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.plot", false]], "plot() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.plot", false]], "plot_faces() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.plot_faces", false]], "plotecc() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.plotECC", false]], "plotect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.plotECT", false]], "plotsect() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.plotSECT", false]], "rescale_to_unit_disk() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.rescale_to_unit_disk", false]], "set_bounding_radius() (ect.ect_graph.ect method)": [[2, "ect.ect_graph.ECT.set_bounding_radius", false]], "set_centered_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.set_centered_coordinates", false]], "set_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.set_coordinates", false]], "set_pca_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.set_PCA_coordinates", false]], "set_scaled_coordinates() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.set_scaled_coordinates", false]], "sort_edges() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.sort_edges", false]], "sort_faces() (ect.embed_cw.embeddedcw method)": [[3, "ect.embed_cw.EmbeddedCW.sort_faces", false]], "sort_vertices() (ect.embed_graph.embeddedgraph method)": [[4, "ect.embed_graph.EmbeddedGraph.sort_vertices", false]]}, "objects": {"ect": [[2, 0, 0, "-", "ect_graph"], [3, 0, 0, "-", "embed_cw"], [4, 0, 0, "-", "embed_graph"]], "ect.ect_graph": [[2, 1, 1, "", "ECT"]], "ect.ect_graph.ECT": [[2, 2, 1, "", "__init__"], [2, 2, 1, "", "calculateECC"], [2, 2, 1, "", "calculateECT"], [2, 2, 1, "", "calculateSECT"], [2, 2, 1, "", "get_ECT"], [2, 2, 1, "", "get_SECT"], [2, 2, 1, "", "get_radius_and_thresh"], [2, 2, 1, "", "plot"], [2, 2, 1, "", "plotECC"], [2, 2, 1, "", "plotECT"], [2, 2, 1, "", "plotSECT"], [2, 2, 1, "", "set_bounding_radius"]], "ect.embed_cw": [[3, 1, 1, "", "EmbeddedCW"], [3, 3, 1, "", "create_example_cw"]], "ect.embed_cw.EmbeddedCW": [[3, 2, 1, "", "__init__"], [3, 2, 1, "", "add_face"], [3, 2, 1, "", "add_from_embedded_graph"], [3, 2, 1, "", "g_omega_faces"], [3, 2, 1, "", "plot"], [3, 2, 1, "", "plot_faces"], [3, 2, 1, "", "sort_faces"]], "ect.embed_graph": [[4, 1, 1, "", "EmbeddedGraph"], [4, 3, 1, "", "create_example_graph"]], "ect.embed_graph.EmbeddedGraph": [[4, 2, 1, "", "__init__"], [4, 2, 1, "", "add_cycle"], [4, 2, 1, "", "add_edge"], [4, 2, 1, "", "add_node"], [4, 2, 1, "", "add_nodes_from"], [4, 2, 1, "", "g_omega"], [4, 2, 1, "", "g_omega_edges"], [4, 2, 1, "", "get_PCA_coordinates"], [4, 2, 1, "", "get_bounding_box"], [4, 2, 1, "", "get_bounding_radius"], [4, 2, 1, "", "get_center"], [4, 2, 1, "", "get_centered_coordinates"], [4, 2, 1, "", "get_coordinates"], [4, 2, 1, "", "get_scaled_coordinates"], [4, 2, 1, "", "lower_edges"], [4, 2, 1, "", "next_vert_name"], [4, 2, 1, "", "plot"], [4, 2, 1, "", "rescale_to_unit_disk"], [4, 2, 1, "", "set_PCA_coordinates"], [4, 2, 1, "", "set_centered_coordinates"], [4, 2, 1, "", "set_coordinates"], [4, 2, 1, "", "set_scaled_coordinates"], [4, 2, 1, "", "sort_edges"], [4, 2, 1, "", "sort_vertices"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "terms": {"": [1, 4, 11, 12, 13], "0": [1, 2, 3, 4, 9, 10, 11, 12], "00": 9, "00000000e": 9, "00311595": 9, "00500167": 9, "00909174": 9, "01": 9, "01000334": 9, "0271": 9, "03": 9, "03064257e": 9, "035": 9, "04": 9, "05": 9, "05282835": 9, "05880414": 9, "0625": 9, "06477993": 9, "07": 9, "07075572": 9, "07101183": 9, "07698762": 9, "07718279e": 9, "07990971": 12, "08296341": 9, "0889392": 9, "09272788": 9, "09491499": 9, "09772955": 9, "09992015e": 9, "0x303d56d40": 10, "0x73f16b12de10": 9, "0x73f16b1855d0": 9, "0x73f180e96250": 9, "1": [3, 4, 9, 10, 11, 12], "10": [9, 10, 12], "100": [9, 11], "1000": 9, "101": 9, "103": 9, "1036569057366385": 12, "10365691": 12, "10395": [0, 5, 9], "104": 9, "10482613": 9, "10508806": 12, "106": 9, "107": 9, "11": 9, "110": 9, "111": 9, "114": 9, "115": 9, "117": 9, "11785113019775761": 12, "11785113019775795": 12, "11785113019775861": 12, "118": 9, "12": [9, 12], "121": 9, "122": 9, "12336873e": 9, "124": 9, "125": 9, "127": 9, "128": 9, "129": 9, "13": [9, 12], "132": 9, "1326758": 9, "133": 9, "135": 9, "136": 9, "13865159": 9, "139": 9, "14": [9, 12], "140": 9, "14159265": 12, "142": 9, "143": 9, "14462738": 9, "146": 9, "147": 9, "1470381530": 9, "149": 9, "15": [9, 12], "150": [9, 10], "15060317": 9, "152": 9, "153": 9, "154": 9, "15683507": 9, "157": 9, "158": 9, "16": [9, 12], "160": 9, "161": 9, "16281086": 9, "165": 9, "168": 9, "16878665": 9, "17": 9, "172": 9, "17476244": 9, "176": 9, "177": 9, "17809725": 12, "179": 9, "18": 9, "183": 9, "18545576": 9, "186": 9, "1875": 9, "19": 9, "190": 9, "19045743": 9, "193": 9, "1952": 10, "197": 9, "2": [1, 2, 3, 4, 9, 10, 11, 12], "20": [9, 12], "200": 9, "2000": 9, "2023": [0, 5, 9], "2024": 9, "21598194": 12, "21849905": 9, "22": 9, "22447484": 9, "23045063": 9, "23066002e": 9, "2310": [0, 5, 9], "23642642": 9, "23668253": 9, "23972914": 12, "24": 9, "24265832": 9, "24863411": 9, "25": 9, "250": 9, "25261331": 9, "25339739e": 9, "2546099": 9, "255": 9, "259": 9, "26": [9, 11], "260": 9, "26058569": 9, "270": 9, "271": 9, "27318197": 9, "27613475e": 9, "27818364": 9, "279": 9, "28": 9, "280": 9, "28318531": 9, "285": 9, "29": [9, 11], "2963624321753375": 12, "29913915e": 9, "2d": [4, 5, 10, 12], "2pi": [4, 9], "2r": [11, 12], "3": [6, 9, 10, 11, 12], "300": 9, "3043223": 9, "31": [9, 11], "310": 9, "31029808": 9, "3125": 9, "31627387": 9, "3196899": 12, "32": [9, 11], "32250578": 9, "32848157": 9, "33": 9, "3333333333333335": 12, "33445735": 9, "33582034e": 9, "34": [9, 10], "34043314": 9, "35": 9, "35074240e": 9, "35619449": 12, "356194490192345": 9, "36": [9, 11], "360": 9, "36590985": 9, "37091152": 9, "375": 9, "37580137": 12, "38": 9, "38416975": 9, "39": [9, 10, 11, 12], "39014554": 9, "39269908": 12, "39612133": 9, "3d": [9, 10], "3pi_over_2": 9, "3pi_over_4": 9, "4": [9, 10, 12], "402097119801482": 9, "40209712": 9, "40235323": 9, "40758582e": 9, "40832902": 9, "41430481": 9, "4197140881138655": 12, "42": 9, "4202806": 9, "42253678": 9, "42625639": 9, "42854650e": 9, "43": 9, "4375": 9, "44": 9, "45": 9, "45167": 9, "45863773": 9, "46": [9, 11], "4636394": 9, "46877882": 9, "469993": 9, "47": [9, 11], "47596879": 9, "48": 11, "48194458": 9, "48538992e": 9, "48817648": 9, "49": 9, "49415227": 9, "49778714": 12, "497787143782138": 9, "4f": 9, "5": [9, 10, 11, 12], "50": [9, 10], "50012806": 9, "50610385": 9, "51": [9, 12], "5118736": 12, "51207963": 9, "53": [9, 12], "53175300e": 9, "532064692570853": 12, "53429174": 12, "53821": 9, "53822": 9, "53825": 9, "53826": 9, "53827": 9, "53828": 9, "53829": 9, "53830": 9, "53831": 9, "53832": 9, "54": [9, 12], "54223334e": 9, "54478873": 9, "54636394": 9, "5497": 9, "54984045": 9, "55136561": 9, "55581624": 9, "56": 9, "56017471e": 9, "56179203": 9, "5625": 9, "56541488e": 9, "56776782": 9, "57": [9, 12], "57079633": 12, "57399972": 9, "57746322": 9, "57997551": 9, "58": [11, 12], "5859513": 9, "5892556509887904": 12, "59": [9, 11], "59192709": 9, "6": [9, 10, 12], "60": [9, 11, 12], "61": 9, "625": 9, "63": 9, "6356637": 9, "63909182": 9, "64": 9, "64163949": 9, "64409349": 9, "64761528": 9, "64794583": 12, "65": 9, "65359107": 9, "65384718": 9, "65982297": 9, "66116035e": 9, "66579876": 9, "6666666666666665": 12, "67": 9, "67169302": 12, "67177455": 9, "67775034": 9, "68": 9, "6875": 9, "68893688291087": 9, "69": 9, "7": [6, 9, 10, 11, 12], "71": 9, "71238898": 12, "71238898038469": 9, "71551116": 9, "71800377e": 9, "72": 9, "72148694": 9, "72746273": 9, "7318197": 9, "73343852": 9, "73682137": 9, "73967042": 9, "74": 9, "74564621": 9, "74889357": 12, "75": [9, 11], "751622": 9, "75759779": 9, "76167204": 9, "78": 9, "78539816": 12, "7853981633974483": 9, "78754838e": 9, "79": 9, "7pi_over_4": 9, "8": [1, 9, 10, 12], "80": 11, "8013344": 9, "80731019": 9, "80776525": 12, "81": 9, "8125": 9, "81328598": 9, "81926177": 9, "81951788": 9, "81954591": 9, "82": 9, "82454758": 9, "82549367": 9, "83": 9, "83146946": 9, "83744525": 9, "84342104": 9, "85": 9, "86": 9, "87": 9, "87059265e": 9, "875": 9, "88": 9, "88715765": 9, "89": 9, "89048623": 12, "89313344": 9, "89517387": 9, "89910923": 9, "9": [9, 10, 12], "90": 9, "900": 9, "90534113": 9, "91": 9, "91131692": 9, "91227379": 9, "91727546": 9, "91729271": 9, "92": 9, "92326849": 9, "92699082": 12, "93": 9, "9375": 9, "94": 9, "94383748": 12, "95": 9, "9529463851622046": 11, "9597201": 9, "96": 9, "96331881e": 9, "96349541": 12, "9670051": 9, "97": 9, "97298089": 9, "97895668": 9, "98": 9, "98493247": 9, "98518858": 9, "99": [9, 11], "99116437": 9, "99196": 9, "99714016": 9, "A": [1, 2, 3, 4, 5, 11, 12], "And": 10, "As": 11, "Be": 1, "But": 11, "For": [1, 5, 10], "If": [1, 2, 3, 4, 12], "In": 11, "It": 1, "THe": 9, "The": [1, 2, 3, 4, 5, 7, 9, 11, 12, 13], "Then": [4, 11, 12], "There": [1, 10], "To": [0, 1, 6, 9, 12], "_": 12, "__init__": [2, 3, 4], "__version__": 9, "_nocolorbar": 9, "a_i": 2, "a_j": 2, "aa": 4, "aaa": 4, "abil": 11, "abl": 1, "about": 1, "abov": [9, 12], "access": 12, "accord": [1, 3, 4], "acknowledg": [1, 13], "across": 2, "actual": 12, "ad": [4, 11], "add": [1, 3, 4, 11], "add_cycl": [4, 10], "add_edg": [4, 12], "add_edges_from": 11, "add_fac": [3, 11], "add_from_embedded_graph": 3, "add_nod": [4, 11, 12], "add_nodes_from": 4, "add_subplot": 9, "addit": [3, 11], "advanc": 10, "after": 2, "agreement": 7, "align": [4, 10], "all": [1, 2, 4, 9, 10, 11, 12], "along": [1, 3, 4, 5], "alphabet": 4, "alreadi": [4, 11, 12], "also": [1, 3, 4, 11, 12], "altern": [5, 6], "although": 1, "alwai": 1, "an": [0, 1, 2, 3, 4, 5, 9, 10, 11, 12], "angl": [1, 2, 3, 4], "ani": [1, 11], "anoth": 12, "appear": [4, 9], "approv": 1, "ar": [1, 3, 4, 9, 10, 11, 12], "arang": 9, "argument": 3, "around": [3, 4, 9, 11], "arrai": [2, 4, 9, 10, 11, 12], "arxiv": [0, 5, 9], "ask": 11, "aspect": 12, "assign": 4, "assum": [1, 3, 11, 12], "attribut": [2, 4, 12], "auto": 10, "autogener": 1, "automat": 12, "avail": [2, 5], "averag": [4, 9, 12], "avgoveromega": 9, "ax": [3, 4, 9, 10, 11, 12], "axes3d": 9, "axesimag": 10, "axi": [2, 9, 10, 11], "axvlin": 9, "b": [11, 12], "backward": 9, "ball": 10, "base": [4, 10, 11], "bbox_inch": 9, "becaus": 12, "been": [11, 12], "befor": [1, 2, 6, 7, 9], "begin": 12, "being": 4, "below": 1, "better": [1, 12], "between": [4, 10], "bigger": 12, "bigval": 9, "bit": [1, 10, 11, 12], "bool": [1, 2, 3, 4], "both": [9, 12], "bottom": 9, "bound": [2, 3, 4, 10, 11, 12], "bound_radiu": [2, 11, 12], "boundari": 3, "bounding_center_typ": 4, "bounding_circl": [3, 4, 10, 11, 12], "box": 4, "branch": 1, "browser": 1, "bug": 1, "build": 11, "built": [11, 12], "c": [9, 10, 11, 12], "calcul": [2, 3, 4, 9, 10, 11, 12], "calculateecc": [2, 11, 12], "calculateect": [2, 10, 11, 12], "calculatesect": [2, 12], "call": [1, 2, 12], "can": [1, 2, 4, 5, 6, 7, 9, 10, 11, 12], "care": [10, 11], "carefulli": 7, "case": 11, "cd": [5, 6], "cell": [3, 9], "center": [2, 3, 4, 9, 10, 12], "center_typ": [3, 4, 10], "chain": 4, "chang": [1, 9], "characterist": [0, 2, 9, 11, 12], "check": [3, 11], "chi": [2, 9, 12], "chitwood": 10, "choos": [9, 12], "chosen": 12, "circl": [2, 4, 9, 12], "circle_dir": 9, "circledir": 9, "cite": 5, "class": [1, 2, 3, 4, 10, 11, 12], "classifi": 10, "clean": 1, "clf": 9, "clone": [1, 5, 6], "close": 4, "cm": 9, "cmap": 9, "cmap_binari": 9, "cmap_viridi": 9, "co": [9, 12], "coars": 4, "code": [5, 9, 10, 12], "col": 9, "col_df": 10, "collabor": 5, "color": [4, 9, 10, 11, 12], "color_dimens": 9, "color_nodes_theta": [3, 4, 11, 12], "colorbar": 9, "colormap": 9, "com": [5, 6], "command": [1, 6, 11, 12], "commit": 1, "comparison": 10, "complex": [2, 5, 8, 9, 13], "complexifi": 9, "complic": 11, "compon": 10, "comput": [2, 4, 5, 10, 11, 13], "compute_sect": [2, 12], "conf": 1, "connect": 4, "consid": [2, 4], "construct": [2, 13], "contact": 1, "content": 1, "contribut": 5, "contributor": 1, "control": 11, "convers": 9, "convert": 12, "coord_matrix": 4, "coordiant": 4, "coordin": [3, 4, 10, 12], "copi": 9, "correct": 1, "correctli": 1, "correspond": 12, "cos\u03b8": 9, "could": 3, "count": [2, 4], "cours": 11, "crawford2019": 9, "creat": [1, 3, 4, 10], "create_example_cw": [3, 8, 11], "create_example_graph": [4, 8, 12], "csv": 10, "cubic": 9, "cubicalcomplex": 9, "cumsum": 9, "current": [4, 10], "curv": [2, 12], "cutout": 10, "cw": [2, 8, 13], "cycl": [3, 4], "d": [10, 11, 12], "da": 12, "dan": 10, "data": 10, "data_dir": 10, "date": 1, "deal": [1, 9], "decid": 11, "decomposit": 10, "def": [1, 9, 10], "default": [2, 12], "defin": [4, 12], "delet": 1, "demet": 9, "deprec": 9, "deprecationwarn": 9, "descript": 1, "desir": 9, "detail": [5, 12], "develop": 1, "dict": [3, 4], "dictionari": [1, 3, 4, 12], "differ": [3, 9], "dimens": [9, 10], "dimension": [5, 10], "dir": 9, "direct": [1, 2, 3, 4, 10, 11, 12], "directli": [1, 5, 6, 12], "directori": [1, 10], "discuss": 1, "disk": 4, "dissimilar": 10, "distanc": 10, "distance_matrix": 10, "do": [1, 3, 4, 5, 9], "doc": 1, "doc_sourc": [1, 10], "docstr": 1, "doe": [3, 4, 11, 12], "doesn": 2, "don": 12, "done": [4, 12], "dot": 12, "doubt": 1, "download": 10, "dpi": 9, "draft": 1, "draw": [2, 3], "draw_count": 2, "drawn": 4, "dt": [9, 12], "dtdown": 9, "dtup": 9, "e": [1, 3, 4, 12], "each": [2, 4, 9, 10, 12], "earlier": 12, "eas": 10, "easier": [1, 11], "easili": [1, 12], "ecc": [2, 11], "ect": [0, 3, 4, 8, 13], "ect_arr": 10, "ect_graph": 2, "ect_matrix": 2, "ect_preprocess": 9, "edg": [1, 2, 3, 4, 9, 11], "edge_count": 2, "edge_g": 11, "either": [2, 4], "element": 9, "elizabeth": [0, 5, 9], "els": 9, "email": 5, "embed": [5, 8, 10, 13], "embed_cw": 3, "embed_graph": 4, "embedded_graph": 3, "embeddedcw": [2, 3, 8, 11], "embeddedgraph": [2, 3, 4, 8, 10, 11, 12], "empti": [3, 4, 11], "end": [9, 12], "endpoint": 9, "ensur": [1, 9], "entri": 2, "enumer": 9, "environ": 1, "ep": 9, "equal": [3, 4, 10], "equat": 9, "equival": 12, "error": 9, "essenti": 1, "etc": [4, 5], "euler": [0, 2, 9, 11, 12], "eventu": [4, 5], "everyth": 1, "exampl": [1, 3, 4, 10, 11, 12], "except": 9, "exist": [1, 4], "extract": [9, 10], "f": [9, 10, 11, 12], "f_": [9, 12], "f_finit": 9, "face": [2, 3, 11], "face_count": 2, "face_g": 11, "facecolor": 9, "fact": 3, "fals": [1, 2, 3, 4, 9, 10, 12], "famili": 9, "fcolor": 9, "featur": 1, "fern": 9, "fern_": 9, "fern_3pi_over_4_allthresh": 9, "fern_3pi_over_4_ecc": 9, "fern_3pi_over_4_thresh": 9, "fern_ect": 9, "fern_ect_cylind": 9, "few": 1, "fig": 9, "fight": 9, "figsiz": [9, 10], "figur": [3, 10], "file": [1, 5, 10], "file_nam": 10, "filenam": 10, "fill": [1, 3, 10], "find": [1, 4], "first": [1, 4], "fit": [4, 10], "fit_transform": 10, "fix": [1, 9, 12], "flattened_ect": 10, "float": [1, 2, 3, 4], "floor": 9, "fly": 12, "fmask": 9, "fmaskabov": 9, "fmaskbelow": 9, "folder": 1, "follow": [0, 1, 2, 6, 9, 11, 12], "font": 9, "fontsiz": 9, "fork": [1, 9], "format": 9, "found": [5, 7], "fourth": 9, "frac": [9, 12], "fraction": 9, "framework": 1, "from": [1, 2, 3, 4, 6, 9, 10, 11, 12], "full": [3, 7, 12], "func": 12, "func_valu": [1, 3, 4], "function": [1, 2, 3, 4, 9, 11, 12], "further": 11, "futur": [1, 9], "g": [1, 2, 3, 4, 9, 10, 11, 13], "g_": [1, 3, 4, 11, 12], "g_omega": [4, 11, 12], "g_omega_edg": [4, 11], "g_omega_fac": [3, 11], "gca": [9, 10], "gcf": 9, "gener": [1, 3, 4, 7, 11], "get": [2, 9, 10, 12], "get_bounding_box": 4, "get_bounding_radiu": [4, 11, 12], "get_cent": 4, "get_centered_coordin": 4, "get_coordin": 4, "get_ect": [2, 12], "get_pca_coordin": 4, "get_radius_and_thresh": 2, "get_scaled_coordin": 4, "get_sect": 2, "get_size_inch": 9, "git": [5, 6], "github": [1, 5, 6], "give": [10, 12], "given": [1, 2, 3, 4, 11, 12], "gnu": 7, "go": 10, "goal": 5, "gplv3": 5, "grai": 9, "graph": [1, 3, 5, 8, 10, 11, 13], "grei": 9, "grid": 9, "group": 5, "gt": [9, 10, 11, 12], "guid": 1, "h": [9, 11], "ha": 4, "habit": 1, "hashabl": 4, "hasn": 12, "have": [1, 2, 5, 6, 9, 10, 11, 12], "header": 10, "height": 9, "height_fig": 9, "help": [1, 4], "helvetica": 9, "henri": 10, "her": 5, "here": [5, 10, 11, 12], "hexcod": 10, "higher": [5, 6], "how": 11, "howev": [3, 11, 12], "html": 1, "http": 6, "i": [1, 2, 3, 4, 5, 9, 10, 11, 12], "ident": 4, "ii": 2, "im": 9, "imag": 10, "immedi": 11, "implicitli": 9, "import": [9, 10, 11, 12], "imread": 9, "imshow": 9, "includ": [1, 4, 5, 11], "increas": [1, 3, 4], "increment": 4, "indent": 1, "index": [1, 9], "inform": 1, "infti": 12, "initi": [3, 4, 10, 11, 12], "input": [2, 11, 12], "instal": [1, 9], "instanc": 4, "instead": 12, "int": [2, 4, 9], "int_": 12, "integ": [4, 12], "interest": 11, "interior": [3, 11], "intern": [2, 11, 12], "interv": 11, "intiat": 10, "intro": 12, "invit": [0, 5], "io": 5, "ipykernel_57600": 9, "ipympl": 9, "isfil": 10, "issu": 9, "ith": 2, "its": [3, 11], "j": [2, 9], "join": 10, "jth": 2, "jupyt": [5, 12], "just": [4, 9, 10, 11], "k": [9, 11], "k_": [2, 9], "k_a": 9, "kdc": 11, "keyword": 3, "know": 12, "kwarg": [3, 4], "l_2": 10, "label": [4, 9], "labelrot": 9, "langl": [4, 12], "leaf": [9, 10], "leaf_fil": 9, "leaf_img": 9, "leafbw": 9, "leav": 10, "left": 12, "legit": 3, "len": [9, 10], "let": [10, 11], "letter": 4, "level": 1, "like": [1, 3, 4], "linalg": 10, "line": [3, 9], "line2d": 9, "linestyl": 9, "linewidth": 9, "linspac": 9, "list": [1, 3, 4, 10, 11, 12], "listdir": 10, "liz": [1, 5, 10], "ll": 10, "load": 10, "loader": 10, "loadtxt": 10, "locat": 1, "look": [1, 3, 11], "lost": 1, "lot": 1, "lower": [4, 9], "lower_edg": 4, "lt": [9, 10, 11, 12], "lw": [9, 10], "m": [2, 9, 10, 12], "m_sect": 12, "maa": 9, "made": 9, "magma": 9, "main": 1, "maintain": 4, "make": [1, 2, 3, 4, 6, 10, 11, 12], "makefernp": 9, "makefernpicthreshold": 9, "mani": [1, 11], "manifold": 10, "manual": 2, "map": [4, 12], "mapsto": 12, "markdown": 1, "match": 1, "math": 1, "mathbb": 12, "matiss": 13, "matisse_ect": 10, "matplotlib": [3, 5, 9, 10, 12], "matrix": [2, 4, 9, 10, 11, 12], "matshow": [9, 10], "max": [1, 3, 4, 9, 10], "max_": 11, "maxcol": 9, "maximum": 4, "maxrow": 9, "maxx": 9, "mcenter": 9, "mcguir": 5, "md": 10, "mds_score": 10, "mean": [3, 4, 9, 10], "mean_cent": 11, "meng22": 9, "merg": 1, "mermaid": 13, "meshgrid": 9, "method": [2, 4, 12], "mid": [1, 3, 4], "midi": 9, "midx": 9, "might": [3, 4], "min": [4, 9, 10], "min_max": [3, 4, 10], "minimum": [4, 11], "minn": 9, "mint": 9, "misc": 9, "mix": 1, "mod": 9, "modul": 5, "moment": [1, 9], "monthli": 9, "more": [5, 11, 12], "mpl_toolkit": 9, "mplot3d": 9, "much": 1, "mult": 10, "multi": 10, "multipl": 4, "multipli": 9, "munch": [0, 1, 5, 9, 10], "munchlab": [5, 6], "must": [1, 2, 9, 12], "my_funct": 1, "myect": [10, 11, 12], "n": [4, 9], "n_compon": 10, "name": [4, 10], "nan": 9, "ncubic": 9, "ndarrai": [2, 4], "ndim": 9, "necessari": [2, 12], "need": [1, 11], "networkx": [4, 5, 12], "new": [1, 3, 4], "next": 4, "next_vert_nam": 4, "node": [4, 11, 12], "node_s": 10, "none": [2, 3, 4, 10, 12], "norm": [9, 10], "normal": [4, 9, 10], "normalized_stress": 10, "note": [1, 2, 3, 11, 12], "notebook": [5, 9, 10, 12], "now": [5, 9, 10, 12], "np": [2, 4, 9, 10, 11, 12], "num": 9, "num_dir": [2, 10, 11, 12], "num_thresh": [2, 10, 11, 12], "num_vert": 4, "numba": 5, "number": [1, 2, 4, 9, 10, 12], "numcircledir": 9, "numpi": [2, 4, 5, 9, 10, 11, 12], "numthresh": 9, "nx": [2, 4, 12], "o": 10, "object": [2, 3, 4, 12], "often": 12, "omega": [1, 3, 4, 9, 11, 12], "omega_i": 2, "omega_j": 2, "omegai": 9, "omegavec": 9, "onc": [1, 11, 12], "one": [4, 10, 11], "ones_lik": 9, "onlycolorbar": 9, "open": 1, "oper": [1, 9], "option": [2, 4], "orang": 9, "order": [1, 2, 3, 4], "ordin": 9, "origin": [2, 3, 4, 9, 10, 12], "other": [1, 11], "otherwis": 2, "our": 12, "out": [1, 9, 10], "outecc": 9, "outlin": [3, 10], "output": 12, "overallmax": 9, "overallmin": 9, "overlin": 12, "overwrit": [4, 12], "overwritten": 1, "packag": [5, 6, 10, 12], "pad": 9, "panda": 10, "paper": [9, 12], "parakeet": 13, "paramet": [1, 2, 3, 4], "pass": [1, 3, 11, 12], "path": 10, "pca": [4, 10], "pcolormesh": 9, "pd": 10, "pdf": 9, "peopl": 5, "pep": 1, "per": 9, "perf_count": 9, "perform": 9, "pi": [1, 2, 3, 4, 9, 11, 12], "pi_over_4": 9, "picki": 1, "pictur": 12, "pip": [1, 5, 6, 9], "pixel": 9, "plan": 1, "plane": 3, "pleas": [0, 1, 7], "plot": [2, 3, 4, 9, 10, 11, 12], "plot_fac": 3, "plot_surfac": 9, "plot_typ": 2, "plotecc": [2, 11, 12], "plotect": [2, 10, 11, 12], "plotsect": [2, 11], "plt": [9, 10, 12], "png": 9, "po": [4, 9], "point": [4, 11, 12], "posit": [2, 4, 9, 10], "possibl": 1, "post": 1, "postiv": 2, "precomput": 10, "prefix": 1, "preprocess": 10, "prerequisit": 1, "preserve_cent": [4, 12], "print": [9, 10, 11, 12], "product": 12, "project": [1, 5, 9, 10], "protect": 1, "provid": 1, "public": [0, 7], "purpos": 10, "push": 1, "py": [1, 9], "pyplot": [9, 10, 12], "pyproject": 1, "pytest": 1, "python": [1, 6], "quickli": 1, "r": [2, 9, 11, 12], "radian": 2, "radiu": [2, 4, 9, 10, 11, 12], "rais": 4, "random": 10, "random_st": 10, "rang": [2, 9, 10], "rangl": [4, 12], "rcparam": 9, "re": [4, 10], "reach": 4, "read": [7, 10], "read_csv": 10, "readabl": 1, "readi": 1, "red": 9, "redraw": 9, "region": [3, 11], "rel": 4, "relev": 1, "remov": 9, "repo": 5, "repositori": [1, 6], "repres": [2, 3, 4], "reproduc": 10, "rescal": [4, 12], "rescale_to_unit_disk": [4, 12], "research": 5, "reset": 4, "reset_po": 4, "reshap": 10, "restructuredtext": 1, "result": 2, "retriev": 10, "return": [1, 2, 3, 4, 9, 10, 11, 12], "return_count": 2, "return_g": [1, 3, 4], "review": 1, "right": [5, 9, 12], "rotat": 12, "round": 11, "row": [4, 9], "rst": 1, "run": [1, 6, 12], "same": [11, 12], "sarah": 5, "save": 12, "savefig": 9, "scalar": 9, "scalarmapp": 9, "scale": [4, 10], "scale_radiu": [4, 10], "scale_v": 10, "scatter": 9, "scipi": 10, "score": 10, "second": [1, 4, 9], "sect": [2, 11, 13], "sect_matrix": [2, 12], "see": [5, 11, 12], "select": 10, "self": [1, 2, 4], "sequenc": 4, "serif": 9, "set": [1, 2, 4, 9, 10, 11, 12], "set_arrai": 9, "set_aspect": 10, "set_axis_off": 9, "set_bad": 9, "set_bounding_radiu": [2, 10, 11, 12], "set_centered_coordin": 4, "set_coordin": 4, "set_edgecolor": 9, "set_figheight": 9, "set_figwidth": 9, "set_mean_centered_coordin": [11, 12], "set_pca_coordin": [4, 10], "set_raster": 9, "set_scaled_coordin": 4, "set_size_inch": 9, "set_ticks_posit": 9, "set_titl": 9, "set_xtick": 9, "set_xticklabel": 9, "set_ytick": 9, "set_yticklabel": 9, "shape": [3, 9, 10, 12], "sharei": 9, "shift": 12, "should": [1, 2, 3, 4], "show": 11, "shown": 12, "sigma": [3, 11], "similarli": 11, "simpl": [1, 3, 4], "simpli": 6, "simplici": 5, "sin": [9, 12], "sinc": [1, 4, 12], "singl": [9, 11], "sin\u03b8": 9, "size": [2, 9, 12], "skeleton": 3, "sklearn": 10, "smooth": [2, 12], "so": [1, 3, 11, 12], "softwar": 7, "some": [1, 12], "someth": [9, 11], "sort": [1, 3, 4, 10], "sort_edg": [1, 4], "sort_fac": 3, "sort_vertic": 4, "sourc": [2, 3, 4, 5, 6], "spatial": 10, "specif": [2, 4, 12], "specifi": 12, "sphinx": 1, "squar": 9, "standard": [1, 10], "state": 10, "step": 9, "still": 3, "stop": [9, 11], "store": [2, 10, 12], "str": [2, 4, 9], "straight": 3, "strang": 3, "stuff": 5, "subject": 1, "subplot": 9, "sum": 9, "summari": 9, "support": 1, "sure": [1, 3, 6, 11], "surf": 9, "system": 1, "t": [2, 9, 12], "tab20b": 9, "take": [1, 11, 12], "taken": 10, "teaspoon": 9, "technic": 12, "templat": 1, "termin": 6, "test": [4, 9], "test_": 1, "test_my_funct": 1, "text": [7, 9, 10, 12], "texttt": 4, "tf": 9, "than": [1, 12], "thei": [1, 4], "them": 4, "theshold": 9, "theta": [1, 2, 3, 4, 9, 11, 12], "thetastr": 9, "thetastrsfil": 9, "thi": [1, 2, 4, 5, 9, 10, 11, 12], "thing": 1, "thorough": 12, "thresh": [2, 9, 12], "thresh_size_fig": 9, "threshold": [2, 10, 11, 12], "through": [11, 12], "tic": 9, "tick_param": 9, "tif": 9, "tifffil": 9, "tight": 9, "time": [9, 12], "titl": [9, 10], "tmp": 9, "to_rgba": 9, "toc": 9, "todo": [1, 3, 4, 12], "toml": 1, "too": 1, "tool": 5, "top": 1, "tracker": 1, "trans_sh": 10, "transform": [0, 2, 9, 11, 12], "translat": 10, "transpar": 9, "treatment": 12, "triangl": 11, "true": [1, 2, 3, 4, 9, 10, 11, 12], "tupl": [2, 4], "two": [1, 10], "txt": 10, "type": [2, 3, 4], "u": 4, "under": 5, "undirect": 12, "unit": 12, "unittest": 1, "unlik": 12, "up": [1, 3, 4, 12], "updat": [1, 9], "us": [0, 1, 2, 4, 5, 7, 9, 10, 11, 12], "usetex": 9, "v": [1, 3, 4, 11, 12], "v_list": 4, "valid": 3, "valu": [1, 2, 3, 4, 9, 10, 11, 12], "valueerror": 4, "vari": 2, "ve": 10, "vector": [4, 12], "version": [1, 5, 6, 7], "vert_g": 11, "vertex": [2, 3, 4, 11, 12], "vertex_count": 2, "vertex_nam": [1, 3, 4], "vertic": [2, 3, 4, 9, 11, 12], "via": [4, 10], "view": 1, "viridi": 9, "visual": [10, 12], "vmax": 9, "vmin": 9, "voxel": 5, "wa": [5, 9, 10, 11, 12], "wai": 1, "walk": [11, 12], "want": [3, 4, 12], "warn": 4, "we": [3, 4, 10, 11, 12], "websit": 5, "well": [1, 4], "what": 12, "when": [1, 11, 12], "where": [2, 3, 9, 11, 12], "whether": [1, 2, 3, 4], "which": [1, 3, 4, 12], "white": 9, "who": 5, "whose": 4, "why": 9, "widget": 9, "with_label": [4, 10], "within": 4, "without": 9, "work": [1, 3, 4], "would": 1, "write": [1, 12], "written": [1, 5, 10], "x": [2, 4, 9, 11, 12], "xaxi": 9, "xlabel": 9, "y": [2, 4, 9, 11], "yet": [3, 11, 12], "ylabel": 9, "you": [1, 4, 5, 6, 9, 10, 11, 12], "your": [1, 9], "z": [4, 9, 12], "zero": [4, 10], "zip": 10, "zz": 4, "\u03b8": 9}, "titles": ["6. Citing", "4. Contributing to the ect Package", "2.3. ECT on Graphs", "2.2. Embedded CW complex", "2.1. Embedded graphs", "ect: Euler Characteristic Transform in Python", "1. Installation", "5. GPL-3.0 License", "2. Table of Contents", "Figure generation for Invitation to the ECT", "3.3. ECT on Matisse\u2019s \u201cThe Parakeet and the Mermaid\u201d", "3.2. Tutorial: ECT for CW complexes", "3.1. Tutorial : ECT for embedded graphs", "3. Tutorials"], "titleterms": {"": [9, 10], "0": 7, "3": 7, "The": 10, "acknowledg": 10, "author": 5, "characterist": 5, "cite": 0, "code": 1, "complex": [3, 11], "comput": 12, "conclus": 1, "construct": 12, "contact": 5, "content": [5, 8, 13], "contribut": 1, "cw": [3, 11], "cylind": 9, "depend": 5, "descript": 5, "direct": 9, "document": [1, 5], "draw": 9, "ecc": 9, "ect": [1, 2, 5, 6, 9, 10, 11, 12], "embed": [3, 4, 12], "erik": 9, "euler": 5, "figur": 9, "format": 1, "g": 12, "gener": 9, "get": [1, 5], "gpl": 7, "graph": [2, 4, 12], "guidelin": 1, "inform": 5, "instal": [5, 6], "invit": 9, "issu": 1, "let": 9, "licens": [5, 7], "make": 9, "matiss": 10, "mermaid": 10, "one": 9, "packag": 1, "parakeet": 10, "pictur": 9, "prerequisit": 6, "pull": 1, "python": 5, "request": 1, "sect": [9, 12], "start": [1, 5], "stuff": 9, "style": 1, "tabl": [5, 8], "test": 1, "threshold": 9, "track": 1, "transform": 5, "try": 9, "tutori": [5, 11, 12, 13], "uninstal": 6, "version": 9}}) \ No newline at end of file diff --git a/docs/tutorials.html b/docs/tutorials.html index bf618da..ad86aeb 100644 --- a/docs/tutorials.html +++ b/docs/tutorials.html @@ -1,25 +1,25 @@ + + - + 3. Tutorials — ect 0.1.5 documentation - + - - - - - - - - + + + + + + + + diff --git a/ect/ect/ect_graph.py b/ect/ect/ect_graph.py index 52e2ae5..bde6318 100644 --- a/ect/ect/ect_graph.py +++ b/ect/ect/ect_graph.py @@ -3,6 +3,7 @@ from numba import jit import matplotlib.pyplot as plt from ect.embed_cw import EmbeddedCW +import time class ECT: @@ -116,69 +117,42 @@ def get_SECT(self): def calculateECC(self, G, theta, bound_radius=None, return_counts=False): """ - Function to compute the Euler Characteristic of an `EmbeddedGraph`, that is, a graph with coordinates for each vertex. - + Function to compute the Euler Characteristic Curve (ECC) of an `EmbeddedGraph`. + Parameters: - G (nx.Graph): - The graph to compute the Euler Characteristic for. - theta (float): - The angle (in radians) to use for the direction function when computing the Euler Characteristic Curve. - bound_radius (float): - If None, uses the following in order: (i) the bounding radius stored in the class; or if not available (ii) the bounding radius of the given graph. Otherwise, should be a postive float :math:`R` where the ECC will be computed at thresholds in :math:`[-R,R]`. Default is None. - return_counts (bool): - Whether to return the counts of vertices, edges, and faces below the threshold. Default is False. - + G (nx.Graph): The graph to compute the ECC for. + theta (float): The angle (in radians) for the direction function. + bound_radius (float, optional): Radius for threshold range. Default is None. + return_counts (bool, optional): Whether to return vertex, edge, and face counts. Default is False. + + Returns: + numpy.ndarray: ECC values at each threshold. + (Optional) Tuple of counts: (ecc, vertex_count, edge_count, face_count) """ - r, r_threshes = self.get_radius_and_thresh(G, bound_radius) - # -- - def num_below_threshold(func_list, thresh): - """ - Returns the number of entries in func_list that are below the threshold thresh. - Warning: func_list must be sorted in ascending order. - - Parameters - func_list (list): sorted list of function values - thresh (float): threshold value - - Returns - int - """ - # If the list is empty, return 0 - if len(func_list) == 0: - return 0 - else: - func_max = func_list[-1] - if thresh < func_max: - return np.argmin(func_list < thresh) - else: - return len(func_list) - # -- + r_threshes = np.array(r_threshes) + # Sort vertices and edges based on projection v_list, g = G.sort_vertices(theta, return_g=True) - g_list = [g[v] for v in v_list] - - vertex_count = np.array([num_below_threshold( - g_list, thresh) for thresh in r_threshes]) - # print(vertex_count) + g_list = np.array([g[v] for v in v_list]) + sorted_g_list = np.sort(g_list) e_list, g_e = G.sort_edges(theta, return_g=True) - g_e_list = [g_e[e] for e in e_list] - edge_count = np.array([num_below_threshold( - g_e_list, thresh) for thresh in r_threshes]) - # print(edge_count) + g_e_list = np.array([g_e[e] for e in e_list]) + sorted_g_e_list = np.sort(g_e_list) + + vertex_count = np.searchsorted(sorted_g_list, r_threshes, side='left') + edge_count = np.searchsorted(sorted_g_e_list, r_threshes, side='left') - if type(G) == EmbeddedCW: + if isinstance(G, EmbeddedCW): f_list, g_f = G.sort_faces(theta, return_g=True) - g_f_list = [g_f[f] for f in f_list] - face_count = np.array([num_below_threshold( - g_f_list, thresh) for thresh in r_threshes]) - # print(face_count) + g_f_list = np.array([g_f[f] for f in f_list]) + sorted_g_f_list = np.sort(g_f_list) + face_count = np.searchsorted(sorted_g_f_list, r_threshes, side='left') else: - face_count = np.zeros_like(vertex_count) + face_count = np.zeros_like(r_threshes, dtype=np.int32) - # print(vertex_count - edge_count) ecc = vertex_count - edge_count + face_count if return_counts: diff --git a/pyproject.toml b/pyproject.toml index 106cc77..79ed743 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "ect" -version = "0.1.7" +version = "0.1.8" authors = [ { name="Liz Munch", email="muncheli@msu.edu" }, ]