diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..d859784 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 05f0ee2cbf1a89bc2143796d01dd7d31 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/api.doctree b/.doctrees/api.doctree new file mode 100644 index 0000000..0127171 Binary files /dev/null and b/.doctrees/api.doctree differ diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle new file mode 100644 index 0000000..544c5a2 Binary files /dev/null and b/.doctrees/environment.pickle differ diff --git a/.doctrees/getting_started.doctree b/.doctrees/getting_started.doctree new file mode 100644 index 0000000..b098136 Binary files /dev/null and b/.doctrees/getting_started.doctree differ diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 0000000..a4d6629 Binary files /dev/null and b/.doctrees/index.doctree differ diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 0000000..cd34335 --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + Overview: module code — PathSimAnalysis documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ +

All modules for which code is available

+ + +
+
+ +
+
+
+
+ + +
+ + + + + + +
+
+
Other Versions
+
+ +
+
+ + + \ No newline at end of file diff --git a/_modules/pathsimanalysis/psa.html b/_modules/pathsimanalysis/psa.html new file mode 100644 index 0000000..9f47eff --- /dev/null +++ b/_modules/pathsimanalysis/psa.html @@ -0,0 +1,2353 @@ + + + + + + + + + + + + + + + + + + + + + + pathsimanalysis.psa — PathSimAnalysis documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for pathsimanalysis.psa

+# -*- Mode: python; tab-width: 4; indent-tabs-mode:nil; coding:utf-8 -*-
+# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
+#
+# MDAnalysis --- https://www.mdanalysis.org
+# Copyright (c) 2006-2017 The MDAnalysis Development Team and contributors
+# (see the file AUTHORS for the full list of names)
+#
+# Released under the GNU Public Licence, v2 or any higher version
+#
+# Please cite your use of MDAnalysis in published work:
+#
+# R. J. Gowers, M. Linke, J. Barnoud, T. J. E. Reddy, M. N. Melo, S. L. Seyler,
+# D. L. Dotson, J. Domanski, S. Buchoux, I. M. Kenney, and O. Beckstein.
+# MDAnalysis: A Python package for the rapid analysis of molecular dynamics
+# simulations. In S. Benthall and S. Rostrup editors, Proceedings of the 15th
+# Python in Science Conference, pages 102-109, Austin, TX, 2016. SciPy.
+# doi: 10.25080/majora-629e541a-00e
+#
+# N. Michaud-Agrawal, E. J. Denning, T. B. Woolf, and O. Beckstein.
+# MDAnalysis: A Toolkit for the Analysis of Molecular Dynamics Simulations.
+# J. Comput. Chem. 32 (2011), 2319--2327, doi:10.1002/jcc.21787
+#
+
+r"""
+Calculating path similarity --- :mod:`pathsimanalysis.psa`
+==========================================================================
+
+.. versionadded:: 0.10.0
+
+The module contains code to calculate the geometric similarity of trajectories
+using path metrics such as the Hausdorff or Fréchet distances
+:footcite:p:`Seyler2015`. The path metrics are functions of two paths and return a
+nonnegative number, i.e., a distance. Two paths are identical if their distance
+is zero, and large distances indicate dissimilarity. Each path metric is a
+function of the individual points (e.g., coordinate snapshots) that comprise
+each path and, loosely speaking, identify the two points, one per path of a
+pair of paths, where the paths deviate the most.  The distance between these
+points of maximal deviation is measured by the root mean square deviation
+(RMSD), i.e., to compute structural similarity.
+
+One typically computes the pairwise similarity for an ensemble of paths to
+produce a symmetric distance matrix, which can be clustered to, at a glance,
+identify patterns in the trajectory data. To properly analyze a path ensemble,
+one must select a suitable reference structure to which all paths (each
+conformer in each path) will be universally aligned using the rotations
+determined by the best-fit rmsds. Distances between paths and their structures
+are then computed directly with no further alignment. This pre-processing step
+is necessary to preserve the metric properties of the Hausdorff and Fréchet
+metrics; using the best-fit rmsd on a pairwise basis does not generally
+preserve the triangle inequality.
+
+Note
+----
+The `PSAnalysisTutorial`_ outlines a typical application of PSA to
+a set of trajectories, including doing proper alignment,
+performing distance comparisons, and generating heat
+map-dendrogram plots from hierarchical clustering.
+
+.. _`PSAnalysisTutorial`: https://github.com/Becksteinlab/PSAnalysisTutorial
+
+
+Helper functions and variables
+------------------------------
+The following convenience functions are used by other functions in this module.
+
+.. autofunction:: sqnorm
+.. autofunction:: get_msd_matrix
+.. autofunction:: get_coord_axes
+
+
+Classes, methods, and functions
+-------------------------------
+
+.. autofunction:: get_path_metric_func
+.. autofunction:: hausdorff
+.. autofunction:: hausdorff_wavg
+.. autofunction:: hausdorff_avg
+.. autofunction:: hausdorff_neighbors
+.. autofunction:: discrete_frechet
+.. autofunction:: dist_mat_to_vec
+
+.. autoclass:: Path
+   :members:
+
+   .. attribute:: u_original
+
+      :class:`~MDAnalysis.Universe` object with a trajectory
+
+   .. attribute:: u_reference
+
+      :class:`~MDAnalysis.Universe` object containing a reference structure
+
+   .. attribute:: select
+
+      string, selection for
+      :meth:`~MDAnalysis.core.groups.AtomGroup.select_atoms` to select frame
+      from :attr:`Path.u_reference`
+
+   .. attribute:: path_select
+
+      string, selection for
+      :meth:`~MDAnalysis.core.groups.AtomGroup.select_atoms` to select atoms
+      to compose :attr:`Path.path`
+
+   .. attribute:: ref_frame
+
+      int, frame index to select frame from :attr:`Path.u_reference`
+
+   .. attribute:: u_fitted
+
+      :class:`~MDAnalysis.Universe` object with the fitted trajectory
+
+   .. attribute:: path
+
+      :class:`numpy.ndarray` object representation of the fitted trajectory
+
+.. autoclass:: PSAPair
+
+   .. attribute:: npaths
+
+      int, total number of paths in the comparison in which *this*
+      :class:`PSAPair` was generated
+
+   .. attribute:: matrix_id
+
+      (int, int), (row, column) indices of the location of *this*
+      :class:`PSAPair` in the corresponding pairwise distance matrix
+
+   .. attribute:: pair_id
+
+      int, ID of *this* :class:`PSAPair` (the pair_id:math:`^\text{th}`
+      comparison) in the distance vector corresponding to the pairwise distance
+      matrix
+
+   .. attribute:: nearest_neighbors
+
+      dict, contains the nearest neighbors by frame index and the
+      nearest neighbor distances for each path in *this* :class:`PSAPair`
+
+   .. attribute:: hausdorff_pair
+
+      dict, contains the frame indices of the Hausdorff pair for each path in
+      *this* :class:`PSAPair` and the corresponding (Hausdorff) distance
+
+.. autoclass:: PSAnalysis
+   :members:
+
+   .. attribute:: universes
+
+      list of :class:`MDAnalysis.Universe` objects containing trajectories
+
+   .. attribute:: u_reference
+
+      :class:`MDAnalysis.Universe` object containing a reference structure
+
+   .. attribute:: select
+
+      string, selection for
+      :meth:`~MDAnalysis.core.groups.AtomGroup.select_atoms` to select frame
+      from :attr:`PSAnalysis.u_reference`
+
+   .. attribute:: path_select
+
+      string, selection for
+      :meth:`~MDAnalysis.core.groups.AtomGroup.select_atoms` to select atoms
+      to compose :attr:`Path.path`
+
+   .. attribute:: ref_frame
+
+      int, frame index to select frame from :attr:`Path.u_reference`
+
+   .. attribute:: paths
+
+      list of :class:`numpy.ndarray` objects representing the set/ensemble of
+      fitted trajectories
+
+   .. attribute:: D
+
+      :class:`numpy.ndarray` which stores the calculated distance matrix
+
+
+.. Markup definitions
+.. ------------------
+..
+.. |3Dp| replace:: :math:`N_p \times N \times 3`
+.. |2Dp| replace:: :math:`N_p \times (3N)`
+.. |3Dq| replace:: :math:`N_q \times N \times 3`
+.. |2Dq| replace:: :math:`N_q \times (3N)`
+.. |3D| replace:: :math:`N_p\times N\times 3`
+.. |2D| replace:: :math:`N_p\times 3N`
+.. |Np| replace:: :math:`N_p`
+
+
+.. Rubric:: References
+
+.. footbibliography::
+"""
+import pickle
+import os
+import warnings
+import numbers
+
+import numpy as np
+from scipy import spatial, cluster
+from scipy.spatial.distance import directed_hausdorff
+import matplotlib
+
+import MDAnalysis
+import MDAnalysis.analysis.align
+from MDAnalysis import NoDataError
+from MDAnalysis.lib.util import deprecate
+
+import logging
+logger = logging.getLogger('MDAnalysis.analysis.psa')
+
+
[docs]def get_path_metric_func(name): + """Selects a path metric function by name. + + Parameters + ---------- + name : str + name of path metric + + Returns + ------- + path_metric : function + The path metric function specified by *name* (if found). + """ + path_metrics = { + 'hausdorff' : hausdorff, + 'weighted_average_hausdorff' : hausdorff_wavg, + 'average_hausdorff' : hausdorff_avg, + 'hausdorff_neighbors' : hausdorff_neighbors, + 'discrete_frechet' : discrete_frechet + } + try: + return path_metrics[name] + except KeyError as key: + errmsg = (f'Path metric "{key}" not found. Valid selections: ' + f'{" ".join(n for n in path_metrics.keys())}') + raise KeyError(errmsg) from None
+ + +
[docs]def sqnorm(v, axis=None): + """Compute the sum of squares of elements along specified axes. + + Parameters + ---------- + v : numpy.ndarray + coordinates + axes : None / int / tuple (optional) + Axes or axes along which a sum is performed. The default + (*axes* = ``None``) performs a sum over all the dimensions of + the input array. The value of *axes* may be negative, in + which case it counts from the last axis to the zeroth axis. + + Returns + ------- + float + the sum of the squares of the elements of `v` along `axes` + + """ + return np.sum(v*v, axis=axis)
+ + +
[docs]def get_msd_matrix(P, Q, axis=None): + r"""Generate the matrix of pairwise mean-squared deviations between paths. + + The MSDs between all pairs of points in `P` and `Q` are + calculated, each pair having a point from `P` and a point from + `Q`. + + `P` (`Q`) is a :class:`numpy.ndarray` of :math:`N_p` (:math:`N_q`) time + steps, :math:`N` atoms, and :math:`3N` coordinates (e.g., + :attr:`MDAnalysis.core.groups.AtomGroup.positions`). The pairwise MSD + matrix has dimensions :math:`N_p` by :math:`N_q`. + + Parameters + ---------- + P : numpy.ndarray + the points in the first path + Q : numpy.ndarray + the points in the second path + + Returns + ------- + msd_matrix : numpy.ndarray + matrix of pairwise MSDs between points in `P` and points + in `Q` + + Notes + ----- + We calculate the MSD matrix + + .. math:: + M_{ij} = ||p_i - q_j||^2 + + where :math:`p_i \in P` and :math:`q_j \in Q`. + """ + return np.asarray([sqnorm(p - Q, axis=axis) for p in P])
+ + +def reshaper(path, axis): + """Flatten path when appropriate to facilitate calculations + requiring two dimensional input. + """ + if len(axis) > 1: + path = path.reshape(len(path), -1) + return path + +
[docs]def get_coord_axes(path): + """Return the number of atoms and the axes corresponding to atoms + and coordinates for a given path. + + The `path` is assumed to be a :class:`numpy.ndarray` where the 0th axis + corresponds to a frame (a snapshot of coordinates). The :math:`3N` + (Cartesian) coordinates are assumed to be either: + + 1. all in the 1st axis, starting with the x,y,z coordinates of the + first atom, followed by the *x*,*y*,*z* coordinates of the 2nd, etc. + 2. in the 1st *and* 2nd axis, where the 1st axis indexes the atom + number and the 2nd axis contains the *x*,*y*,*z* coordinates of + each atom. + + Parameters + ---------- + path : numpy.ndarray + representing a path + + Returns + ------- + (int, (int, ...)) + the number of atoms and the axes containing coordinates + + """ + path_dimensions = len(path.shape) + if path_dimensions == 3: + N = path.shape[1] + axis = (1,2) # 1st axis: atoms, 2nd axis: x,y,z coords + elif path_dimensions == 2: + # can use mod to check if total # coords divisible by 3 + N = path.shape[1] / 3 + axis = (1,) # 1st axis: 3N structural coords (x1,y1,z1,...,xN,xN,zN) + else: + raise ValueError("Path must have 2 or 3 dimensions; the first " + "dimensions (axis 0) must correspond to frames, " + "axis 1 (and axis 2, if present) must contain atomic " + "coordinates.") + return N, axis
+ + +
[docs]def hausdorff(P, Q): + r"""Calculate the symmetric Hausdorff distance between two paths. + + The metric used is RMSD, as opposed to the more conventional L2 + (Euclidean) norm, because this is convenient for i.e., comparing + protein configurations. + + *P* (*Q*) is a :class:`numpy.ndarray` of :math:`N_p` (:math:`N_q`) time + steps, :math:`N` atoms, and :math:`3N` coordinates (e.g., + :attr:`MDAnalysis.core.groups.AtomGroup.positions`). *P* (*Q*) has + either shape |3Dp| (|3Dq|), or |2Dp| (|2Dq|) in flattened form. + + Note that reversing the path does not change the Hausdorff distance. + + Parameters + ---------- + P : numpy.ndarray + the points in the first path + Q : numpy.ndarray + the points in the second path + + Returns + ------- + float + the Hausdorff distance between paths `P` and `Q` + + Example + ------- + Calculate the Hausdorff distance between two halves of a trajectory: + + >>> import MDAnalysis as mda + >>> import numpy + >>> from MDAnalysis.tests.datafiles import PSF, DCD + >>> import pathsimanalysis as psa + >>> u = mda.Universe(PSF,DCD) + >>> mid = int(len(u.trajectory)/2) + >>> ca = u.select_atoms('name CA') + >>> P = numpy.array([ + ... ca.positions for _ in u.trajectory[:mid:] + ... ]) # first half of trajectory + >>> Q = numpy.array([ + ... ca.positions for _ in u.trajectory[mid::] + ... ]) # second half of trajectory + >>> psa.hausdorff(P,Q) + 4.778663899862152 + >>> psa.hausdorff(P,Q[::-1]) # hausdorff distance w/ reversed 2nd trajectory + 4.778663899862152 + + + Notes + ----- + :func:`scipy.spatial.distance.directed_hausdorff` is an optimized + implementation of the early break algorithm of :footcite:p:`Taha2015`; the + latter code is used here to calculate the symmetric Hausdorff + distance with an RMSD metric + + """ + N_p, axis_p = get_coord_axes(P) + N_q, axis_q = get_coord_axes(Q) + + if N_p != N_q: + raise ValueError("P and Q must have matching sizes") + + P = reshaper(P, axis_p) + Q = reshaper(Q, axis_q) + + return max(directed_hausdorff(P, Q)[0], + directed_hausdorff(Q, P)[0]) / np.sqrt(N_p)
+ + +
[docs]def hausdorff_wavg(P, Q): + r"""Calculate the weighted average Hausdorff distance between two paths. + + *P* (*Q*) is a :class:`numpy.ndarray` of :math:`N_p` (:math:`N_q`) time + steps, :math:`N` atoms, and :math:`3N` coordinates (e.g., + :attr:`MDAnalysis.core.groups.AtomGroup.positions`). *P* (*Q*) has + either shape |3Dp| (|3Dq|), or |2Dp| (|2Dq|) in flattened form. The nearest + neighbor distances for *P* (to *Q*) and those of *Q* (to *P*) are averaged + individually to get the average nearest neighbor distance for *P* and + likewise for *Q*. These averages are then summed and divided by 2 to get a + measure that gives equal weight to *P* and *Q*. + + Parameters + ---------- + P : numpy.ndarray + the points in the first path + Q : numpy.ndarray + the points in the second path + + Returns + ------- + float + the weighted average Hausdorff distance between paths `P` and `Q` + + Example + ------- + + >>> import MDAnalysis as mda + >>> from MDAnalysis import Universe + >>> from MDAnalysis.tests.datafiles import PSF, DCD + >>> import pathsimanalysis as psa + >>> u = mda.Universe(PSF,DCD) + >>> mid = int(len(u.trajectory)/2) + >>> ca = u.select_atoms('name CA') + >>> P = numpy.array([ + ... ca.positions for _ in u.trajectory[:mid:] + ... ]) # first half of trajectory + >>> Q = numpy.array([ + ... ca.positions for _ in u.trajectory[mid::] + ... ]) # second half of trajectory + >>> psa.hausdorff_wavg(P,Q) + 2.5669644353703447 + >>> psa.hausdorff_wavg(P,Q[::-1]) # weighted avg hausdorff dist w/ Q reversed + 2.5669644353703447 + + Notes + ----- + The weighted average Hausdorff distance is not a true metric (it does not + obey the triangle inequality); see :footcite:p:`Seyler2015` for further + details. + + + """ + N, axis = get_coord_axes(P) + d = get_msd_matrix(P, Q, axis=axis) + out = 0.5*( np.mean(np.amin(d,axis=0)) + np.mean(np.amin(d,axis=1)) ) + return ( out / N )**0.5
+ + +
[docs]def hausdorff_avg(P, Q): + r"""Calculate the average Hausdorff distance between two paths. + + *P* (*Q*) is a :class:`numpy.ndarray` of :math:`N_p` (:math:`N_q`) time + steps, :math:`N` atoms, and :math:`3N` coordinates (e.g., + :attr:`MDAnalysis.core.groups.AtomGroup.positions`). *P* (*Q*) has + either shape |3Dp| (|3Dq|), or |2Dp| (|2Dq|) in flattened form. The nearest + neighbor distances for *P* (to *Q*) and those of *Q* (to *P*) are all + averaged together to get a mean nearest neighbor distance. This measure + biases the average toward the path that has more snapshots, whereas weighted + average Hausdorff gives equal weight to both paths. + + Parameters + ---------- + P : numpy.ndarray + the points in the first path + Q : numpy.ndarray + the points in the second path + + Returns + ------- + float + the average Hausdorff distance between paths `P` and `Q` + + Example + ------- + + >>> import MDAnalysis as mda + >>> from MDAnalysis.tests.datafiles import PSF, DCD + >>> import pathsimanalysis as psa + >>> u = mda.Universe(PSF,DCD) + >>> mid = int(len(u.trajectory)/2) + >>> ca = u.select_atoms('name CA') + >>> P = numpy.array([ + ... ca.positions for _ in u.trajectory[:mid:] + ... ]) # first half of trajectory + >>> Q = numpy.array([ + ... ca.positions for _ in u.trajectory[mid::] + ... ]) # second half of trajectory + >>> psa.hausdorff_avg(P,Q) + 2.5669646575869005 + >>> psa.hausdorff_avg(P,Q[::-1]) # hausdorff distance w/ reversed 2nd trajectory + 2.5669646575869005 + + + Notes + ----- + The average Hausdorff distance is not a true metric (it does not obey the + triangle inequality); see :footcite:p:`Seyler2015` for further details. + + """ + N, axis = get_coord_axes(P) + d = get_msd_matrix(P, Q, axis=axis) + out = np.mean( np.append( np.amin(d,axis=0), np.amin(d,axis=1) ) ) + return ( out / N )**0.5
+ + +
[docs]def hausdorff_neighbors(P, Q): + r"""Find the Hausdorff neighbors of two paths. + + *P* (*Q*) is a :class:`numpy.ndarray` of :math:`N_p` (:math:`N_q`) time + steps, :math:`N` atoms, and :math:`3N` coordinates (e.g., + :attr:`MDAnalysis.core.groups.AtomGroup.positions`). *P* (*Q*) has + either shape |3Dp| (|3Dq|), or |2Dp| (|2Dq|) in flattened form. + + Parameters + ---------- + P : numpy.ndarray + the points in the first path + Q : numpy.ndarray + the points in the second path + + Returns + ------- + dict + dictionary of two pairs of numpy arrays, the first pair (key + "frames") containing the indices of (Hausdorff) nearest + neighbors for `P` and `Q`, respectively, the second (key + "distances") containing (corresponding) nearest neighbor + distances for `P` and `Q`, respectively + + Notes + ----- + - Hausdorff neighbors are those points on the two paths that are separated by + the Hausdorff distance. They are the farthest nearest neighbors and are + maximally different in the sense of the Hausdorff distance + :footcite:p:`Seyler2015`. + - :func:`scipy.spatial.distance.directed_hausdorff` can also provide the + hausdorff neighbors. + + """ + N, axis = get_coord_axes(P) + d = get_msd_matrix(P, Q, axis=axis) + nearest_neighbors = { + 'frames' : (np.argmin(d, axis=1), np.argmin(d, axis=0)), + 'distances' : ((np.amin(d,axis=1)/N)**0.5, (np.amin(d, axis=0)/N)**0.5) + } + return nearest_neighbors
+ + +
[docs]def discrete_frechet(P, Q): + r"""Calculate the discrete Fréchet distance between two paths. + + *P* (*Q*) is a :class:`numpy.ndarray` of :math:`N_p` (:math:`N_q`) time + steps, :math:`N` atoms, and :math:`3N` coordinates (e.g., + :attr:`MDAnalysis.core.groups.AtomGroup.positions`). *P* (*Q*) has + either shape |3Dp| (|3Dq|), or :|2Dp| (|2Dq|) in flattened form. + + Parameters + ---------- + P : numpy.ndarray + the points in the first path + Q : numpy.ndarray + the points in the second path + + Returns + ------- + float + the discrete Fréchet distance between paths *P* and *Q* + + Example + ------- + Calculate the discrete Fréchet distance between two halves of a + trajectory. + + >>> import MDAnalysis as mda + >>> import numpy as np + >>> from MDAnalysis.tests.datafiles import PSF, DCD + >>> import pathsimanalysis as psa + >>> u = mda.Universe(PSF,DCD) + >>> mid = int(len(u.trajectory)/2) + >>> ca = u.select_atoms('name CA') + >>> P = np.array([ + ... ca.positions for _ in u.trajectory[:mid:] + ... ]) # first half of trajectory + >>> Q = np.array([ + ... ca.positions for _ in u.trajectory[mid::] + ... ]) # second half of trajectory + >>> psa.discrete_frechet(P,Q) + 4.778663984013591 + >>> psa.discrete_frechet(P,Q[::-1]) # frechet distance w/ 2nd trj reversed 2nd + 6.842901117711383 + + Note that reversing the direction increased the Fréchet distance: + it is sensitive to the direction of the path. + + Notes + ----- + + The discrete Fréchet metric is an approximation to the continuous Fréchet + metric :footcite:p:`Frechet1906,Alt1995`. The calculation of the continuous + Fréchet distance is implemented with the dynamic programming algorithm of + :footcite:p:`EiterMannila1994,EiterMannila1997`. + + """ + + N, axis = get_coord_axes(P) + Np, Nq = len(P), len(Q) + d = get_msd_matrix(P, Q, axis=axis) + ca = -np.ones((Np, Nq)) + + def c(i, j): + """Compute the coupling distance for two partial paths formed by *P* and + *Q*, where both begin at frame 0 and end (inclusive) at the respective + frame indices :math:`i-1` and :math:`j-1`. The partial path of *P* (*Q*) + up to frame *i* (*j*) is formed by the slicing ``P[0:i]`` (``Q[0:j]``). + + :func:`c` is called recursively to compute the coupling distance + between the two full paths *P* and *Q* (i.e., the discrete Frechet + distance) in terms of coupling distances between their partial paths. + + Parameters + ---------- + i : int + partial path of *P* through final frame *i-1* + j : int + partial path of *Q* through final frame *j-1* + + Returns + ------- + dist : float + the coupling distance between partial paths `P[0:i]` and `Q[0:j]` + """ + if ca[i,j] != -1 : + return ca[i,j] + if i > 0: + if j > 0: + ca[i,j] = max( min(c(i-1,j),c(i,j-1),c(i-1,j-1)), d[i,j] ) + else: + ca[i,j] = max( c(i-1,0), d[i,0] ) + elif j > 0: + ca[i,j] = max( c(0,j-1), d[0,j] ) + else: + ca[i,j] = d[0,0] + return ca[i,j] + + return (c(Np-1, Nq-1) / N)**0.5
+ + +
[docs]def dist_mat_to_vec(N, i, j): + """Convert distance matrix indices (in the upper triangle) to the index of + the corresponding distance vector. + + This is a convenience function to locate distance matrix elements (and the + pair generating it) in the corresponding distance vector. The row index *j* + should be greater than *i+1*, corresponding to the upper triangle of the + distance matrix. + + Parameters + ---------- + N : int + size of the distance matrix (of shape *N*-by-*N*) + i : int + row index (starting at 0) of the distance matrix + j : int + column index (starting at 0) of the distance matrix + + Returns + ------- + int + index (of the matrix element) in the corresponding distance vector + + """ + + if not (isinstance(N, numbers.Integral) and isinstance(i, numbers.Integral) + and isinstance(j, numbers.Integral)): + raise ValueError("N, i, j all must be of type int") + + if i < 0 or j < 0 or N < 2: + raise ValueError("Matrix indices are invalid; i and j must be greater " + "than 0 and N must be greater the 2") + + if (j > i and (i > N - 1 or j > N)) or (j < i and (i > N or j > N - 1)): + raise ValueError("Matrix indices are out of range; i and j must be " + "less than N = {0:d}".format(N)) + if j > i: + return (N*i) + j - (i+2)*(i+1) // 2 # old-style division for int output + elif j < i: + warnings.warn("Column index entered (j = {:d} is smaller than row " + "index (i = {:d}). Using symmetric element in upper " + "triangle of distance matrix instead: i --> j, " + "j --> i".format(j, i)) + return (N*j) + i - (j+2)*(j+1) // 2 # old-style division for int output + else: + raise ValueError("Error in processing matrix indices; i and j must " + "be integers less than integer N = {0:d} such that" + " j >= i+1.".format(N))
+ + +
[docs]class Path(object): + """Represent a path based on a :class:`~MDAnalysis.core.universe.Universe`. + + Pre-process a :class:`Universe` object: (1) fit the trajectory to a + reference structure, (2) convert fitted time series to a + :class:`numpy.ndarray` representation of :attr:`Path.path`. + + The analysis is performed with :meth:`PSAnalysis.run` and stores the result + in the :class:`numpy.ndarray` distance matrix :attr:`PSAnalysis.D`. + :meth:`PSAnalysis.run` also generates a fitted trajectory and path from + alignment of the original trajectories to a reference structure. + + .. versionadded:: 0.9.1 + + """ + + def __init__(self, universe, reference, select='name CA', + path_select='all', ref_frame=0): + """Setting up trajectory alignment and fitted path generation. + + Parameters + ---------- + universe : Universe + :class:`MDAnalysis.Universe` object containing a trajectory + reference : Universe + reference structure (uses `ref_frame` from the trajectory) + select : str or dict or tuple (optional) + The selection to operate on for rms fitting; can be one of: + + 1. any valid selection string for + :meth:`~MDAnalysis.core.groups.AtomGroup.select_atoms` that + produces identical selections in *mobile* and *reference*; or + 2. a dictionary ``{'mobile':sel1, 'reference':sel2}`` (the + :func:`MDAnalysis.analysis.align.fasta2select` function returns + such a dictionary based on a ClustalW_ or STAMP_ sequence + alignment); or + 3. a tuple ``(sel1, sel2)`` + + When using 2. or 3. with *sel1* and *sel2* then these selections + can also each be a list of selection strings (to generate an + AtomGroup with defined atom order as described under + :ref:`ordered-selections-label`). + ref_frame : int + frame index to select the coordinate frame from + `select.trajectory` + path_select : selection_string + atom selection composing coordinates of (fitted) path; if ``None`` + then `path_select` is set to `select` [``None``] + + """ + self.u_original = universe + self.u_reference = reference + self.select = select + self.ref_frame = ref_frame + self.path_select = path_select + + self.top_name = self.u_original.filename + self.trj_name = self.u_original.trajectory.filename + self.newtrj_name = None + self.u_fitted = None + self.path = None + self.natoms = None + +
[docs] def fit_to_reference(self, filename=None, prefix='', postfix='_fit', + rmsdfile=None, targetdir=os.path.curdir, + weights=None, tol_mass=0.1): + """Align each trajectory frame to the reference structure + + Parameters + ---------- + filename : str (optional) + file name for the RMS-fitted trajectory or pdb; defaults to the + original trajectory filename (from :attr:`Path.u_original`) with + `prefix` prepended + prefix : str (optional) + prefix for auto-generating the new output filename + rmsdfile : str (optional) + file name for writing the RMSD time series [``None``] + weights : {"mass", ``None``} or array_like (optional) + choose weights. With ``"mass"`` uses masses as weights; with + ``None`` weigh each atom equally. If a float array of the same + length as the selected AtomGroup is provided, use each element of + the `array_like` as a weight for the corresponding atom in the + AtomGroup. + tol_mass : float (optional) + Reject match if the atomic masses for matched atoms differ by more + than `tol_mass` [0.1] + + Returns + ------- + Universe + :class:`MDAnalysis.Universe` object containing a fitted trajectory + + Notes + ----- + Uses :class:`MDAnalysis.analysis.align.AlignTraj` for the fitting. + + + .. deprecated:: 0.16.1 + Instead of ``mass_weighted=True`` use new ``weights='mass'``; + refactored to fit with AnalysisBase API + + .. versionchanged:: 0.17.0 + Deprecated keyword `mass_weighted` was removed. + """ + head, tail = os.path.split(self.trj_name) + oldname, ext = os.path.splitext(tail) + filename = filename or oldname + self.newtrj_name = os.path.join(targetdir, filename + postfix + ext) + self.u_reference.trajectory[self.ref_frame] # select frame from ref traj + aligntrj = MDAnalysis.analysis.align.AlignTraj(self.u_original, + self.u_reference, + select=self.select, + filename=self.newtrj_name, + prefix=prefix, + weights=weights, + tol_mass=tol_mass).run() + if rmsdfile is not None: + aligntrj.save(rmsdfile) + return MDAnalysis.Universe(self.top_name, self.newtrj_name)
+ +
[docs] def to_path(self, fitted=False, select=None, flat=False): + r"""Generates a coordinate time series from the fitted universe + trajectory. + + Given a selection of *N* atoms from *select*, the atomic positions for + each frame in the fitted universe (:attr:`Path.u_fitted`) trajectory + (with |Np| total frames) are appended sequentially to form a 3D or 2D + (if *flat* is ``True``) :class:`numpy.ndarray` representation of the + fitted trajectory (with dimensions |3D| or |2D|, respectively). + + Parameters + ---------- + fitted : bool (optional) + construct a :attr:`Path.path` from the :attr:`Path.u_fitted` + trajectory; if ``False`` then :attr:`Path.path` is generated with + the trajectory from :attr:`Path.u_original` [``False``] + select : str (optional) + the selection for constructing the coordinates of each frame in + :attr:`Path.path`; if ``None`` then :attr:`Path.path_select` + is used, else it is overridden by *select* [``None``] + flat : bool (optional) + represent :attr:`Path.path` as a 2D (|2D|) :class:`numpy.ndarray`; + if ``False`` then :attr:`Path.path` is a 3D (|3D|) + :class:`numpy.ndarray` [``False``] + + Returns + ------- + numpy.ndarray + representing a time series of atomic positions of an + :class:`MDAnalysis.core.groups.AtomGroup` selection from + :attr:`Path.u_fitted.trajectory` + + """ + select = select if select is not None else self.path_select + if fitted: + if not isinstance(self.u_fitted, MDAnalysis.Universe): + raise TypeError("Fitted universe not found. Generate a fitted " + + "universe with fit_to_reference() first, or explicitly "+ + "set argument \"fitted\" to \"False\" to generate a " + + "path from the original universe.") + u = self.u_fitted + else: + u = self.u_original + frames = u.trajectory + atoms = u.select_atoms(select) + self.natoms = len(atoms) + frames.rewind() + if flat: + return np.array([atoms.positions.flatten() for _ in frames]) + else: + return np.array([atoms.positions for _ in frames])
+ +
[docs] def run(self, align=False, filename=None, postfix='_fit', rmsdfile=None, + targetdir=os.path.curdir, weights=None, tol_mass=0.1, + flat=False): + r"""Generate a path from a trajectory and reference structure. + + As part of the path generation, the trajectory can be superimposed + ("aligned") to a reference structure if specified. + + This is a convenience method to generate a fitted trajectory from an + inputted universe (:attr:`Path.u_original`) and reference structure + (:attr:`Path.u_reference`). :meth:`Path.fit_to_reference` and + :meth:`Path.to_path` are used consecutively to generate a new universe + (:attr:`Path.u_fitted`) containing the fitted trajectory along with the + corresponding :attr:`Path.path` represented as an + :class:`numpy.ndarray`. The method returns a tuple of the topology name + and new trajectory name, which can be fed directly into an + :class:`MDAnalysis.Universe` object after unpacking the tuple using the + ``*`` operator, as in + ``MDAnalysis.Universe(*(top_name, newtraj_name))``. + + Parameters + ---------- + align : bool (optional) + Align trajectory to atom selection :attr:`Path.select` of + :attr:`Path.u_reference`. If ``True``, a universe containing an + aligned trajectory is produced with :meth:`Path.fit_to_reference` + [``False``] + filename : str (optional) + filename for the RMS-fitted trajectory or pdb; defaults to the + original trajectory filename (from :attr:`Path.u_original`) with + *prefix* prepended + postfix : str (optional) + prefix for auto-generating the new output filename + rmsdfile : str (optional) + file name for writing the RMSD time series [``None``] + weights : {"mass", ``None``} or array_like (optional) + choose weights. With ``"mass"`` uses masses as weights; with + ``None`` weigh each atom equally. If a float array of the same + length as the selected AtomGroup is provided, use each element of + the `array_like` as a weight for the corresponding atom in the + AtomGroup. + tol_mass : float (optional) + Reject match if the atomic masses for matched atoms differ by more + than *tol_mass* [0.1] + flat : bool (optional) + represent :attr:`Path.path` with 2D (|2D|) :class:`numpy.ndarray`; + if ``False`` then :attr:`Path.path` is a 3D (|3D|) + :class:`numpy.ndarray` [``False``] + + Returns + ------- + topology_trajectory : tuple + A tuple of the topology name and new trajectory name. + + + .. deprecated:: 0.16.1 + Instead of ``mass_weighted=True`` use new ``weights='mass'``; + refactored to fit with AnalysisBase API + + .. versionchanged:: 0.17.0 + Deprecated keyword `mass_weighted` was removed. + """ + if align: + self.u_fitted = self.fit_to_reference( + filename=filename, postfix=postfix, + rmsdfile=rmsdfile, targetdir=targetdir, + weights=weights, tol_mass=0.1) + self.path = self.to_path(fitted=align, flat=flat) + return self.top_name, self.newtrj_name
+ +
[docs] def get_num_atoms(self): + """Return the number of atoms used to construct the :class:`Path`. + + Must run :meth:`Path.to_path` prior to calling this method. + + Returns + ------- + int + the number of atoms in the :class:`Path` + + + """ + if self.natoms is None: + raise ValueError("No path data; do 'Path.to_path()' first.") + return self.natoms
+ + +
[docs]class PSAPair(object): + """Generate nearest neighbor and Hausdorff pair information between a pair + of paths from an all-pairs comparison generated by :class:`PSA`. + + The nearest neighbors for each path of a pair of paths is generated by + :meth:`PSAPair.compute_nearest_neighbors` and stores the result + in a dictionary (:attr:`nearest_neighbors`): each path has a + :class:`numpy.ndarray` of the frames of its nearest neighbors, and a + :class:`numpy.ndarray` of its nearest neighbor distances + :attr:`PSAnalysis.D`. For example, *nearest_neighbors['frames']* is a pair + of :class:`numpy.ndarray`, the first being the frames of the nearest + neighbors of the first path, *i*, the second being those of the second path, + *j*. + + The Hausdorff pair for the pair of paths is found by calling + :meth:`find_hausdorff_pair` (locates the nearest neighbor pair having the + largest overall distance separating them), which stores the result in a + dictionary (:attr:`hausdorff_pair`) containing the frames (indices) of the + pair along with the corresponding (Hausdorff) distance. + *hausdorff_pair['frame']* contains a pair of frames in the first path, *i*, + and the second path, *j*, respectively, that correspond to the Hausdorff + distance between them. + + .. versionadded:: 0.11 + """ + + def __init__(self, npaths, i, j): + """Set up a :class:`PSAPair` for a pair of paths that are part of a + :class:`PSA` comparison of *npaths* total paths. + + Each unique pair of paths compared using :class:`PSA` is related by + their nearest neighbors (and corresponding distances) and the Hausdorff + pair and distance. :class:`PSAPair` is a convenience class for + calculating and encapsulating nearest neighbor and Hausdorff pair + information for one pair of paths. + + Given *npaths*, :class:`PSA` performs and all-pairs comparison among all + paths for a total of :math:`\text{npaths}*(\text{npaths}-1)/2` unique + comparisons. If distances between paths are computed, the all-pairs + comparison can be summarized in a symmetric distance matrix whose upper + triangle can be mapped to a corresponding distance vector form in a + one-to-one manner. A particular comparison of a pair of paths in a + given instance of :class:`PSAPair` is thus unique identified by the row + and column indices in the distance matrix representation (whether or not + distances are actually computed), or a single ID (index) in the + corresponding distance vector. + + Parameters + ---------- + npaths : int + total number of paths in :class:`PSA` used to generate *this* + :class:`PSAPair` + i : int + row index (starting at 0) of the distance matrix + j : int + column index (starting at 0) of the distance matrix + """ + self.npaths = npaths + self.matrix_idx = (i,j) + self.pair_idx = self._dvec_idx(i,j) + + # Set by calling hausdorff_nn + self.nearest_neighbors = {'frames' : None, 'distances' : None} + + # Set by self.getHausdorffPair + self.hausdorff_pair = {'frames' : (None, None), 'distance' : None} + + def _dvec_idx(self, i, j): + """Convert distance matrix indices (in the upper triangle) to the index + of the corresponding distance vector. + + This is a convenience function to locate distance matrix elements (and + the pair generating it) in the corresponding distance vector. The row + index *j* should be greater than *i+1*, corresponding to the upper + triangle of the distance matrix. + + Parameters + ---------- + i : int + row index (starting at 0) of the distance matrix + j : int + column index (starting at 0) of the distance matrix + + Returns + ------- + int + (matrix element) index in the corresponding distance vector + """ + return (self.npaths*i) + j - (i+2)*(i+1)/2 + + def compute_nearest_neighbors(self, P,Q, N=None): + """Generates Hausdorff nearest neighbor lists of *frames* (by index) and + *distances* for *this* pair of paths corresponding to distance matrix + indices (*i*,*j*). + + :meth:`PSAPair.compute_nearest_neighbors` calls + :func:`hausdorff_neighbors` to populate the dictionary of the nearest + neighbor lists of frames (by index) and distances + (:attr:`PSAPair.nearest_neighbors`). This method must explicitly take as + arguments a pair of paths, *P* and *Q*, where *P* is the + :math:`i^\text{th}` path and *Q* is the :math:`j^\text{th}` path among + the set of *N* total paths in the comparison. + + Parameters + ---------- + P : numpy.ndarray + representing a path + Q : numpy.ndarray + representing a path + N : int + size of the distance matrix (of shape *N*-by-*N*) [``None``] + + """ + hn = hausdorff_neighbors(P, Q) + self.nearest_neighbors['frames'] = hn['frames'] + self.nearest_neighbors['distances'] = hn['distances'] + + def find_hausdorff_pair(self): + r"""Find the Hausdorff pair (of frames) for *this* pair of paths. + + :meth:`PSAPair.find_hausdorff_pair` requires that + `:meth:`PSAPair.compute_nearest_neighbors` be called first to + generate the nearest neighbors (and corresponding distances) for each + path in *this* :class:`PSAPair`. The Hausdorff pair is the nearest + neighbor pair (of snapshots/frames), one in the first path and one in + the second, with the largest separation distance. + """ + if self.nearest_neighbors['distances'] is None: + raise NoDataError("Nearest neighbors have not been calculated yet;" + " run compute_nearest_neighbors() first.") + + nn_idx_P, nn_idx_Q = self.nearest_neighbors['frames'] + nn_dist_P, nn_dist_Q = self.nearest_neighbors['distances'] + max_nn_dist_P = max(nn_dist_P) + max_nn_dist_Q = max(nn_dist_Q) + if max_nn_dist_P > max_nn_dist_Q: + max_nn_idx_P = np.argmax(nn_dist_P) + self.hausdorff_pair['frames'] = max_nn_idx_P, nn_idx_P[max_nn_idx_P] + self.hausdorff_pair['distance'] = max_nn_dist_P + else: + max_nn_idx_Q = np.argmax(nn_dist_Q) + self.hausdorff_pair['frames'] = nn_idx_Q[max_nn_idx_Q], max_nn_idx_Q + self.hausdorff_pair['distance'] = max_nn_dist_Q + + def get_nearest_neighbors(self, frames=True, distances=True): + """Returns the nearest neighbor frame indices, distances, or both, for + each path in *this* :class:`PSAPair`. + + :meth:`PSAPair.get_nearest_neighbors` requires that the nearest + neighbors (:attr:`nearest_neighbors`) be initially computed by first + calling :meth:`compute_nearest_neighbors`. At least one of *frames* + or *distances* must be ``True``, or else a ``NoDataError`` is raised. + + Parameters + ---------- + frames : bool + if ``True``, return nearest neighbor frame indices + [``True``] + distances : bool + if ``True``, return nearest neighbor distances [``True``] + + Returns + ------- + dict or tuple + If both *frames* and *distances* are ``True``, return the entire + dictionary (:attr:`nearest_neighbors`); if only *frames* is + ``True``, return a pair of :class:`numpy.ndarray` containing the + indices of the frames (for the pair of paths) of the nearest + neighbors; if only *distances* is ``True``, return a pair of + :class:`numpy.ndarray` of the nearest neighbor distances (for the + pair of paths). + + """ + if self.nearest_neighbors['distances'] is None: + raise NoDataError("Nearest neighbors have not been calculated yet;" + " run compute_nearest_neighbors() first.") + + if frames: + if distances: + return self.nearest_neighbors + else: + return self.nearest_neighbors['frames'] + elif distances: + return self.nearest_neighbors['distances'] + else: + raise NoDataError('Need to select Hausdorff pair "frames" or' + ' "distances" or both. "frames" and "distances"' + ' cannot both be set to False.') + + def get_hausdorff_pair(self, frames=True, distance=True): + """Returns the Hausdorff pair of frames indices, the Hausdorff distance, + or both, for the paths in *this* :class:`PSAPair`. + + :meth:`PSAPair.get_hausdorff_pair` requires that the Hausdorff pair + (and distance) be initially found by first calling + :meth:`find_hausdorff_pair`. At least one of *frames* or *distance* + must be ``True``, or else a ``NoDataError`` is raised. + + Parameters + ---------- + frames : bool + if ``True``, return the indices of the frames + of the Hausdorff pair [``True``] + distances : bool + if ``True``, return Hausdorff distance [``True``] + + Returns + ------- + dict or tuple + If both *frames* and *distance* are ``True``, return the entire + dictionary (:attr:`hausdorff_pair`); if only *frames* is + ``True``, return a pair of ``int`` containing the indices of the + frames (one index per path) of the Hausdorff pair; if only *distance* + is ``True``, return the Hausdorff distance for this path pair. + """ + if self.hausdorff_pair['distance'] is None: + raise NoDataError("Hausdorff pair has not been calculated yet;" + " run find_hausdorff_pair() first.") + + if frames: + if distance: + return self.hausdorff_pair + else: + return self.hausdorff_pair['frames'] + elif distance: + return self.hausdorff_pair['distance'] + else: + raise NoDataError('Need to select Hausdorff pair "frames" or' + ' "distance" or both. "frames" and "distance"' + ' cannot both be set to False.')
+ + +
[docs]class PSAnalysis(object): + """Perform Path Similarity Analysis (PSA) on a set of trajectories. + + The analysis is performed with :meth:`PSAnalysis.run` and stores the result + in the :class:`numpy.ndarray` distance matrix :attr:`PSAnalysis.D`. + :meth:`PSAnalysis.run` also generates a fitted trajectory and path from + alignment of the original trajectories to a reference structure. + + .. versionadded:: 0.8 + + .. versionchanged:: 1.0.0 + ``save_result()`` method has been removed. You can use ``np.save()`` on + :attr:`PSAnalysis.D` instead. + """ + def __init__(self, universes, reference=None, select='name CA', + ref_frame=0, path_select=None, labels=None, + targetdir=os.path.curdir): + """Setting up Path Similarity Analysis. + + The mutual similarity between all unique pairs of trajectories + are computed using a selected path metric. + + Parameters + ---------- + universes : list + a list of universes (:class:`MDAnalysis.Universe` object), each + containing a trajectory + reference : Universe + reference coordinates; :class:`MDAnalysis.Universe` object; if + ``None`` the first time step of the first item in `universes` is used + [``None``] + select : str or dict or tuple + The selection to operate on; can be one of: + + 1. any valid selection string for + :meth:`~MDAnalysis.core.groups.AtomGroup.select_atoms` that + produces identical selections in *mobile* and *reference*; or + 2. a dictionary ``{'mobile':sel1, 'reference':sel2}`` (the + :func:`MDAnalysis.analysis.align.fasta2select` function returns + such a dictionary based on a ClustalW_ or STAMP_ sequence + alignment); or + 3. a tuple ``(sel1, sel2)`` + + When using 2. or 3. with *sel1* and *sel2* then these selections + can also each be a list of selection strings (to generate an + AtomGroup with defined atom order as described under + :ref:`ordered-selections-label`). + tol_mass : float + Reject match if the atomic masses for matched atoms differ by more + than *tol_mass* [0.1] + ref_frame : int + frame index to select frame from *reference* [0] + path_select : str + atom selection composing coordinates of (fitted) path; if ``None`` + then *path_select* is set to *select* [``None``] + targetdir : str + output files are saved there; if ``None`` then "./psadata" is + created and used [.] + labels : list + list of strings, names of trajectories to be analyzed + (:class:`MDAnalysis.Universe`); if ``None``, defaults to trajectory + names [``None``] + + + .. _ClustalW: http://www.clustal.org/ + .. _STAMP: http://www.compbio.dundee.ac.uk/manuals/stamp.4.2/ + + """ + self.universes = universes + self.u_reference = self.universes[0] if reference is None else reference + self.select = select + self.ref_frame = ref_frame + self.path_select = self.select if path_select is None else path_select + if targetdir is None: + try: + targetdir = os.path.join(os.path.curdir, 'psadata') + os.makedirs(targetdir) + except OSError: + if not os.path.isdir(targetdir): + raise + self.targetdir = os.path.realpath(targetdir) + + # Set default directory names for storing topology/reference structures, + # fitted trajectories, paths, distance matrices, and plots + self.datadirs = {'fitted_trajs' : 'fitted_trajs', + 'paths' : 'paths', + 'distance_matrices' : 'distance_matrices', + 'plots' : 'plots'} + for dir_name, directory in self.datadirs.items(): + try: + full_dir_name = os.path.join(self.targetdir, dir_name) + os.makedirs(full_dir_name) + except OSError: + if not os.path.isdir(full_dir_name): + raise + + # Keep track of topology, trajectory, and related files + trj_names = [] + for i, u in enumerate(self.universes): + head, tail = os.path.split(u.trajectory.filename) + filename, ext = os.path.splitext(tail) + trj_names.append(filename) + self.trj_names = trj_names + self.fit_trj_names = None + self.path_names = None + self.top_name = self.universes[0].filename if len(universes) != 0 else None + self.labels = labels or self.trj_names + + # Names of persistence (pickle) files where topology and trajectory + # filenames are stored--should not be modified by user + self._top_pkl = os.path.join(self.targetdir, "psa_top-name.pkl") + self._trjs_pkl = os.path.join(self.targetdir, "psa_orig-traj-names.pkl") + self._fit_trjs_pkl = os.path.join(self.targetdir, "psa_fitted-traj-names.pkl") + self._paths_pkl = os.path.join(self.targetdir, "psa_path-names.pkl") + self._labels_pkl = os.path.join(self.targetdir, "psa_labels.pkl") + # Pickle topology and trajectory filenames for this analysis to curdir + with open(self._top_pkl, 'wb') as output: + pickle.dump(self.top_name, output) + with open(self._trjs_pkl, 'wb') as output: + pickle.dump(self.trj_names, output) + with open(self._labels_pkl, 'wb') as output: + pickle.dump(self.labels, output) + + self.natoms = None + self.npaths = None + self.paths = None + self.D = None # pairwise distances + self._HP = None # (distance vector order) list of all Hausdorff pairs + self._NN = None # (distance vector order) list of all nearest neighbors + self._psa_pairs = None # (distance vector order) list of all PSAPairs + +
[docs] def generate_paths(self, align=False, filename=None, infix='', weights=None, + tol_mass=False, ref_frame=None, flat=False, save=True, store=False): + """Generate paths, aligning each to reference structure if necessary. + + Parameters + ---------- + align : bool + Align trajectories to atom selection :attr:`PSAnalysis.select` + of :attr:`PSAnalysis.u_reference` [``False``] + filename : str + strings representing base filename for fitted trajectories and + paths [``None``] + infix : str + additional tag string that is inserted into the output filename of + the fitted trajectory files [''] + weights : {"mass", ``None``} or array_like (optional) + choose weights. With ``"mass"`` uses masses as weights; with + ``None`` weigh each atom equally. If a float array of the same + length as the selected AtomGroup is provided, use each element of + the `array_like` as a weight for the corresponding atom in the + AtomGroup [``None``] + tol_mass : float + Reject match if the atomic masses for matched atoms differ by more + than *tol_mass* [``False``] + ref_frame : int + frame index to select frame from *reference* [``None``] + flat : bool + represent :attr:`Path.path` as a 2D (|2D|) :class:`numpy.ndarray`; + if ``False`` then :attr:`Path.path` is a 3D (|3D|) + :class:`numpy.ndarray` [``False``] + save : bool + if ``True``, pickle list of names for fitted trajectories + [``True``] + store : bool + if ``True`` then writes each path (:class:`numpy.ndarray`) + in :attr:`PSAnalysis.paths` to compressed npz (numpy) files + [``False``] + + + The fitted trajectories are written to new files in the + "/trj_fit" subdirectory in :attr:`PSAnalysis.targetdir` named + "filename(*trajectory*)XXX*infix*_psa", where "XXX" is a number between + 000 and 999; the extension of each file is the same as its original. + Optionally, the trajectories can also be saved in numpy compressed npz + format in the "/paths" subdirectory in :attr:`PSAnalysis.targetdir` for + persistence and can be accessed as the attribute + :attr:`PSAnalysis.paths`. + + + .. deprecated:: 0.16.1 + Instead of ``mass_weighted=True`` use new ``weights='mass'``; + refactored to fit with AnalysisBase API + + .. versionchanged:: 0.17.0 + Deprecated keyword `mass_weighted` was removed. + + .. versionchanged:: 1.0.0 + Defaults for the `store` and `filename` keywords have been changed + from `True` and `fitted` to `False` and `None` respectively. These + now match the docstring documented defaults. + """ + if ref_frame is None: + ref_frame = self.ref_frame + + paths = [] + fit_trj_names = [] + for i, u in enumerate(self.universes): + p = Path(u, self.u_reference, select=self.select, + path_select=self.path_select, ref_frame=ref_frame) + trj_dir = os.path.join(self.targetdir, self.datadirs['fitted_trajs']) + postfix = '{0}{1}{2:03n}'.format(infix, '_psa', i+1) + top_name, fit_trj_name = p.run(align=align, filename=filename, + postfix=postfix, + targetdir=trj_dir, + weights=weights, + tol_mass=tol_mass, flat=flat) + paths.append(p.path) + fit_trj_names.append(fit_trj_name) + self.natoms, axis = get_coord_axes(paths[0]) + self.paths = paths + self.npaths = len(paths) + self.fit_trj_names = fit_trj_names + if save: + with open(self._fit_trjs_pkl, 'wb') as output: + pickle.dump(self.fit_trj_names, output) + if store: + self.save_paths(filename=filename)
+ +
[docs] def run(self, **kwargs): + """Perform path similarity analysis on the trajectories to compute + the distance matrix. + + A number of parameters can be changed from the defaults. The + result is stored as the array :attr:`PSAnalysis.D`. + + Parameters + ---------- + metric : str or callable + selection string specifying the path metric to measure pairwise + distances among :attr:`PSAnalysis.paths` or a callable with the + same call signature as :func:`hausdorff` + [``'hausdorff'``] + start : int + `start` and `stop` frame index with `step` size: analyze + ``trajectory[start:stop:step]`` [``None``] + stop : int + step : int + + .. versionchanged:: 1.0.0 + `store` and `filename` have been removed. + + """ + metric = kwargs.pop('metric', 'hausdorff') + start = kwargs.pop('start', None) + stop = kwargs.pop('stop', None) + step = kwargs.pop('step', None) + + if isinstance(metric, str): + metric_func = get_path_metric_func(str(metric)) + else: + metric_func = metric + numpaths = self.npaths + D = np.zeros((numpaths,numpaths)) + + for i in range(0, numpaths-1): + for j in range(i+1, numpaths): + P = self.paths[i][start:stop:step] + Q = self.paths[j][start:stop:step] + D[i,j] = metric_func(P, Q) + D[j,i] = D[i,j] + self.D = D
+ +
[docs] def run_pairs_analysis(self, **kwargs): + """Perform PSA Hausdorff (nearest neighbor) pairs analysis on all unique + pairs of paths in :attr:`PSAnalysis.paths`. + + Partial results can be stored in separate lists, where each list is + indexed according to distance vector convention (i.e., element *(i,j)* + in distance matrix representation corresponds to element + :math:`s=N*i+j-(i+1)*(i+2)` in distance vector representation, which is + the :math:`s`:sup:`th` comparison). For each unique pair of paths, the + nearest neighbors for that pair can be stored in :attr:`NN` and the + Hausdorff pair in :attr:`HP`. :attr:`PP` stores the full information + of Hausdorff pairs analysis that is available for each pair of path, + including nearest neighbors lists and the Hausdorff pairs. + + The pairwise distances are stored as the array :attr:`PSAnalysis.D`. + + Parameters + ---------- + start : int + `start` and `stop` frame index with `step` size: analyze + ``trajectory[start:stop:step]`` [``None``] + stop : int + step : int + neighbors : bool + if ``True``, then stores dictionary of nearest neighbor + frames/distances in :attr:`PSAnalysis.NN` [``False``] + hausdorff_pairs : bool + if ``True``, then stores dictionary of Hausdorff pair + frames/distances in :attr:`PSAnalysis.HP` [``False``] + """ + start = kwargs.pop('start', None) + stop = kwargs.pop('stop', None) + step = kwargs.pop('step', None) + neighbors = kwargs.pop('neighbors', False) + hausdorff_pairs = kwargs.pop('hausdorff_pairs', False) + + numpaths = self.npaths + D = np.zeros((numpaths,numpaths)) + self._NN = [] # list of nearest neighbors pairs + self._HP = [] # list of Hausdorff pairs + self._psa_pairs = [] # list of PSAPairs + + for i in range(0, numpaths-1): + for j in range(i+1, numpaths): + pp = PSAPair(i, j, numpaths) + P = self.paths[i][start:stop:step] + Q = self.paths[j][start:stop:step] + pp.compute_nearest_neighbors(P, Q, self.natoms) + pp.find_hausdorff_pair() + D[i,j] = pp.hausdorff_pair['distance'] + D[j,i] = D[i,j] + self._psa_pairs.append(pp) + if neighbors: + self._NN.append(pp.get_nearest_neighbors()) + if hausdorff_pairs: + self._HP.append(pp.get_hausdorff_pair()) + self.D = D
+ +
[docs] def save_paths(self, filename=None): + """Save fitted :attr:`PSAnalysis.paths` to numpy compressed npz files. + + The data are saved with :func:`numpy.savez_compressed` in the directory + specified by :attr:`PSAnalysis.targetdir`. + + Parameters + ---------- + filename : str + specifies filename [``None``] + + Returns + ------- + filename : str + + See Also + -------- + load + + """ + filename = filename or 'path_psa' + head = os.path.join(self.targetdir, self.datadirs['paths']) + outfile = os.path.join(head, filename) + if self.paths is None: + raise NoDataError("Paths have not been calculated yet") + path_names = [] + for i, path in enumerate(self.paths): + current_outfile = "{0}{1:03n}.npy".format(outfile, i+1) + np.save(current_outfile, self.paths[i]) + path_names.append(current_outfile) + logger.info("Wrote path to file %r", current_outfile) + self.path_names = path_names + with open(self._paths_pkl, 'wb') as output: + pickle.dump(self.path_names, output) + return filename
+ +
[docs] def load(self): + """Load fitted paths specified by 'psa_path-names.pkl' in + :attr:`PSAnalysis.targetdir`. + + All filenames are determined by :class:`PSAnalysis`. + + See Also + -------- + save_paths + + """ + if not os.path.exists(self._paths_pkl): + raise NoDataError("Fitted trajectories cannot be loaded; save file" + + "{0} does not exist.".format(self._paths_pkl)) + self.path_names = np.load(self._paths_pkl, allow_pickle=True) + self.paths = [np.load(pname) for pname in self.path_names] + if os.path.exists(self._labels_pkl): + self.labels = np.load(self._labels_pkl, allow_pickle=True) + logger.info("Loaded paths from %r", self._paths_pkl)
+ +
[docs] def plot(self, filename=None, linkage='ward', count_sort=False, + distance_sort=False, figsize=4.5, labelsize=12): + """Plot a clustered distance matrix. + + Usese method *linkage* and plots the corresponding dendrogram. Rows + (and columns) are identified using the list of strings specified by + :attr:`PSAnalysis.labels`. + + If `filename` is supplied then the figure is also written to file (the + suffix determines the file type, e.g. pdf, png, eps, ...). All other + keyword arguments are passed on to :func:`matplotlib.pyplot.matshow`. + + + Parameters + ---------- + filename : str + save figure to *filename* [``None``] + linkage : str + name of linkage criterion for clustering [``'ward'``] + count_sort : bool + see :func:`scipy.cluster.hierarchy.dendrogram` [``False``] + distance_sort : bool + see :func:`scipy.cluster.hierarchy.dendrogram` [``False``] + figsize : float + set the vertical size of plot in inches [``4.5``] + labelsize : float + set the font size for colorbar labels; font size for path labels on + dendrogram default to 3 points smaller [``12``] + + Returns + ------- + Z + `Z` from :meth:`cluster` + dgram + `dgram` from :meth:`cluster` + dist_matrix_clus + clustered distance matrix (reordered) + + .. versionchanged:: 1.0.0 + :attr:`tick1On`, :attr:`tick2On`, :attr:`label1On` and :attr:`label2On` + changed to :attr:`tick1line`, :attr:`tick2line`, :attr:`label1` and + :attr:`label2` due to upstream deprecation (see #2493) + """ + from matplotlib.pyplot import figure, colorbar, cm, savefig, clf + + if self.D is None: + raise ValueError( + "No distance data; do 'PSAnalysis.run()' first.") + npaths = len(self.D) + dist_matrix = self.D + + dgram_loc, hmap_loc, cbar_loc = self._get_plot_obj_locs() + aspect_ratio = 1.25 + clf() + fig = figure(figsize=(figsize*aspect_ratio, figsize)) + ax_hmap = fig.add_axes(hmap_loc) + ax_dgram = fig.add_axes(dgram_loc) + + Z, dgram = self.cluster(method=linkage, \ + count_sort=count_sort, \ + distance_sort=distance_sort) + rowidx = colidx = dgram['leaves'] # get row-wise ordering from clustering + ax_dgram.invert_yaxis() # Place origin at up left (from low left) + + minDist, maxDist = 0, np.max(dist_matrix) + dist_matrix_clus = dist_matrix[rowidx,:] + dist_matrix_clus = dist_matrix_clus[:,colidx] + im = ax_hmap.matshow(dist_matrix_clus, aspect='auto', origin='lower', \ + cmap=cm.YlGn, vmin=minDist, vmax=maxDist) + ax_hmap.invert_yaxis() # Place origin at upper left (from lower left) + ax_hmap.locator_params(nbins=npaths) + ax_hmap.set_xticks(np.arange(npaths), minor=True) + ax_hmap.set_yticks(np.arange(npaths), minor=True) + ax_hmap.tick_params(axis='x', which='both', labelleft='off', \ + labelright='off', labeltop='on', labelsize=0) + ax_hmap.tick_params(axis='y', which='both', labelleft='on', \ + labelright='off', labeltop='off', labelsize=0) + rowlabels = [self.labels[i] for i in rowidx] + collabels = [self.labels[i] for i in colidx] + ax_hmap.set_xticklabels(collabels, rotation='vertical', \ + size=(labelsize-4), multialignment='center', minor=True) + ax_hmap.set_yticklabels(rowlabels, rotation='horizontal', \ + size=(labelsize-4), multialignment='left', ha='right', \ + minor=True) + + ax_color = fig.add_axes(cbar_loc) + colorbar(im, cax=ax_color, ticks=np.linspace(minDist, maxDist, 10), \ + format="%0.1f") + ax_color.tick_params(labelsize=labelsize) + + # Remove major ticks and labels from both heat map axes + for tic in ax_hmap.xaxis.get_major_ticks(): + tic.tick1line.set_visible(False) + tic.tick2line.set_visible(False) + tic.label1.set_visible(False) + tic.label2.set_visible(False) + for tic in ax_hmap.yaxis.get_major_ticks(): + tic.tick1line.set_visible(False) + tic.tick2line.set_visible(False) + tic.label1.set_visible(False) + tic.label2.set_visible(False) + # Remove minor ticks from both heat map axes + for tic in ax_hmap.xaxis.get_minor_ticks(): + tic.tick1line.set_visible(False) + tic.tick2line.set_visible(False) + for tic in ax_hmap.yaxis.get_minor_ticks(): + tic.tick1line.set_visible(False) + tic.tick2line.set_visible(False) + # Remove tickmarks from colorbar + for tic in ax_color.yaxis.get_major_ticks(): + tic.tick1line.set_visible(False) + tic.tick2line.set_visible(False) + + if filename is not None: + head = os.path.join(self.targetdir, self.datadirs['plots']) + outfile = os.path.join(head, filename) + savefig(outfile, dpi=300, bbox_inches='tight') + + return Z, dgram, dist_matrix_clus
+ +
[docs] def plot_annotated_heatmap(self, filename=None, linkage='ward', \ + count_sort=False, distance_sort=False, \ + figsize=8, annot_size=6.5): + """Plot a clustered distance matrix. + + Uses method `linkage` and plots annotated distances in the matrix. Rows + (and columns) are identified using the list of strings specified by + :attr:`PSAnalysis.labels`. + + If `filename` is supplied then the figure is also written to file (the + suffix determines the file type, e.g. pdf, png, eps, ...). All other + keyword arguments are passed on to :func:`matplotlib.pyplot.imshow`. + + Parameters + ---------- + filename : str + save figure to *filename* [``None``] + linkage : str + name of linkage criterion for clustering [``'ward'``] + count_sort : bool + see :func:`scipy.cluster.hierarchy.dendrogram` [``False``] + distance_sort : bool + see :func:`scipy.cluster.hierarchy.dendrogram` [``False``] + figsize : float + set the vertical size of plot in inches [``4.5``] + annot_size : float + font size of annotation labels on heat map [``6.5``] + + Returns + ------- + Z + `Z` from :meth:`cluster` + dgram + `dgram` from :meth:`cluster` + dist_matrix_clus + clustered distance matrix (reordered) + + + Note + ---- + This function requires the seaborn_ package, which can be installed + with `pip install seaborn` or `conda install seaborn`. + + .. _seaborn: https://seaborn.pydata.org/ + + .. versionchanged:: 1.0.0 + :attr:`tick1On`, :attr:`tick2On`, :attr:`label1On` and :attr:`label2On` + changed to :attr:`tick1line`, :attr:`tick2line`, :attr:`label1` and + :attr:`label2` due to upstream deprecation (see #2493) + + """ + from matplotlib.pyplot import figure, colorbar, cm, savefig, clf + + try: + import seaborn as sns + except ImportError: + raise ImportError( + """ERROR --- The seaborn package cannot be found! + + The seaborn API could not be imported. Please install it first. + You can try installing with pip directly from the + internet: + + pip install seaborn + + Alternatively, download the package from + + http://pypi.python.org/pypi/seaborn/ + + and install in the usual manner. + """ + ) from None + + if self.D is None: + raise ValueError( + "No distance data; do 'PSAnalysis.run()' first.") + dist_matrix = self.D + + Z, dgram = self.cluster(method=linkage, \ + count_sort=count_sort, \ + distance_sort=distance_sort, \ + no_plot=True) + rowidx = colidx = dgram['leaves'] # get row-wise ordering from clustering + dist_matrix_clus = dist_matrix[rowidx,:] + dist_matrix_clus = dist_matrix_clus[:,colidx] + + clf() + aspect_ratio = 1.25 + fig = figure(figsize=(figsize*aspect_ratio, figsize)) + ax_hmap = fig.add_subplot(111) + ax_hmap = sns.heatmap(dist_matrix_clus, \ + linewidths=0.25, cmap=cm.YlGn, annot=True, fmt='3.1f', \ + square=True, xticklabels=rowidx, yticklabels=colidx, \ + annot_kws={"size": 7}, ax=ax_hmap) + + # Remove major ticks from both heat map axes + for tic in ax_hmap.xaxis.get_major_ticks(): + tic.tick1line.set_visible(False) + tic.tick2line.set_visible(False) + tic.label1.set_visible(False) + tic.label2.set_visible(False) + for tic in ax_hmap.yaxis.get_major_ticks(): + tic.tick1line.set_visible(False) + tic.tick2line.set_visible(False) + tic.label1.set_visible(False) + tic.label2.set_visible(False) + # Remove minor ticks from both heat map axes + for tic in ax_hmap.xaxis.get_minor_ticks(): + tic.tick1line.set_visible(False) + tic.tick2line.set_visible(False) + for tic in ax_hmap.yaxis.get_minor_ticks(): + tic.tick1line.set_visible(False) + tic.tick2line.set_visible(False) + + if filename is not None: + head = os.path.join(self.targetdir, self.datadirs['plots']) + outfile = os.path.join(head, filename) + savefig(outfile, dpi=600, bbox_inches='tight') + + return Z, dgram, dist_matrix_clus
+ +
[docs] def plot_nearest_neighbors(self, filename=None, idx=0, \ + labels=('Path 1', 'Path 2'), figsize=4.5, \ + multiplot=False, aspect_ratio=1.75, \ + labelsize=12): + """Plot nearest neighbor distances as a function of normalized frame + number. + + The frame number is mapped to the interval *[0, 1]*. + + If `filename` is supplied then the figure is also written to file (the + suffix determines the file type, e.g. pdf, png, eps, ...). All other + keyword arguments are passed on to :func:`matplotlib.pyplot.imshow`. + + Parameters + ---------- + filename : str + save figure to *filename* [``None``] + idx : int + index of path (pair) comparison to plot [``0``] + labels : (str, str) + pair of names to label nearest neighbor distance + curves [``('Path 1', 'Path 2')``] + figsize : float + set the vertical size of plot in inches [``4.5``] + multiplot : bool + set to ``True`` to enable plotting multiple nearest + neighbor distances on the same figure [``False``] + aspect_ratio : float + set the ratio of width to height of the plot [``1.75``] + labelsize : float + set the font size for colorbar labels; font size for path labels on + dendrogram default to 3 points smaller [``12``] + + Returns + ------- + ax : axes + + Note + ---- + This function requires the seaborn_ package, which can be installed + with `pip install seaborn` or `conda install seaborn`. + + .. _seaborn: https://seaborn.pydata.org/ + + """ + from matplotlib.pyplot import figure, savefig, tight_layout, clf, show + try: + import seaborn as sns + except ImportError: + raise ImportError( + """ERROR --- The seaborn package cannot be found! + + The seaborn API could not be imported. Please install it first. + You can try installing with pip directly from the + internet: + + pip install seaborn + + Alternatively, download the package from + + http://pypi.python.org/pypi/seaborn/ + + and install in the usual manner. + """ + ) from None + + colors = sns.xkcd_palette(["cherry", "windows blue"]) + + if self._NN is None: + raise ValueError("No nearest neighbor data; run " + "'PSAnalysis.run_pairs_analysis(neighbors=True)' first.") + + sns.set_style('whitegrid') + + if not multiplot: + clf() + fig = figure(figsize=(figsize*aspect_ratio, figsize)) + ax = fig.add_subplot(111) + + nn_dist_P, nn_dist_Q = self._NN[idx]['distances'] + frames_P = len(nn_dist_P) + frames_Q = len(nn_dist_Q) + progress_P = np.asarray(range(frames_P))/(1.0*frames_P) + progress_Q = np.asarray(range(frames_Q))/(1.0*frames_Q) + + ax.plot(progress_P, nn_dist_P, color=colors[0], lw=1.5, label=labels[0]) + ax.plot(progress_Q, nn_dist_Q, color=colors[1], lw=1.5, label=labels[1]) + + ax.legend() + ax.set_xlabel(r'(normalized) progress by frame number', fontsize=12) + ax.set_ylabel(r'nearest neighbor rmsd ($\AA$)', fontsize=12) + ax.tick_params(axis='both', which='major', labelsize=12, pad=4) + + sns.despine(bottom=True, left=True, ax=ax) + tight_layout() + + if filename is not None: + head = os.path.join(self.targetdir, self.datadirs['plots']) + outfile = os.path.join(head, filename) + savefig(outfile, dpi=300, bbox_inches='tight') + + return ax
+ +
[docs] def cluster(self, dist_mat=None, method='ward', count_sort=False, \ + distance_sort=False, no_plot=False, no_labels=True, \ + color_threshold=4): + """Cluster trajectories and optionally plot the dendrogram. + + This method is used by :meth:`PSAnalysis.plot` to generate a heatmap- + dendrogram combination plot. By default, the distance matrix, + :attr:`PSAnalysis.D`, is assumed to exist, converted to + distance-vector form, and inputted to :func:`cluster.hierarchy.linkage` + to generate a clustering. For convenience in plotting arbitrary + distance matrices, one can also be specify `dist_mat`, which will be + checked for proper distance matrix form by + :func:`spatial.distance.squareform` + + Parameters + ---------- + dist_mat : numpy.ndarray + user-specified distance matrix to be clustered [``None``] + method : str + name of linkage criterion for clustering [``'ward'``] + no_plot : bool + if ``True``, do not render the dendrogram [``False``] + no_labels : bool + if ``True`` then do not label dendrogram [``True``] + color_threshold : float + For brevity, let t be the color_threshold. Colors all the + descendent links below a cluster node k the same color if k is + the first node below the cut threshold t. All links connecting + nodes with distances greater than or equal to the threshold are + colored blue. If t is less than or equal to zero, all nodes are + colored blue. If color_threshold is None or ‘default’, + corresponding with MATLAB(TM) behavior, the threshold is set to + 0.7*max(Z[:,2]). [``4``]] + + Returns + ------- + Z + output from :func:`scipy.cluster.hierarchy.linkage`; + list of indices representing the row-wise order of the objects + after clustering + dgram + output from :func:`scipy.cluster.hierarchy.dendrogram` + """ + # perhaps there is a better way to manipulate the plot... or perhaps it + # is not even necessary? In any case, the try/finally makes sure that + # we are not permanently changing the user's global state + orig_linewidth = matplotlib.rcParams['lines.linewidth'] + matplotlib.rcParams['lines.linewidth'] = 0.5 + try: + if dist_mat: + dist_vec = spatial.distance.squareform(dist_mat, + force='tovector', + checks=True) + else: + dist_vec = self.get_pairwise_distances(vectorform=True) + Z = cluster.hierarchy.linkage(dist_vec, method=method) + dgram = cluster.hierarchy.dendrogram( + Z, no_labels=no_labels, orientation='left', + count_sort=count_sort, distance_sort=distance_sort, + no_plot=no_plot, color_threshold=color_threshold) + finally: + matplotlib.rcParams['lines.linewidth'] = orig_linewidth + return Z, dgram
+ + def _get_plot_obj_locs(self): + """Find and return coordinates for dendrogram, heat map, and colorbar. + + Returns + ------- + tuple + tuple of coordinates for placing the dendrogram, heat map, and + colorbar in the plot. + """ + plot_xstart = 0.04 + plot_ystart = 0.04 + label_margin = 0.155 + + dgram_height = 0.2 # dendrogram heights(s) + hmap_xstart = plot_xstart + dgram_height + label_margin + + # Set locations for dendrogram(s), matrix, and colorbar + hmap_height = 0.8 + hmap_width = 0.6 + dgram_loc = [plot_xstart, plot_ystart, dgram_height, hmap_height] + cbar_width = 0.02 + cbar_xstart = hmap_xstart + hmap_width + 0.01 + cbar_loc = [cbar_xstart, plot_ystart, cbar_width, hmap_height] + hmap_loc = [hmap_xstart, plot_ystart, hmap_width, hmap_height] + + return dgram_loc, hmap_loc, cbar_loc + +
[docs] def get_num_atoms(self): + """Return the number of atoms used to construct the :class:`Path` instances in + :class:`PSA`. + + Returns + ------- + int + the number of atoms in any path + + Note + ---- + Must run :meth:`PSAnalysis.generate_paths` prior to calling this + method. + """ + if self.natoms is None: + raise ValueError( + "No path data; do 'PSAnalysis.generate_paths()' first.") + return self.natoms
+ +
[docs] def get_num_paths(self): + """Return the number of paths in :class:`PSA`. + + Note + ---- + Must run :meth:`PSAnalysis.generate_paths` prior to calling this method. + + Returns + ------- + int + the number of paths in :class:`PSA` + """ + if self.npaths is None: + raise ValueError( + "No path data; do 'PSAnalysis.generate_paths()' first.") + return self.npaths
+ +
[docs] def get_paths(self): + """Return the paths in :class:`PSA`. + + Note + ---- + Must run :meth:`PSAnalysis.generate_paths` prior to calling this + method. + + Returns + ------- + list + list of :class:`numpy.ndarray` representations of paths in + :class:`PSA` + """ + if self.paths is None: + raise ValueError( + "No path data; do 'PSAnalysis.generate_paths()' first.") + return self.paths
+ +
[docs] def get_pairwise_distances(self, vectorform=False, checks=False): + """Return the distance matrix (or vector) of pairwise path distances. + + Note + ---- + Must run :meth:`PSAnalysis.run` prior to calling this method. + + Parameters + ---------- + vectorform : bool + if ``True``, return the distance vector instead [``False``] + checks : bool + if ``True``, check that :attr:`PSAnalysis.D` is a proper distance + matrix [``False``] + + Returns + ------- + numpy.ndarray + representation of the distance matrix (or vector) + + """ + if self.D is None: + raise ValueError( + "No distance data; do 'PSAnalysis.run()' first.") + if vectorform: + return spatial.distance.squareform(self.D, force='tovector', + checks=checks) + else: + return self.D
+ + @property + def psa_pairs(self): + """The list of :class:`PSAPair` instances for each pair of paths. + + :attr:`psa_pairs` is a list of all :class:`PSAPair` objects (in + distance vector order). The elements of a :class:`PSAPair` are pairs of + paths that have been compared using + :meth:`PSAnalysis.run_pairs_analysis`. Each :class:`PSAPair` contains + nearest neighbor and Hausdorff pair information specific to a pair of + paths. The nearest neighbor frames and distances for a :class:`PSAPair` + can be accessed in the nearest neighbor dictionary using the keys + 'frames' and 'distances', respectively. E.g., + :attr:`PSAPair.nearest_neighbors['distances']` returns a *pair* of + :class:`numpy.ndarray` corresponding to the nearest neighbor distances + for each path. Similarly, Hausdorff pair information can be accessed + using :attr:`PSAPair.hausdorff_pair` with the keys 'frames' and + 'distance'. + + Note + ---- + Must run :meth:`PSAnalysis.run_pairs_analysis` prior to calling this + method. + + """ + if self._psa_pairs is None: + raise ValueError("No nearest neighbors data; do" + " 'PSAnalysis.run_pairs_analysis()' first.") + return self._psa_pairs + + @property + def hausdorff_pairs(self): + """The Hausdorff pair for each (unique) pairs of paths. + + This attribute contains a list of Hausdorff pair information (in + distance vector order), where each element is a dictionary containing + the pair of frames and the (Hausdorff) distance between a pair of + paths. See :meth:`PSAnalysis.psa_pairs` and + :attr:`PSAPair.hausdorff_pair` for more information about accessing + Hausdorff pair data. + + Note + ---- + Must run :meth:`PSAnalysis.run_pairs_analysis` with + ``hausdorff_pairs=True`` prior to calling this method. + + """ + if self._HP is None: + raise ValueError("No Hausdorff pairs data; do " + "'PSAnalysis.run_pairs_analysis(hausdorff_pairs=True)' " + "first.") + return self._HP + + @property + def nearest_neighbors(self): + """The nearest neighbors for each (unique) pair of paths. + + This attribute contains a list of nearest neighbor information (in + distance vector order), where each element is a dictionary containing + the nearest neighbor frames and distances between a pair of paths. See + :meth:`PSAnalysis.psa_pairs` and :attr:`PSAPair.nearest_neighbors` for + more information about accessing nearest neighbor data. + + Note + ---- + Must run :meth:`PSAnalysis.run_pairs_analysis` with + ``neighbors=True`` prior to calling this method. + + """ + if self._NN is None: + raise ValueError("No nearest neighbors data; do" + " 'PSAnalysis.run_pairs_analysis(neighbors=True)'" + " first.") + return self._NN
+
+ +
+
+ +
+
+
+
+ + +
+ + + + + + +
+
+
Other Versions
+
+ +
+
+ + + \ No newline at end of file diff --git a/_sources/api.rst.txt b/_sources/api.rst.txt new file mode 100644 index 0000000..a60c504 --- /dev/null +++ b/_sources/api.rst.txt @@ -0,0 +1,4 @@ +API Documentation +================= + +.. automodule:: pathsimanalysis.psa diff --git a/_sources/getting_started.rst.txt b/_sources/getting_started.rst.txt new file mode 100644 index 0000000..dfd56bb --- /dev/null +++ b/_sources/getting_started.rst.txt @@ -0,0 +1,15 @@ +Getting Started +=============== + +This page details how to get started with PathSimAnalysis. + +Installation +------------ + +PathSimAnalysis is currently only installable from source. + +.. code-block:: bash + + git clone --depth=1 https://github.com/MDAnalysis/PathSimAnalysis + cd PathSimAnalysis + pip install . \ No newline at end of file diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 0000000..bcec6b7 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,25 @@ +.. pathsimanalysis documentation master file, created by + sphinx-quickstart on Thu Mar 15 13:55:56 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to PathSimAnalysis's documentation! +========================================================= + +PathSimAnalysis is an MDAnalysis based analysis package for calculating the similarity between molecular dynamics trajectories. + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + getting_started + api + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/_static/README.md b/_static/README.md new file mode 100644 index 0000000..8d30b2b --- /dev/null +++ b/_static/README.md @@ -0,0 +1,16 @@ +# Static Doc Directory + +Add any paths that contain custom static files (such as style sheets) here, +relative to the `conf.py` file's directory. +They are copied after the builtin static files, +so a file named "default.css" will overwrite the builtin "default.css". + +The path to this folder is set in the Sphinx `conf.py` file in the line: +```python +html_static_path = ['_static'] +``` + +## Examples of file to add to this directory +* Custom Cascading Style Sheets +* Custom JavaScript code +* Static logo images diff --git a/_static/_sphinx_javascript_frameworks_compat.js b/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 0000000..8141580 --- /dev/null +++ b/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,123 @@ +/* Compatability shim for jQuery and underscores.js. + * + * Copyright Sphinx contributors + * Released under the two clause BSD licence + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..7577acb --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,903 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css new file mode 100644 index 0000000..c718cee --- /dev/null +++ b/_static/css/badge_only.css @@ -0,0 +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 diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff b/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff2 b/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff b/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff2 b/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/_static/css/fonts/fontawesome-webfont.eot b/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/_static/css/fonts/fontawesome-webfont.svg b/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/css/fonts/fontawesome-webfont.ttf b/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/_static/css/fonts/fontawesome-webfont.woff b/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/_static/css/fonts/fontawesome-webfont.woff2 b/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/_static/css/fonts/lato-bold-italic.woff b/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff differ diff --git a/_static/css/fonts/lato-bold-italic.woff2 b/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/_static/css/fonts/lato-bold.woff b/_static/css/fonts/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff differ diff --git a/_static/css/fonts/lato-bold.woff2 b/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff2 differ diff --git a/_static/css/fonts/lato-normal-italic.woff b/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff differ diff --git a/_static/css/fonts/lato-normal-italic.woff2 b/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/_static/css/fonts/lato-normal.woff b/_static/css/fonts/lato-normal.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/_static/css/fonts/lato-normal.woff differ diff --git a/_static/css/fonts/lato-normal.woff2 b/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff2 differ diff --git a/_static/css/theme.css b/_static/css/theme.css new file mode 100644 index 0000000..19a446a --- /dev/null +++ b/_static/css/theme.css @@ -0,0 +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 diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000..d06a71d --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * 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"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000..b57ae3b --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000..a858a41 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/jquery.js b/_static/jquery.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/_static/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",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/_static/js/html5shiv.min.js b/_static/js/html5shiv.min.js new file mode 100644 index 0000000..cd1c674 --- /dev/null +++ b/_static/js/html5shiv.min.js @@ -0,0 +1,4 @@ +/** +* @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/_static/js/theme.js b/_static/js/theme.js new file mode 100644 index 0000000..1fddb6e --- /dev/null +++ b/_static/js/theme.js @@ -0,0 +1 @@ +!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t b.version + }), function (i, item) { + $("
").append( + $("").text(item.display).attr('href', item.url) + ).appendTo("#versionselector"); + }); + }) + .fail(function (d, textStatus, error) { + console.error("getJSON failed, status: " + textStatus + ", error: " + error); + }); +}); + +console.log("Loading versions from " + versions_json_url); diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 0000000..250f566 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * 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 */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/logo/mda_favicon.ico b/_static/logo/mda_favicon.ico new file mode 100644 index 0000000..3c102d0 Binary files /dev/null and b/_static/logo/mda_favicon.ico differ diff --git a/_static/logo/mda_logo.png b/_static/logo/mda_logo.png new file mode 100644 index 0000000..6553570 Binary files /dev/null and b/_static/logo/mda_logo.png differ diff --git a/_static/logo/placeholder_favicon.svg b/_static/logo/placeholder_favicon.svg new file mode 100644 index 0000000..cf62228 --- /dev/null +++ b/_static/logo/placeholder_favicon.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + diff --git a/_static/logo/placeholder_logo.png b/_static/logo/placeholder_logo.png new file mode 100644 index 0000000..77e9056 Binary files /dev/null and b/_static/logo/placeholder_logo.png differ diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000..d96755f Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000..7107cec Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 0000000..84ab303 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,75 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #9C6500 } /* Comment.Preproc */ +.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #E40000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #008400 } /* Generic.Inserted */ +.highlight .go { color: #717171 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #687822 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #767600 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #666666 } /* Literal.Number.Bin */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #A45A77 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #0000FF } /* Name.Function.Magic */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .vm { color: #19177C } /* Name.Variable.Magic */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 0000000..97d56a7 --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,566 @@ +/* + * 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"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "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.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) 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." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + 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; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // 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([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.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; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // 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 }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // 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]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/site.css b/_static/site.css new file mode 100644 index 0000000..6da5916 --- /dev/null +++ b/_static/site.css @@ -0,0 +1,10256 @@ +@charset "UTF-8"; +@import url(css/theme.css); +@font-face { + font-family: 'PT Sans', Helvetica, Arial, 'sans-serif'; +} + +@use "sass:math"; +/* Bulma Utilities */ +.file-cta, +.file-name, .select select, .textarea, .input { + -moz-appearance: none; + -webkit-appearance: none; + align-items: center; + border: 1px solid transparent; + border-radius: 4px; + box-shadow: none; + display: inline-flex; + font-size: 1rem; + height: 2.5em; + justify-content: flex-start; + line-height: 1.5; + padding-bottom: calc(0.5em - 1px); + padding-left: calc(0.75em - 1px); + padding-right: calc(0.75em - 1px); + padding-top: calc(0.5em - 1px); + position: relative; + vertical-align: top; +} + +.file-cta:focus, +.file-name:focus, .select select:focus, .textarea:focus, .input:focus, .is-focused.file-cta, +.is-focused.file-name, .select select.is-focused, .is-focused.textarea, .is-focused.input, .file-cta:active, +.file-name:active, .select select:active, .textarea:active, .input:active, .is-active.file-cta, +.is-active.file-name, .select select.is-active, .is-active.textarea, .is-active.input { + outline: none; +} + +[disabled].file-cta, +[disabled].file-name, .select select[disabled], [disabled].textarea, [disabled].input, fieldset[disabled] .file-cta, +fieldset[disabled] .file-name, fieldset[disabled] .select select, .select fieldset[disabled] select, fieldset[disabled] .textarea, fieldset[disabled] .input { + cursor: not-allowed; +} + +.is-unselectable, .file, .tabs, .breadcrumb { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.select:not(.is-multiple):not(.is-loading)::after, .navbar-link:not(.is-arrowless)::after { + border: 3px solid transparent; + border-radius: 2px; + border-right: 0; + border-top: 0; + content: " "; + display: block; + height: 0.625em; + margin-top: -0.4375em; + pointer-events: none; + position: absolute; + top: 50%; + transform: rotate(-45deg); + transform-origin: center; + width: 0.625em; +} + +.tabs:not(:last-child), .level:not(:last-child), .breadcrumb:not(:last-child) { + margin-bottom: 1.5rem; +} + +.control.is-loading::after, .select.is-loading::after { + animation: spinAround 500ms infinite linear; + border: 2px solid #dbdbdb; + border-radius: 290486px; + border-right-color: transparent; + border-top-color: transparent; + content: ""; + display: block; + height: 1em; + position: relative; + width: 1em; +} + +.hero-video, .is-overlay, .image.is-square img, +.image.is-square .has-ratio, .image.is-1by1 img, +.image.is-1by1 .has-ratio, .image.is-5by4 img, +.image.is-5by4 .has-ratio, .image.is-4by3 img, +.image.is-4by3 .has-ratio, .image.is-3by2 img, +.image.is-3by2 .has-ratio, .image.is-5by3 img, +.image.is-5by3 .has-ratio, .image.is-16by9 img, +.image.is-16by9 .has-ratio, .image.is-2by1 img, +.image.is-2by1 .has-ratio, .image.is-3by1 img, +.image.is-3by1 .has-ratio, .image.is-4by5 img, +.image.is-4by5 .has-ratio, .image.is-3by4 img, +.image.is-3by4 .has-ratio, .image.is-2by3 img, +.image.is-2by3 .has-ratio, .image.is-3by5 img, +.image.is-3by5 .has-ratio, .image.is-9by16 img, +.image.is-9by16 .has-ratio, .image.is-1by2 img, +.image.is-1by2 .has-ratio, .image.is-1by3 img, +.image.is-1by3 .has-ratio { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; +} + +/* Bulma Base */ +/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */ +html, +body, +p, +ol, +ul, +li, +dl, +dt, +dd, +blockquote, +figure, +fieldset, +legend, +textarea, +pre, +iframe, +hr, +h1, +h2, +.rst-content #index h3, +.rst-content .toctree-wrapper .caption, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; +} + +h1, +h2, +.rst-content #index h3, +.rst-content .toctree-wrapper .caption, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal; +} + +ul { + list-style: none; +} + +button, +input, +select, +textarea { + margin: 0; +} + +html { + box-sizing: border-box; +} + +*, *::before, *::after { + box-sizing: inherit; +} + +img, +video { + height: auto; + max-width: 100%; +} + +iframe { + border: 0; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +td:not([align]), +th:not([align]) { + text-align: inherit; +} + +html { + background-color: #FFFFFF; + font-size: 16px; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + min-width: 300px; + overflow-x: hidden; + overflow-y: scroll; + text-rendering: optimizeLegibility; + text-size-adjust: 100%; +} + +article, +aside, +figure, +footer, +header, +hgroup, +section { + display: block; +} + +body, +button, +input, +optgroup, +select, +textarea { + font-family: "PT Sans", Helvetica, Arial, "sans-serif"; +} + +code, +pre { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; + font-family: Menlo, Monaco, "Courier New", monospace; +} + +body { + color: rgba(0, 0, 0, 0.87); + font-size: 1em; + font-weight: 400; + line-height: 1.5; +} + +a { + color: #FF9200; + cursor: pointer; + text-decoration: none; +} + +a strong { + color: currentColor; +} + +a:hover { + color: #ca6500; +} + +code { + background-color: #f8f8f8; + color: rgba(0, 0, 0, 0.87); + font-size: 1em; + font-weight: normal; + padding: 0.25em; +} + +hr { + background-color: #FFFFFF; + border: none; + display: block; + height: 2px; + margin: 1.5rem 0; +} + +img { + height: auto; + max-width: 100%; +} + +input[type="checkbox"], +input[type="radio"] { + vertical-align: baseline; +} + +small { + font-size: 0.875em; +} + +span { + font-style: inherit; + font-weight: inherit; +} + +strong { + color: #363636; + font-weight: 700; +} + +fieldset { + border: none; +} + +pre { + -webkit-overflow-scrolling: touch; + background-color: #f8f8f8; + color: rgba(0, 0, 0, 0.87); + font-size: 0.825em; + overflow-x: auto; + padding: 0.75em; + white-space: pre; + word-wrap: normal; +} + +pre code { + background-color: transparent; + color: currentColor; + font-size: 1em; + padding: 0; +} + +table td, +table th { + vertical-align: top; +} + +table td:not([align]), +table th:not([align]) { + text-align: inherit; +} + +table th { + color: #363636; +} + +@keyframes spinAround { + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} + +.column { + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + padding: 0.75rem; +} + +.columns.is-mobile > .column.is-narrow { + flex: none; + width: unset; +} + +.columns.is-mobile > .column.is-full { + flex: none; + width: 100%; +} + +.columns.is-mobile > .column.is-three-quarters { + flex: none; + width: 75%; +} + +.columns.is-mobile > .column.is-two-thirds { + flex: none; + width: 66.6666%; +} + +.columns.is-mobile > .column.is-half { + flex: none; + width: 50%; +} + +.columns.is-mobile > .column.is-one-third { + flex: none; + width: 33.3333%; +} + +.columns.is-mobile > .column.is-one-quarter { + flex: none; + width: 25%; +} + +.columns.is-mobile > .column.is-one-fifth { + flex: none; + width: 20%; +} + +.columns.is-mobile > .column.is-two-fifths { + flex: none; + width: 40%; +} + +.columns.is-mobile > .column.is-three-fifths { + flex: none; + width: 60%; +} + +.columns.is-mobile > .column.is-four-fifths { + flex: none; + width: 80%; +} + +.columns.is-mobile > .column.is-offset-three-quarters { + margin-left: 75%; +} + +.columns.is-mobile > .column.is-offset-two-thirds { + margin-left: 66.6666%; +} + +.columns.is-mobile > .column.is-offset-half { + margin-left: 50%; +} + +.columns.is-mobile > .column.is-offset-one-third { + margin-left: 33.3333%; +} + +.columns.is-mobile > .column.is-offset-one-quarter { + margin-left: 25%; +} + +.columns.is-mobile > .column.is-offset-one-fifth { + margin-left: 20%; +} + +.columns.is-mobile > .column.is-offset-two-fifths { + margin-left: 40%; +} + +.columns.is-mobile > .column.is-offset-three-fifths { + margin-left: 60%; +} + +.columns.is-mobile > .column.is-offset-four-fifths { + margin-left: 80%; +} + +.columns.is-mobile > .column.is-0 { + flex: none; + width: 0%; +} + +.columns.is-mobile > .column.is-offset-0 { + margin-left: 0%; +} + +.columns.is-mobile > .column.is-1 { + flex: none; + width: 8.33333%; +} + +.columns.is-mobile > .column.is-offset-1 { + margin-left: 8.33333%; +} + +.columns.is-mobile > .column.is-2 { + flex: none; + width: 16.66667%; +} + +.columns.is-mobile > .column.is-offset-2 { + margin-left: 16.66667%; +} + +.columns.is-mobile > .column.is-3 { + flex: none; + width: 25%; +} + +.columns.is-mobile > .column.is-offset-3 { + margin-left: 25%; +} + +.columns.is-mobile > .column.is-4 { + flex: none; + width: 33.33333%; +} + +.columns.is-mobile > .column.is-offset-4 { + margin-left: 33.33333%; +} + +.columns.is-mobile > .column.is-5 { + flex: none; + width: 41.66667%; +} + +.columns.is-mobile > .column.is-offset-5 { + margin-left: 41.66667%; +} + +.columns.is-mobile > .column.is-6 { + flex: none; + width: 50%; +} + +.columns.is-mobile > .column.is-offset-6 { + margin-left: 50%; +} + +.columns.is-mobile > .column.is-7 { + flex: none; + width: 58.33333%; +} + +.columns.is-mobile > .column.is-offset-7 { + margin-left: 58.33333%; +} + +.columns.is-mobile > .column.is-8 { + flex: none; + width: 66.66667%; +} + +.columns.is-mobile > .column.is-offset-8 { + margin-left: 66.66667%; +} + +.columns.is-mobile > .column.is-9 { + flex: none; + width: 75%; +} + +.columns.is-mobile > .column.is-offset-9 { + margin-left: 75%; +} + +.columns.is-mobile > .column.is-10 { + flex: none; + width: 83.33333%; +} + +.columns.is-mobile > .column.is-offset-10 { + margin-left: 83.33333%; +} + +.columns.is-mobile > .column.is-11 { + flex: none; + width: 91.66667%; +} + +.columns.is-mobile > .column.is-offset-11 { + margin-left: 91.66667%; +} + +.columns.is-mobile > .column.is-12 { + flex: none; + width: 100%; +} + +.columns.is-mobile > .column.is-offset-12 { + margin-left: 100%; +} + +@media screen and (max-width: 768px) { + .column.is-narrow-mobile { + flex: none; + width: unset; + } + .column.is-full-mobile { + flex: none; + width: 100%; + } + .column.is-three-quarters-mobile { + flex: none; + width: 75%; + } + .column.is-two-thirds-mobile { + flex: none; + width: 66.6666%; + } + .column.is-half-mobile { + flex: none; + width: 50%; + } + .column.is-one-third-mobile { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-mobile { + flex: none; + width: 25%; + } + .column.is-one-fifth-mobile { + flex: none; + width: 20%; + } + .column.is-two-fifths-mobile { + flex: none; + width: 40%; + } + .column.is-three-fifths-mobile { + flex: none; + width: 60%; + } + .column.is-four-fifths-mobile { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-mobile { + margin-left: 75%; + } + .column.is-offset-two-thirds-mobile { + margin-left: 66.6666%; + } + .column.is-offset-half-mobile { + margin-left: 50%; + } + .column.is-offset-one-third-mobile { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-mobile { + margin-left: 25%; + } + .column.is-offset-one-fifth-mobile { + margin-left: 20%; + } + .column.is-offset-two-fifths-mobile { + margin-left: 40%; + } + .column.is-offset-three-fifths-mobile { + margin-left: 60%; + } + .column.is-offset-four-fifths-mobile { + margin-left: 80%; + } + .column.is-0-mobile { + flex: none; + width: 0%; + } + .column.is-offset-0-mobile { + margin-left: 0%; + } + .column.is-1-mobile { + flex: none; + width: 8.33333%; + } + .column.is-offset-1-mobile { + margin-left: 8.33333%; + } + .column.is-2-mobile { + flex: none; + width: 16.66667%; + } + .column.is-offset-2-mobile { + margin-left: 16.66667%; + } + .column.is-3-mobile { + flex: none; + width: 25%; + } + .column.is-offset-3-mobile { + margin-left: 25%; + } + .column.is-4-mobile { + flex: none; + width: 33.33333%; + } + .column.is-offset-4-mobile { + margin-left: 33.33333%; + } + .column.is-5-mobile { + flex: none; + width: 41.66667%; + } + .column.is-offset-5-mobile { + margin-left: 41.66667%; + } + .column.is-6-mobile { + flex: none; + width: 50%; + } + .column.is-offset-6-mobile { + margin-left: 50%; + } + .column.is-7-mobile { + flex: none; + width: 58.33333%; + } + .column.is-offset-7-mobile { + margin-left: 58.33333%; + } + .column.is-8-mobile { + flex: none; + width: 66.66667%; + } + .column.is-offset-8-mobile { + margin-left: 66.66667%; + } + .column.is-9-mobile { + flex: none; + width: 75%; + } + .column.is-offset-9-mobile { + margin-left: 75%; + } + .column.is-10-mobile { + flex: none; + width: 83.33333%; + } + .column.is-offset-10-mobile { + margin-left: 83.33333%; + } + .column.is-11-mobile { + flex: none; + width: 91.66667%; + } + .column.is-offset-11-mobile { + margin-left: 91.66667%; + } + .column.is-12-mobile { + flex: none; + width: 100%; + } + .column.is-offset-12-mobile { + margin-left: 100%; + } +} + +@media screen and (min-width: 769px), print { + .column.is-narrow, .column.is-narrow-tablet { + flex: none; + width: unset; + } + .column.is-full, .column.is-full-tablet { + flex: none; + width: 100%; + } + .column.is-three-quarters, .column.is-three-quarters-tablet { + flex: none; + width: 75%; + } + .column.is-two-thirds, .column.is-two-thirds-tablet { + flex: none; + width: 66.6666%; + } + .column.is-half, .column.is-half-tablet { + flex: none; + width: 50%; + } + .column.is-one-third, .column.is-one-third-tablet { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter, .column.is-one-quarter-tablet { + flex: none; + width: 25%; + } + .column.is-one-fifth, .column.is-one-fifth-tablet { + flex: none; + width: 20%; + } + .column.is-two-fifths, .column.is-two-fifths-tablet { + flex: none; + width: 40%; + } + .column.is-three-fifths, .column.is-three-fifths-tablet { + flex: none; + width: 60%; + } + .column.is-four-fifths, .column.is-four-fifths-tablet { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet { + margin-left: 75%; + } + .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet { + margin-left: 66.6666%; + } + .column.is-offset-half, .column.is-offset-half-tablet { + margin-left: 50%; + } + .column.is-offset-one-third, .column.is-offset-one-third-tablet { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet { + margin-left: 25%; + } + .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet { + margin-left: 20%; + } + .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet { + margin-left: 40%; + } + .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet { + margin-left: 60%; + } + .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet { + margin-left: 80%; + } + .column.is-0, .column.is-0-tablet { + flex: none; + width: 0%; + } + .column.is-offset-0, .column.is-offset-0-tablet { + margin-left: 0%; + } + .column.is-1, .column.is-1-tablet { + flex: none; + width: 8.33333%; + } + .column.is-offset-1, .column.is-offset-1-tablet { + margin-left: 8.33333%; + } + .column.is-2, .column.is-2-tablet { + flex: none; + width: 16.66667%; + } + .column.is-offset-2, .column.is-offset-2-tablet { + margin-left: 16.66667%; + } + .column.is-3, .column.is-3-tablet { + flex: none; + width: 25%; + } + .column.is-offset-3, .column.is-offset-3-tablet { + margin-left: 25%; + } + .column.is-4, .column.is-4-tablet { + flex: none; + width: 33.33333%; + } + .column.is-offset-4, .column.is-offset-4-tablet { + margin-left: 33.33333%; + } + .column.is-5, .column.is-5-tablet { + flex: none; + width: 41.66667%; + } + .column.is-offset-5, .column.is-offset-5-tablet { + margin-left: 41.66667%; + } + .column.is-6, .column.is-6-tablet { + flex: none; + width: 50%; + } + .column.is-offset-6, .column.is-offset-6-tablet { + margin-left: 50%; + } + .column.is-7, .column.is-7-tablet { + flex: none; + width: 58.33333%; + } + .column.is-offset-7, .column.is-offset-7-tablet { + margin-left: 58.33333%; + } + .column.is-8, .column.is-8-tablet { + flex: none; + width: 66.66667%; + } + .column.is-offset-8, .column.is-offset-8-tablet { + margin-left: 66.66667%; + } + .column.is-9, .column.is-9-tablet { + flex: none; + width: 75%; + } + .column.is-offset-9, .column.is-offset-9-tablet { + margin-left: 75%; + } + .column.is-10, .column.is-10-tablet { + flex: none; + width: 83.33333%; + } + .column.is-offset-10, .column.is-offset-10-tablet { + margin-left: 83.33333%; + } + .column.is-11, .column.is-11-tablet { + flex: none; + width: 91.66667%; + } + .column.is-offset-11, .column.is-offset-11-tablet { + margin-left: 91.66667%; + } + .column.is-12, .column.is-12-tablet { + flex: none; + width: 100%; + } + .column.is-offset-12, .column.is-offset-12-tablet { + margin-left: 100%; + } +} + +@media screen and (max-width: 1023px) { + .column.is-narrow-touch { + flex: none; + width: unset; + } + .column.is-full-touch { + flex: none; + width: 100%; + } + .column.is-three-quarters-touch { + flex: none; + width: 75%; + } + .column.is-two-thirds-touch { + flex: none; + width: 66.6666%; + } + .column.is-half-touch { + flex: none; + width: 50%; + } + .column.is-one-third-touch { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-touch { + flex: none; + width: 25%; + } + .column.is-one-fifth-touch { + flex: none; + width: 20%; + } + .column.is-two-fifths-touch { + flex: none; + width: 40%; + } + .column.is-three-fifths-touch { + flex: none; + width: 60%; + } + .column.is-four-fifths-touch { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-touch { + margin-left: 75%; + } + .column.is-offset-two-thirds-touch { + margin-left: 66.6666%; + } + .column.is-offset-half-touch { + margin-left: 50%; + } + .column.is-offset-one-third-touch { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-touch { + margin-left: 25%; + } + .column.is-offset-one-fifth-touch { + margin-left: 20%; + } + .column.is-offset-two-fifths-touch { + margin-left: 40%; + } + .column.is-offset-three-fifths-touch { + margin-left: 60%; + } + .column.is-offset-four-fifths-touch { + margin-left: 80%; + } + .column.is-0-touch { + flex: none; + width: 0%; + } + .column.is-offset-0-touch { + margin-left: 0%; + } + .column.is-1-touch { + flex: none; + width: 8.33333%; + } + .column.is-offset-1-touch { + margin-left: 8.33333%; + } + .column.is-2-touch { + flex: none; + width: 16.66667%; + } + .column.is-offset-2-touch { + margin-left: 16.66667%; + } + .column.is-3-touch { + flex: none; + width: 25%; + } + .column.is-offset-3-touch { + margin-left: 25%; + } + .column.is-4-touch { + flex: none; + width: 33.33333%; + } + .column.is-offset-4-touch { + margin-left: 33.33333%; + } + .column.is-5-touch { + flex: none; + width: 41.66667%; + } + .column.is-offset-5-touch { + margin-left: 41.66667%; + } + .column.is-6-touch { + flex: none; + width: 50%; + } + .column.is-offset-6-touch { + margin-left: 50%; + } + .column.is-7-touch { + flex: none; + width: 58.33333%; + } + .column.is-offset-7-touch { + margin-left: 58.33333%; + } + .column.is-8-touch { + flex: none; + width: 66.66667%; + } + .column.is-offset-8-touch { + margin-left: 66.66667%; + } + .column.is-9-touch { + flex: none; + width: 75%; + } + .column.is-offset-9-touch { + margin-left: 75%; + } + .column.is-10-touch { + flex: none; + width: 83.33333%; + } + .column.is-offset-10-touch { + margin-left: 83.33333%; + } + .column.is-11-touch { + flex: none; + width: 91.66667%; + } + .column.is-offset-11-touch { + margin-left: 91.66667%; + } + .column.is-12-touch { + flex: none; + width: 100%; + } + .column.is-offset-12-touch { + margin-left: 100%; + } +} + +@media screen and (min-width: 1024px) { + .column.is-narrow-desktop { + flex: none; + width: unset; + } + .column.is-full-desktop { + flex: none; + width: 100%; + } + .column.is-three-quarters-desktop { + flex: none; + width: 75%; + } + .column.is-two-thirds-desktop { + flex: none; + width: 66.6666%; + } + .column.is-half-desktop { + flex: none; + width: 50%; + } + .column.is-one-third-desktop { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-desktop { + flex: none; + width: 25%; + } + .column.is-one-fifth-desktop { + flex: none; + width: 20%; + } + .column.is-two-fifths-desktop { + flex: none; + width: 40%; + } + .column.is-three-fifths-desktop { + flex: none; + width: 60%; + } + .column.is-four-fifths-desktop { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-desktop { + margin-left: 75%; + } + .column.is-offset-two-thirds-desktop { + margin-left: 66.6666%; + } + .column.is-offset-half-desktop { + margin-left: 50%; + } + .column.is-offset-one-third-desktop { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-desktop { + margin-left: 25%; + } + .column.is-offset-one-fifth-desktop { + margin-left: 20%; + } + .column.is-offset-two-fifths-desktop { + margin-left: 40%; + } + .column.is-offset-three-fifths-desktop { + margin-left: 60%; + } + .column.is-offset-four-fifths-desktop { + margin-left: 80%; + } + .column.is-0-desktop { + flex: none; + width: 0%; + } + .column.is-offset-0-desktop { + margin-left: 0%; + } + .column.is-1-desktop { + flex: none; + width: 8.33333%; + } + .column.is-offset-1-desktop { + margin-left: 8.33333%; + } + .column.is-2-desktop { + flex: none; + width: 16.66667%; + } + .column.is-offset-2-desktop { + margin-left: 16.66667%; + } + .column.is-3-desktop { + flex: none; + width: 25%; + } + .column.is-offset-3-desktop { + margin-left: 25%; + } + .column.is-4-desktop { + flex: none; + width: 33.33333%; + } + .column.is-offset-4-desktop { + margin-left: 33.33333%; + } + .column.is-5-desktop { + flex: none; + width: 41.66667%; + } + .column.is-offset-5-desktop { + margin-left: 41.66667%; + } + .column.is-6-desktop { + flex: none; + width: 50%; + } + .column.is-offset-6-desktop { + margin-left: 50%; + } + .column.is-7-desktop { + flex: none; + width: 58.33333%; + } + .column.is-offset-7-desktop { + margin-left: 58.33333%; + } + .column.is-8-desktop { + flex: none; + width: 66.66667%; + } + .column.is-offset-8-desktop { + margin-left: 66.66667%; + } + .column.is-9-desktop { + flex: none; + width: 75%; + } + .column.is-offset-9-desktop { + margin-left: 75%; + } + .column.is-10-desktop { + flex: none; + width: 83.33333%; + } + .column.is-offset-10-desktop { + margin-left: 83.33333%; + } + .column.is-11-desktop { + flex: none; + width: 91.66667%; + } + .column.is-offset-11-desktop { + margin-left: 91.66667%; + } + .column.is-12-desktop { + flex: none; + width: 100%; + } + .column.is-offset-12-desktop { + margin-left: 100%; + } +} + +@media screen and (min-width: 1216px) { + .column.is-narrow-widescreen { + flex: none; + width: unset; + } + .column.is-full-widescreen { + flex: none; + width: 100%; + } + .column.is-three-quarters-widescreen { + flex: none; + width: 75%; + } + .column.is-two-thirds-widescreen { + flex: none; + width: 66.6666%; + } + .column.is-half-widescreen { + flex: none; + width: 50%; + } + .column.is-one-third-widescreen { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-widescreen { + flex: none; + width: 25%; + } + .column.is-one-fifth-widescreen { + flex: none; + width: 20%; + } + .column.is-two-fifths-widescreen { + flex: none; + width: 40%; + } + .column.is-three-fifths-widescreen { + flex: none; + width: 60%; + } + .column.is-four-fifths-widescreen { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-widescreen { + margin-left: 75%; + } + .column.is-offset-two-thirds-widescreen { + margin-left: 66.6666%; + } + .column.is-offset-half-widescreen { + margin-left: 50%; + } + .column.is-offset-one-third-widescreen { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-widescreen { + margin-left: 25%; + } + .column.is-offset-one-fifth-widescreen { + margin-left: 20%; + } + .column.is-offset-two-fifths-widescreen { + margin-left: 40%; + } + .column.is-offset-three-fifths-widescreen { + margin-left: 60%; + } + .column.is-offset-four-fifths-widescreen { + margin-left: 80%; + } + .column.is-0-widescreen { + flex: none; + width: 0%; + } + .column.is-offset-0-widescreen { + margin-left: 0%; + } + .column.is-1-widescreen { + flex: none; + width: 8.33333%; + } + .column.is-offset-1-widescreen { + margin-left: 8.33333%; + } + .column.is-2-widescreen { + flex: none; + width: 16.66667%; + } + .column.is-offset-2-widescreen { + margin-left: 16.66667%; + } + .column.is-3-widescreen { + flex: none; + width: 25%; + } + .column.is-offset-3-widescreen { + margin-left: 25%; + } + .column.is-4-widescreen { + flex: none; + width: 33.33333%; + } + .column.is-offset-4-widescreen { + margin-left: 33.33333%; + } + .column.is-5-widescreen { + flex: none; + width: 41.66667%; + } + .column.is-offset-5-widescreen { + margin-left: 41.66667%; + } + .column.is-6-widescreen { + flex: none; + width: 50%; + } + .column.is-offset-6-widescreen { + margin-left: 50%; + } + .column.is-7-widescreen { + flex: none; + width: 58.33333%; + } + .column.is-offset-7-widescreen { + margin-left: 58.33333%; + } + .column.is-8-widescreen { + flex: none; + width: 66.66667%; + } + .column.is-offset-8-widescreen { + margin-left: 66.66667%; + } + .column.is-9-widescreen { + flex: none; + width: 75%; + } + .column.is-offset-9-widescreen { + margin-left: 75%; + } + .column.is-10-widescreen { + flex: none; + width: 83.33333%; + } + .column.is-offset-10-widescreen { + margin-left: 83.33333%; + } + .column.is-11-widescreen { + flex: none; + width: 91.66667%; + } + .column.is-offset-11-widescreen { + margin-left: 91.66667%; + } + .column.is-12-widescreen { + flex: none; + width: 100%; + } + .column.is-offset-12-widescreen { + margin-left: 100%; + } +} + +@media screen and (min-width: 1408px) { + .column.is-narrow-fullhd { + flex: none; + width: unset; + } + .column.is-full-fullhd { + flex: none; + width: 100%; + } + .column.is-three-quarters-fullhd { + flex: none; + width: 75%; + } + .column.is-two-thirds-fullhd { + flex: none; + width: 66.6666%; + } + .column.is-half-fullhd { + flex: none; + width: 50%; + } + .column.is-one-third-fullhd { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-fullhd { + flex: none; + width: 25%; + } + .column.is-one-fifth-fullhd { + flex: none; + width: 20%; + } + .column.is-two-fifths-fullhd { + flex: none; + width: 40%; + } + .column.is-three-fifths-fullhd { + flex: none; + width: 60%; + } + .column.is-four-fifths-fullhd { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-fullhd { + margin-left: 75%; + } + .column.is-offset-two-thirds-fullhd { + margin-left: 66.6666%; + } + .column.is-offset-half-fullhd { + margin-left: 50%; + } + .column.is-offset-one-third-fullhd { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-fullhd { + margin-left: 25%; + } + .column.is-offset-one-fifth-fullhd { + margin-left: 20%; + } + .column.is-offset-two-fifths-fullhd { + margin-left: 40%; + } + .column.is-offset-three-fifths-fullhd { + margin-left: 60%; + } + .column.is-offset-four-fifths-fullhd { + margin-left: 80%; + } + .column.is-0-fullhd { + flex: none; + width: 0%; + } + .column.is-offset-0-fullhd { + margin-left: 0%; + } + .column.is-1-fullhd { + flex: none; + width: 8.33333%; + } + .column.is-offset-1-fullhd { + margin-left: 8.33333%; + } + .column.is-2-fullhd { + flex: none; + width: 16.66667%; + } + .column.is-offset-2-fullhd { + margin-left: 16.66667%; + } + .column.is-3-fullhd { + flex: none; + width: 25%; + } + .column.is-offset-3-fullhd { + margin-left: 25%; + } + .column.is-4-fullhd { + flex: none; + width: 33.33333%; + } + .column.is-offset-4-fullhd { + margin-left: 33.33333%; + } + .column.is-5-fullhd { + flex: none; + width: 41.66667%; + } + .column.is-offset-5-fullhd { + margin-left: 41.66667%; + } + .column.is-6-fullhd { + flex: none; + width: 50%; + } + .column.is-offset-6-fullhd { + margin-left: 50%; + } + .column.is-7-fullhd { + flex: none; + width: 58.33333%; + } + .column.is-offset-7-fullhd { + margin-left: 58.33333%; + } + .column.is-8-fullhd { + flex: none; + width: 66.66667%; + } + .column.is-offset-8-fullhd { + margin-left: 66.66667%; + } + .column.is-9-fullhd { + flex: none; + width: 75%; + } + .column.is-offset-9-fullhd { + margin-left: 75%; + } + .column.is-10-fullhd { + flex: none; + width: 83.33333%; + } + .column.is-offset-10-fullhd { + margin-left: 83.33333%; + } + .column.is-11-fullhd { + flex: none; + width: 91.66667%; + } + .column.is-offset-11-fullhd { + margin-left: 91.66667%; + } + .column.is-12-fullhd { + flex: none; + width: 100%; + } + .column.is-offset-12-fullhd { + margin-left: 100%; + } +} + +.columns { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; +} + +.columns:last-child { + margin-bottom: -0.75rem; +} + +.columns:not(:last-child) { + margin-bottom: calc(1.5rem - 0.75rem); +} + +.columns.is-centered { + justify-content: center; +} + +.columns.is-gapless { + margin-left: 0; + margin-right: 0; + margin-top: 0; +} + +.columns.is-gapless > .column { + margin: 0; + padding: 0 !important; +} + +.columns.is-gapless:not(:last-child) { + margin-bottom: 1.5rem; +} + +.columns.is-gapless:last-child { + margin-bottom: 0; +} + +.columns.is-mobile { + display: flex; +} + +.columns.is-multiline { + flex-wrap: wrap; +} + +.columns.is-vcentered { + align-items: center; +} + +@media screen and (min-width: 769px), print { + .columns:not(.is-desktop) { + display: flex; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-desktop { + display: flex; + } +} + +.columns.is-variable { + --columnGap: 0.75rem; + margin-left: calc(-1 * var(--columnGap)); + margin-right: calc(-1 * var(--columnGap)); +} + +.columns.is-variable > .column { + padding-left: var(--columnGap); + padding-right: var(--columnGap); +} + +.columns.is-variable.is-0 { + --columnGap: 0rem; +} + +@media screen and (max-width: 768px) { + .columns.is-variable.is-0-mobile { + --columnGap: 0rem; + } +} + +@media screen and (min-width: 769px), print { + .columns.is-variable.is-0-tablet { + --columnGap: 0rem; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-0-tablet-only { + --columnGap: 0rem; + } +} + +@media screen and (max-width: 1023px) { + .columns.is-variable.is-0-touch { + --columnGap: 0rem; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-variable.is-0-desktop { + --columnGap: 0rem; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-0-desktop-only { + --columnGap: 0rem; + } +} + +@media screen and (min-width: 1216px) { + .columns.is-variable.is-0-widescreen { + --columnGap: 0rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-0-widescreen-only { + --columnGap: 0rem; + } +} + +@media screen and (min-width: 1408px) { + .columns.is-variable.is-0-fullhd { + --columnGap: 0rem; + } +} + +.columns.is-variable.is-1 { + --columnGap: 0.25rem; +} + +@media screen and (max-width: 768px) { + .columns.is-variable.is-1-mobile { + --columnGap: 0.25rem; + } +} + +@media screen and (min-width: 769px), print { + .columns.is-variable.is-1-tablet { + --columnGap: 0.25rem; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-1-tablet-only { + --columnGap: 0.25rem; + } +} + +@media screen and (max-width: 1023px) { + .columns.is-variable.is-1-touch { + --columnGap: 0.25rem; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-variable.is-1-desktop { + --columnGap: 0.25rem; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-1-desktop-only { + --columnGap: 0.25rem; + } +} + +@media screen and (min-width: 1216px) { + .columns.is-variable.is-1-widescreen { + --columnGap: 0.25rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-1-widescreen-only { + --columnGap: 0.25rem; + } +} + +@media screen and (min-width: 1408px) { + .columns.is-variable.is-1-fullhd { + --columnGap: 0.25rem; + } +} + +.columns.is-variable.is-2 { + --columnGap: 0.5rem; +} + +@media screen and (max-width: 768px) { + .columns.is-variable.is-2-mobile { + --columnGap: 0.5rem; + } +} + +@media screen and (min-width: 769px), print { + .columns.is-variable.is-2-tablet { + --columnGap: 0.5rem; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-2-tablet-only { + --columnGap: 0.5rem; + } +} + +@media screen and (max-width: 1023px) { + .columns.is-variable.is-2-touch { + --columnGap: 0.5rem; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-variable.is-2-desktop { + --columnGap: 0.5rem; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-2-desktop-only { + --columnGap: 0.5rem; + } +} + +@media screen and (min-width: 1216px) { + .columns.is-variable.is-2-widescreen { + --columnGap: 0.5rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-2-widescreen-only { + --columnGap: 0.5rem; + } +} + +@media screen and (min-width: 1408px) { + .columns.is-variable.is-2-fullhd { + --columnGap: 0.5rem; + } +} + +.columns.is-variable.is-3 { + --columnGap: 0.75rem; +} + +@media screen and (max-width: 768px) { + .columns.is-variable.is-3-mobile { + --columnGap: 0.75rem; + } +} + +@media screen and (min-width: 769px), print { + .columns.is-variable.is-3-tablet { + --columnGap: 0.75rem; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-3-tablet-only { + --columnGap: 0.75rem; + } +} + +@media screen and (max-width: 1023px) { + .columns.is-variable.is-3-touch { + --columnGap: 0.75rem; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-variable.is-3-desktop { + --columnGap: 0.75rem; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-3-desktop-only { + --columnGap: 0.75rem; + } +} + +@media screen and (min-width: 1216px) { + .columns.is-variable.is-3-widescreen { + --columnGap: 0.75rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-3-widescreen-only { + --columnGap: 0.75rem; + } +} + +@media screen and (min-width: 1408px) { + .columns.is-variable.is-3-fullhd { + --columnGap: 0.75rem; + } +} + +.columns.is-variable.is-4 { + --columnGap: 1rem; +} + +@media screen and (max-width: 768px) { + .columns.is-variable.is-4-mobile { + --columnGap: 1rem; + } +} + +@media screen and (min-width: 769px), print { + .columns.is-variable.is-4-tablet { + --columnGap: 1rem; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-4-tablet-only { + --columnGap: 1rem; + } +} + +@media screen and (max-width: 1023px) { + .columns.is-variable.is-4-touch { + --columnGap: 1rem; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-variable.is-4-desktop { + --columnGap: 1rem; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-4-desktop-only { + --columnGap: 1rem; + } +} + +@media screen and (min-width: 1216px) { + .columns.is-variable.is-4-widescreen { + --columnGap: 1rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-4-widescreen-only { + --columnGap: 1rem; + } +} + +@media screen and (min-width: 1408px) { + .columns.is-variable.is-4-fullhd { + --columnGap: 1rem; + } +} + +.columns.is-variable.is-5 { + --columnGap: 1.25rem; +} + +@media screen and (max-width: 768px) { + .columns.is-variable.is-5-mobile { + --columnGap: 1.25rem; + } +} + +@media screen and (min-width: 769px), print { + .columns.is-variable.is-5-tablet { + --columnGap: 1.25rem; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-5-tablet-only { + --columnGap: 1.25rem; + } +} + +@media screen and (max-width: 1023px) { + .columns.is-variable.is-5-touch { + --columnGap: 1.25rem; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-variable.is-5-desktop { + --columnGap: 1.25rem; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-5-desktop-only { + --columnGap: 1.25rem; + } +} + +@media screen and (min-width: 1216px) { + .columns.is-variable.is-5-widescreen { + --columnGap: 1.25rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-5-widescreen-only { + --columnGap: 1.25rem; + } +} + +@media screen and (min-width: 1408px) { + .columns.is-variable.is-5-fullhd { + --columnGap: 1.25rem; + } +} + +.columns.is-variable.is-6 { + --columnGap: 1.5rem; +} + +@media screen and (max-width: 768px) { + .columns.is-variable.is-6-mobile { + --columnGap: 1.5rem; + } +} + +@media screen and (min-width: 769px), print { + .columns.is-variable.is-6-tablet { + --columnGap: 1.5rem; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-6-tablet-only { + --columnGap: 1.5rem; + } +} + +@media screen and (max-width: 1023px) { + .columns.is-variable.is-6-touch { + --columnGap: 1.5rem; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-variable.is-6-desktop { + --columnGap: 1.5rem; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-6-desktop-only { + --columnGap: 1.5rem; + } +} + +@media screen and (min-width: 1216px) { + .columns.is-variable.is-6-widescreen { + --columnGap: 1.5rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-6-widescreen-only { + --columnGap: 1.5rem; + } +} + +@media screen and (min-width: 1408px) { + .columns.is-variable.is-6-fullhd { + --columnGap: 1.5rem; + } +} + +.columns.is-variable.is-7 { + --columnGap: 1.75rem; +} + +@media screen and (max-width: 768px) { + .columns.is-variable.is-7-mobile { + --columnGap: 1.75rem; + } +} + +@media screen and (min-width: 769px), print { + .columns.is-variable.is-7-tablet { + --columnGap: 1.75rem; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-7-tablet-only { + --columnGap: 1.75rem; + } +} + +@media screen and (max-width: 1023px) { + .columns.is-variable.is-7-touch { + --columnGap: 1.75rem; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-variable.is-7-desktop { + --columnGap: 1.75rem; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-7-desktop-only { + --columnGap: 1.75rem; + } +} + +@media screen and (min-width: 1216px) { + .columns.is-variable.is-7-widescreen { + --columnGap: 1.75rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-7-widescreen-only { + --columnGap: 1.75rem; + } +} + +@media screen and (min-width: 1408px) { + .columns.is-variable.is-7-fullhd { + --columnGap: 1.75rem; + } +} + +.columns.is-variable.is-8 { + --columnGap: 2rem; +} + +@media screen and (max-width: 768px) { + .columns.is-variable.is-8-mobile { + --columnGap: 2rem; + } +} + +@media screen and (min-width: 769px), print { + .columns.is-variable.is-8-tablet { + --columnGap: 2rem; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-8-tablet-only { + --columnGap: 2rem; + } +} + +@media screen and (max-width: 1023px) { + .columns.is-variable.is-8-touch { + --columnGap: 2rem; + } +} + +@media screen and (min-width: 1024px) { + .columns.is-variable.is-8-desktop { + --columnGap: 2rem; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-8-desktop-only { + --columnGap: 2rem; + } +} + +@media screen and (min-width: 1216px) { + .columns.is-variable.is-8-widescreen { + --columnGap: 2rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-8-widescreen-only { + --columnGap: 2rem; + } +} + +@media screen and (min-width: 1408px) { + .columns.is-variable.is-8-fullhd { + --columnGap: 2rem; + } +} + +.breadcrumb { + font-size: 1rem; + white-space: nowrap; +} + +.breadcrumb a { + align-items: center; + color: #FF9200; + display: flex; + justify-content: center; + padding: 0 0.75em; +} + +.breadcrumb a:hover { + color: #ca6500; +} + +.breadcrumb li { + align-items: center; + display: flex; +} + +.breadcrumb li:first-child a { + padding-left: 0; +} + +.breadcrumb li.is-active a { + color: #363636; + cursor: default; + pointer-events: none; +} + +.breadcrumb li + li::before { + color: #b5b5b5; + content: "\0002f"; +} + +.breadcrumb ul, +.breadcrumb ol { + align-items: flex-start; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} + +.breadcrumb .icon:first-child { + margin-right: 0.5em; +} + +.breadcrumb .icon:last-child { + margin-left: 0.5em; +} + +.breadcrumb.is-centered ol, +.breadcrumb.is-centered ul { + justify-content: center; +} + +.breadcrumb.is-right ol, +.breadcrumb.is-right ul { + justify-content: flex-end; +} + +.breadcrumb.is-small { + font-size: 0.75rem; +} + +.breadcrumb.is-medium { + font-size: 1.25rem; +} + +.breadcrumb.is-large { + font-size: 1.5rem; +} + +.breadcrumb.has-arrow-separator li + li::before { + content: "\02192"; +} + +.breadcrumb.has-bullet-separator li + li::before { + content: "\02022"; +} + +.breadcrumb.has-dot-separator li + li::before { + content: "\000b7"; +} + +.breadcrumb.has-succeeds-separator li + li::before { + content: "\0227B"; +} + +.level { + align-items: center; + justify-content: space-between; +} + +.level code { + border-radius: 4px; +} + +.level img { + display: inline-block; + vertical-align: top; +} + +.level.is-mobile { + display: flex; +} + +.level.is-mobile .level-left, +.level.is-mobile .level-right { + display: flex; +} + +.level.is-mobile .level-left + .level-right { + margin-top: 0; +} + +.level.is-mobile .level-item:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; +} + +.level.is-mobile .level-item:not(.is-narrow) { + flex-grow: 1; +} + +@media screen and (min-width: 769px), print { + .level { + display: flex; + } + .level > .level-item:not(.is-narrow) { + flex-grow: 1; + } +} + +.level-item { + align-items: center; + display: flex; + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; +} + +.level-item .title, +.level-item .subtitle { + margin-bottom: 0; +} + +@media screen and (max-width: 768px) { + .level-item:not(:last-child) { + margin-bottom: 0.75rem; + } +} + +.level-left, +.level-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; +} + +.level-left .level-item.is-flexible, +.level-right .level-item.is-flexible { + flex-grow: 1; +} + +@media screen and (min-width: 769px), print { + .level-left .level-item:not(:last-child), +.level-right .level-item:not(:last-child) { + margin-right: 0.75rem; + } +} + +.level-left { + align-items: center; + justify-content: flex-start; +} + +@media screen and (max-width: 768px) { + .level-left + .level-right { + margin-top: 1.5rem; + } +} + +@media screen and (min-width: 769px), print { + .level-left { + display: flex; + } +} + +.level-right { + align-items: center; + justify-content: flex-end; +} + +@media screen and (min-width: 769px), print { + .level-right { + display: flex; + } +} + +.navbar { + background-color: white; + min-height: 4rem; + position: relative; + z-index: 30; +} + +.navbar.is-white { + background-color: white; + color: #0a0a0a; +} + +.navbar.is-white .navbar-brand > .navbar-item, +.navbar.is-white .navbar-brand .navbar-link { + color: #0a0a0a; +} + +.navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active, +.navbar.is-white .navbar-brand .navbar-link:focus, +.navbar.is-white .navbar-brand .navbar-link:hover, +.navbar.is-white .navbar-brand .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; +} + +.navbar.is-white .navbar-brand .navbar-link::after { + border-color: #0a0a0a; +} + +.navbar.is-white .navbar-burger { + color: #0a0a0a; +} + +@media screen and (min-width: 1024px) { + .navbar.is-white .navbar-start > .navbar-item, +.navbar.is-white .navbar-start .navbar-link, +.navbar.is-white .navbar-end > .navbar-item, +.navbar.is-white .navbar-end .navbar-link { + color: #0a0a0a; + } + .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active, +.navbar.is-white .navbar-start .navbar-link:focus, +.navbar.is-white .navbar-start .navbar-link:hover, +.navbar.is-white .navbar-start .navbar-link.is-active, +.navbar.is-white .navbar-end > a.navbar-item:focus, +.navbar.is-white .navbar-end > a.navbar-item:hover, +.navbar.is-white .navbar-end > a.navbar-item.is-active, +.navbar.is-white .navbar-end .navbar-link:focus, +.navbar.is-white .navbar-end .navbar-link:hover, +.navbar.is-white .navbar-end .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; + } + .navbar.is-white .navbar-start .navbar-link::after, +.navbar.is-white .navbar-end .navbar-link::after { + border-color: #0a0a0a; + } + .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #f2f2f2; + color: #0a0a0a; + } + .navbar.is-white .navbar-dropdown a.navbar-item.is-active { + background-color: white; + color: #0a0a0a; + } +} + +.navbar.is-black { + background-color: #0a0a0a; + color: white; +} + +.navbar.is-black .navbar-brand > .navbar-item, +.navbar.is-black .navbar-brand .navbar-link { + color: white; +} + +.navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active, +.navbar.is-black .navbar-brand .navbar-link:focus, +.navbar.is-black .navbar-brand .navbar-link:hover, +.navbar.is-black .navbar-brand .navbar-link.is-active { + background-color: black; + color: white; +} + +.navbar.is-black .navbar-brand .navbar-link::after { + border-color: white; +} + +.navbar.is-black .navbar-burger { + color: white; +} + +@media screen and (min-width: 1024px) { + .navbar.is-black .navbar-start > .navbar-item, +.navbar.is-black .navbar-start .navbar-link, +.navbar.is-black .navbar-end > .navbar-item, +.navbar.is-black .navbar-end .navbar-link { + color: white; + } + .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active, +.navbar.is-black .navbar-start .navbar-link:focus, +.navbar.is-black .navbar-start .navbar-link:hover, +.navbar.is-black .navbar-start .navbar-link.is-active, +.navbar.is-black .navbar-end > a.navbar-item:focus, +.navbar.is-black .navbar-end > a.navbar-item:hover, +.navbar.is-black .navbar-end > a.navbar-item.is-active, +.navbar.is-black .navbar-end .navbar-link:focus, +.navbar.is-black .navbar-end .navbar-link:hover, +.navbar.is-black .navbar-end .navbar-link.is-active { + background-color: black; + color: white; + } + .navbar.is-black .navbar-start .navbar-link::after, +.navbar.is-black .navbar-end .navbar-link::after { + border-color: white; + } + .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { + background-color: black; + color: white; + } + .navbar.is-black .navbar-dropdown a.navbar-item.is-active { + background-color: #0a0a0a; + color: white; + } +} + +.navbar.is-light { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} + +.navbar.is-light .navbar-brand > .navbar-item, +.navbar.is-light .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); +} + +.navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active, +.navbar.is-light .navbar-brand .navbar-link:focus, +.navbar.is-light .navbar-brand .navbar-link:hover, +.navbar.is-light .navbar-brand .navbar-link.is-active { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); +} + +.navbar.is-light .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); +} + +.navbar.is-light .navbar-burger { + color: rgba(0, 0, 0, 0.7); +} + +@media screen and (min-width: 1024px) { + .navbar.is-light .navbar-start > .navbar-item, +.navbar.is-light .navbar-start .navbar-link, +.navbar.is-light .navbar-end > .navbar-item, +.navbar.is-light .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active, +.navbar.is-light .navbar-start .navbar-link:focus, +.navbar.is-light .navbar-start .navbar-link:hover, +.navbar.is-light .navbar-start .navbar-link.is-active, +.navbar.is-light .navbar-end > a.navbar-item:focus, +.navbar.is-light .navbar-end > a.navbar-item:hover, +.navbar.is-light .navbar-end > a.navbar-item.is-active, +.navbar.is-light .navbar-end .navbar-link:focus, +.navbar.is-light .navbar-end .navbar-link:hover, +.navbar.is-light .navbar-end .navbar-link.is-active { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-light .navbar-start .navbar-link::after, +.navbar.is-light .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); + } + .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-light .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); + } +} + +.navbar.is-dark { + background-color: #363636; + color: #fff; +} + +.navbar.is-dark .navbar-brand > .navbar-item, +.navbar.is-dark .navbar-brand .navbar-link { + color: #fff; +} + +.navbar.is-dark .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active, +.navbar.is-dark .navbar-brand .navbar-link:focus, +.navbar.is-dark .navbar-brand .navbar-link:hover, +.navbar.is-dark .navbar-brand .navbar-link.is-active { + background-color: #292929; + color: #fff; +} + +.navbar.is-dark .navbar-brand .navbar-link::after { + border-color: #fff; +} + +.navbar.is-dark .navbar-burger { + color: #fff; +} + +@media screen and (min-width: 1024px) { + .navbar.is-dark .navbar-start > .navbar-item, +.navbar.is-dark .navbar-start .navbar-link, +.navbar.is-dark .navbar-end > .navbar-item, +.navbar.is-dark .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-dark .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active, +.navbar.is-dark .navbar-start .navbar-link:focus, +.navbar.is-dark .navbar-start .navbar-link:hover, +.navbar.is-dark .navbar-start .navbar-link.is-active, +.navbar.is-dark .navbar-end > a.navbar-item:focus, +.navbar.is-dark .navbar-end > a.navbar-item:hover, +.navbar.is-dark .navbar-end > a.navbar-item.is-active, +.navbar.is-dark .navbar-end .navbar-link:focus, +.navbar.is-dark .navbar-end .navbar-link:hover, +.navbar.is-dark .navbar-end .navbar-link.is-active { + background-color: #292929; + color: #fff; + } + .navbar.is-dark .navbar-start .navbar-link::after, +.navbar.is-dark .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #292929; + color: #fff; + } + .navbar.is-dark .navbar-dropdown a.navbar-item.is-active { + background-color: #363636; + color: #fff; + } +} + +.navbar.is-primary { + background-color: #FF9200; + color: #fff; +} + +.navbar.is-primary .navbar-brand > .navbar-item, +.navbar.is-primary .navbar-brand .navbar-link { + color: #fff; +} + +.navbar.is-primary .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active, +.navbar.is-primary .navbar-brand .navbar-link:focus, +.navbar.is-primary .navbar-brand .navbar-link:hover, +.navbar.is-primary .navbar-brand .navbar-link.is-active { + background-color: #e68300; + color: #fff; +} + +.navbar.is-primary .navbar-brand .navbar-link::after { + border-color: #fff; +} + +.navbar.is-primary .navbar-burger { + color: #fff; +} + +@media screen and (min-width: 1024px) { + .navbar.is-primary .navbar-start > .navbar-item, +.navbar.is-primary .navbar-start .navbar-link, +.navbar.is-primary .navbar-end > .navbar-item, +.navbar.is-primary .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-primary .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active, +.navbar.is-primary .navbar-start .navbar-link:focus, +.navbar.is-primary .navbar-start .navbar-link:hover, +.navbar.is-primary .navbar-start .navbar-link.is-active, +.navbar.is-primary .navbar-end > a.navbar-item:focus, +.navbar.is-primary .navbar-end > a.navbar-item:hover, +.navbar.is-primary .navbar-end > a.navbar-item.is-active, +.navbar.is-primary .navbar-end .navbar-link:focus, +.navbar.is-primary .navbar-end .navbar-link:hover, +.navbar.is-primary .navbar-end .navbar-link.is-active { + background-color: #e68300; + color: #fff; + } + .navbar.is-primary .navbar-start .navbar-link::after, +.navbar.is-primary .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #e68300; + color: #fff; + } + .navbar.is-primary .navbar-dropdown a.navbar-item.is-active { + background-color: #FF9200; + color: #fff; + } +} + +.navbar.is-link { + background-color: #FF9200; + color: #fff; +} + +.navbar.is-link .navbar-brand > .navbar-item, +.navbar.is-link .navbar-brand .navbar-link { + color: #fff; +} + +.navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active, +.navbar.is-link .navbar-brand .navbar-link:focus, +.navbar.is-link .navbar-brand .navbar-link:hover, +.navbar.is-link .navbar-brand .navbar-link.is-active { + background-color: #e68300; + color: #fff; +} + +.navbar.is-link .navbar-brand .navbar-link::after { + border-color: #fff; +} + +.navbar.is-link .navbar-burger { + color: #fff; +} + +@media screen and (min-width: 1024px) { + .navbar.is-link .navbar-start > .navbar-item, +.navbar.is-link .navbar-start .navbar-link, +.navbar.is-link .navbar-end > .navbar-item, +.navbar.is-link .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active, +.navbar.is-link .navbar-start .navbar-link:focus, +.navbar.is-link .navbar-start .navbar-link:hover, +.navbar.is-link .navbar-start .navbar-link.is-active, +.navbar.is-link .navbar-end > a.navbar-item:focus, +.navbar.is-link .navbar-end > a.navbar-item:hover, +.navbar.is-link .navbar-end > a.navbar-item.is-active, +.navbar.is-link .navbar-end .navbar-link:focus, +.navbar.is-link .navbar-end .navbar-link:hover, +.navbar.is-link .navbar-end .navbar-link.is-active { + background-color: #e68300; + color: #fff; + } + .navbar.is-link .navbar-start .navbar-link::after, +.navbar.is-link .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #e68300; + color: #fff; + } + .navbar.is-link .navbar-dropdown a.navbar-item.is-active { + background-color: #FF9200; + color: #fff; + } +} + +.navbar.is-info { + background-color: #3298dc; + color: #fff; +} + +.navbar.is-info .navbar-brand > .navbar-item, +.navbar.is-info .navbar-brand .navbar-link { + color: #fff; +} + +.navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active, +.navbar.is-info .navbar-brand .navbar-link:focus, +.navbar.is-info .navbar-brand .navbar-link:hover, +.navbar.is-info .navbar-brand .navbar-link.is-active { + background-color: #238cd1; + color: #fff; +} + +.navbar.is-info .navbar-brand .navbar-link::after { + border-color: #fff; +} + +.navbar.is-info .navbar-burger { + color: #fff; +} + +@media screen and (min-width: 1024px) { + .navbar.is-info .navbar-start > .navbar-item, +.navbar.is-info .navbar-start .navbar-link, +.navbar.is-info .navbar-end > .navbar-item, +.navbar.is-info .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active, +.navbar.is-info .navbar-start .navbar-link:focus, +.navbar.is-info .navbar-start .navbar-link:hover, +.navbar.is-info .navbar-start .navbar-link.is-active, +.navbar.is-info .navbar-end > a.navbar-item:focus, +.navbar.is-info .navbar-end > a.navbar-item:hover, +.navbar.is-info .navbar-end > a.navbar-item.is-active, +.navbar.is-info .navbar-end .navbar-link:focus, +.navbar.is-info .navbar-end .navbar-link:hover, +.navbar.is-info .navbar-end .navbar-link.is-active { + background-color: #238cd1; + color: #fff; + } + .navbar.is-info .navbar-start .navbar-link::after, +.navbar.is-info .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #238cd1; + color: #fff; + } + .navbar.is-info .navbar-dropdown a.navbar-item.is-active { + background-color: #3298dc; + color: #fff; + } +} + +.navbar.is-success { + background-color: #01a901; + color: #fff; +} + +.navbar.is-success .navbar-brand > .navbar-item, +.navbar.is-success .navbar-brand .navbar-link { + color: #fff; +} + +.navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active, +.navbar.is-success .navbar-brand .navbar-link:focus, +.navbar.is-success .navbar-brand .navbar-link:hover, +.navbar.is-success .navbar-brand .navbar-link.is-active { + background-color: #019001; + color: #fff; +} + +.navbar.is-success .navbar-brand .navbar-link::after { + border-color: #fff; +} + +.navbar.is-success .navbar-burger { + color: #fff; +} + +@media screen and (min-width: 1024px) { + .navbar.is-success .navbar-start > .navbar-item, +.navbar.is-success .navbar-start .navbar-link, +.navbar.is-success .navbar-end > .navbar-item, +.navbar.is-success .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active, +.navbar.is-success .navbar-start .navbar-link:focus, +.navbar.is-success .navbar-start .navbar-link:hover, +.navbar.is-success .navbar-start .navbar-link.is-active, +.navbar.is-success .navbar-end > a.navbar-item:focus, +.navbar.is-success .navbar-end > a.navbar-item:hover, +.navbar.is-success .navbar-end > a.navbar-item.is-active, +.navbar.is-success .navbar-end .navbar-link:focus, +.navbar.is-success .navbar-end .navbar-link:hover, +.navbar.is-success .navbar-end .navbar-link.is-active { + background-color: #019001; + color: #fff; + } + .navbar.is-success .navbar-start .navbar-link::after, +.navbar.is-success .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #019001; + color: #fff; + } + .navbar.is-success .navbar-dropdown a.navbar-item.is-active { + background-color: #01a901; + color: #fff; + } +} + +.navbar.is-warning { + background-color: #e7cb00; + color: rgba(0, 0, 0, 0.7); +} + +.navbar.is-warning .navbar-brand > .navbar-item, +.navbar.is-warning .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); +} + +.navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active, +.navbar.is-warning .navbar-brand .navbar-link:focus, +.navbar.is-warning .navbar-brand .navbar-link:hover, +.navbar.is-warning .navbar-brand .navbar-link.is-active { + background-color: #ceb500; + color: rgba(0, 0, 0, 0.7); +} + +.navbar.is-warning .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); +} + +.navbar.is-warning .navbar-burger { + color: rgba(0, 0, 0, 0.7); +} + +@media screen and (min-width: 1024px) { + .navbar.is-warning .navbar-start > .navbar-item, +.navbar.is-warning .navbar-start .navbar-link, +.navbar.is-warning .navbar-end > .navbar-item, +.navbar.is-warning .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active, +.navbar.is-warning .navbar-start .navbar-link:focus, +.navbar.is-warning .navbar-start .navbar-link:hover, +.navbar.is-warning .navbar-start .navbar-link.is-active, +.navbar.is-warning .navbar-end > a.navbar-item:focus, +.navbar.is-warning .navbar-end > a.navbar-item:hover, +.navbar.is-warning .navbar-end > a.navbar-item.is-active, +.navbar.is-warning .navbar-end .navbar-link:focus, +.navbar.is-warning .navbar-end .navbar-link:hover, +.navbar.is-warning .navbar-end .navbar-link.is-active { + background-color: #ceb500; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-warning .navbar-start .navbar-link::after, +.navbar.is-warning .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); + } + .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #ceb500; + color: rgba(0, 0, 0, 0.7); + } + .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { + background-color: #e7cb00; + color: rgba(0, 0, 0, 0.7); + } +} + +.navbar.is-danger { + background-color: #F45F4B; + color: #fff; +} + +.navbar.is-danger .navbar-brand > .navbar-item, +.navbar.is-danger .navbar-brand .navbar-link { + color: #fff; +} + +.navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active, +.navbar.is-danger .navbar-brand .navbar-link:focus, +.navbar.is-danger .navbar-brand .navbar-link:hover, +.navbar.is-danger .navbar-brand .navbar-link.is-active { + background-color: #f34a33; + color: #fff; +} + +.navbar.is-danger .navbar-brand .navbar-link::after { + border-color: #fff; +} + +.navbar.is-danger .navbar-burger { + color: #fff; +} + +@media screen and (min-width: 1024px) { + .navbar.is-danger .navbar-start > .navbar-item, +.navbar.is-danger .navbar-start .navbar-link, +.navbar.is-danger .navbar-end > .navbar-item, +.navbar.is-danger .navbar-end .navbar-link { + color: #fff; + } + .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active, +.navbar.is-danger .navbar-start .navbar-link:focus, +.navbar.is-danger .navbar-start .navbar-link:hover, +.navbar.is-danger .navbar-start .navbar-link.is-active, +.navbar.is-danger .navbar-end > a.navbar-item:focus, +.navbar.is-danger .navbar-end > a.navbar-item:hover, +.navbar.is-danger .navbar-end > a.navbar-item.is-active, +.navbar.is-danger .navbar-end .navbar-link:focus, +.navbar.is-danger .navbar-end .navbar-link:hover, +.navbar.is-danger .navbar-end .navbar-link.is-active { + background-color: #f34a33; + color: #fff; + } + .navbar.is-danger .navbar-start .navbar-link::after, +.navbar.is-danger .navbar-end .navbar-link::after { + border-color: #fff; + } + .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, +.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, +.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #f34a33; + color: #fff; + } + .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { + background-color: #F45F4B; + color: #fff; + } +} + +.navbar > .container { + align-items: stretch; + display: flex; + min-height: 4rem; + width: 100%; +} + +.navbar.has-shadow { + box-shadow: 0 2px 0 0 #FFFFFF; +} + +.navbar.is-fixed-bottom, .navbar.is-fixed-top { + left: 0; + position: fixed; + right: 0; + z-index: 30; +} + +.navbar.is-fixed-bottom { + bottom: 0; +} + +.navbar.is-fixed-bottom.has-shadow { + box-shadow: 0 -2px 0 0 #FFFFFF; +} + +.navbar.is-fixed-top { + top: 0; +} + +html.has-navbar-fixed-top, +body.has-navbar-fixed-top { + padding-top: 4rem; +} + +html.has-navbar-fixed-bottom, +body.has-navbar-fixed-bottom { + padding-bottom: 4rem; +} + +.navbar-brand, +.navbar-tabs { + align-items: stretch; + display: flex; + flex-shrink: 0; + min-height: 4rem; +} + +.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover { + background-color: transparent; +} + +.navbar-tabs { + -webkit-overflow-scrolling: touch; + max-width: 100vw; + overflow-x: auto; + overflow-y: hidden; +} + +.navbar-burger { + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + display: block; + height: 4rem; + position: relative; + width: 4rem; + margin-left: auto; +} + +.navbar-burger span { + background-color: currentColor; + display: block; + height: 1px; + left: calc(50% - 8px); + position: absolute; + transform-origin: center; + transition-duration: 86ms; + transition-property: background-color, opacity, transform; + transition-timing-function: ease-out; + width: 16px; +} + +.navbar-burger span:nth-child(1) { + top: calc(50% - 6px); +} + +.navbar-burger span:nth-child(2) { + top: calc(50% - 1px); +} + +.navbar-burger span:nth-child(3) { + top: calc(50% + 4px); +} + +.navbar-burger:hover { + background-color: rgba(0, 0, 0, 0.05); +} + +.navbar-burger.is-active span:nth-child(1) { + transform: translateY(5px) rotate(45deg); +} + +.navbar-burger.is-active span:nth-child(2) { + opacity: 0; +} + +.navbar-burger.is-active span:nth-child(3) { + transform: translateY(-5px) rotate(-45deg); +} + +.navbar-menu { + display: none; +} + +.navbar-item, +.navbar-link { + color: rgba(0, 0, 0, 0.87); + display: block; + line-height: 1.5; + padding: 0.5rem 0.75rem; + position: relative; +} + +.navbar-item .icon:only-child, +.navbar-link .icon:only-child { + margin-left: -0.25rem; + margin-right: -0.25rem; +} + +a.navbar-item, +.navbar-link { + cursor: pointer; +} + +a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, +.navbar-link:focus, +.navbar-link:focus-within, +.navbar-link:hover, +.navbar-link.is-active { + background-color: #fafafa; + color: #FF9200; +} + +.navbar-item { + flex-grow: 0; + flex-shrink: 0; +} + +.navbar-item img { + max-height: 1.75rem; +} + +.navbar-item.has-dropdown { + padding: 0; +} + +.navbar-item.is-expanded { + flex-grow: 1; + flex-shrink: 1; +} + +.navbar-item.is-tab { + border-bottom: 1px solid transparent; + min-height: 4rem; + padding-bottom: calc(0.5rem - 1px); +} + +.navbar-item.is-tab:focus, .navbar-item.is-tab:hover { + background-color: transparent; + border-bottom-color: #FF9200; +} + +.navbar-item.is-tab.is-active { + background-color: transparent; + border-bottom-color: #FF9200; + border-bottom-style: solid; + border-bottom-width: 3px; + color: #FF9200; + padding-bottom: calc(0.5rem - 3px); +} + +.navbar-content { + flex-grow: 1; + flex-shrink: 1; +} + +.navbar-link:not(.is-arrowless) { + padding-right: 2.5em; +} + +.navbar-link:not(.is-arrowless)::after { + border-color: #FF9200; + margin-top: -0.375em; + right: 1.125em; +} + +.navbar-dropdown { + font-size: 0.875rem; + padding-bottom: 0.5rem; + padding-top: 0.5rem; +} + +.navbar-dropdown .navbar-item { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.navbar-divider { + background-color: #FFFFFF; + border: none; + display: none; + height: 2px; + margin: 0.5rem 0; +} + +@media screen and (max-width: 1023px) { + .navbar > .container { + display: block; + } + .navbar-brand .navbar-item, +.navbar-tabs .navbar-item { + align-items: center; + display: flex; + } + .navbar-link::after { + display: none; + } + .navbar-menu { + background-color: white; + box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); + padding: 0.5rem 0; + } + .navbar-menu.is-active { + display: block; + } + .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch { + left: 0; + position: fixed; + right: 0; + z-index: 30; + } + .navbar.is-fixed-bottom-touch { + bottom: 0; + } + .navbar.is-fixed-bottom-touch.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); + } + .navbar.is-fixed-top-touch { + top: 0; + } + .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu { + -webkit-overflow-scrolling: touch; + max-height: calc(100vh - 4rem); + overflow: auto; + } + html.has-navbar-fixed-top-touch, +body.has-navbar-fixed-top-touch { + padding-top: 4rem; + } + html.has-navbar-fixed-bottom-touch, +body.has-navbar-fixed-bottom-touch { + padding-bottom: 4rem; + } +} + +@media screen and (min-width: 1024px) { + .navbar, +.navbar-menu, +.navbar-start, +.navbar-end { + align-items: stretch; + display: flex; + } + .navbar { + min-height: 4rem; + } + .navbar.is-spaced { + padding: 1rem 2rem; + } + .navbar.is-spaced .navbar-start, +.navbar.is-spaced .navbar-end { + align-items: center; + } + .navbar.is-spaced a.navbar-item, +.navbar.is-spaced .navbar-link { + border-radius: 4px; + } + .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active, +.navbar.is-transparent .navbar-link:focus, +.navbar.is-transparent .navbar-link:hover, +.navbar.is-transparent .navbar-link.is-active { + background-color: transparent !important; + } + .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { + background-color: transparent !important; + } + .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { + background-color: #FFFFFF; + color: #0a0a0a; + } + .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { + background-color: #FFFFFF; + color: #FF9200; + } + .navbar-burger { + display: none; + } + .navbar-item, +.navbar-link { + align-items: center; + display: flex; + } + .navbar-item.has-dropdown { + align-items: stretch; + } + .navbar-item.has-dropdown-up .navbar-link::after { + transform: rotate(135deg) translate(0.25em, -0.25em); + } + .navbar-item.has-dropdown-up .navbar-dropdown { + border-bottom: 2px solid #dbdbdb; + border-radius: 6px 6px 0 0; + border-top: none; + bottom: 100%; + box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); + top: auto; + } + .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown { + display: block; + } + .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { + opacity: 1; + pointer-events: auto; + transform: translateY(0); + } + .navbar-menu { + flex-grow: 1; + flex-shrink: 0; + } + .navbar-start { + justify-content: flex-start; + margin-right: auto; + } + .navbar-end { + justify-content: flex-end; + margin-left: auto; + } + .navbar-dropdown { + background-color: white; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-top: 2px solid #dbdbdb; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); + display: none; + font-size: 0.875rem; + left: 0; + min-width: 100%; + position: absolute; + top: 100%; + z-index: 20; + } + .navbar-dropdown .navbar-item { + padding: 0.375rem 1rem; + white-space: nowrap; + } + .navbar-dropdown a.navbar-item { + padding-right: 3rem; + } + .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover { + background-color: #FFFFFF; + color: #0a0a0a; + } + .navbar-dropdown a.navbar-item.is-active { + background-color: #FFFFFF; + color: #FF9200; + } + .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed { + border-radius: 6px; + border-top: none; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + display: block; + opacity: 0; + pointer-events: none; + top: calc(100% + (-4px)); + transform: translateY(-5px); + transition-duration: 86ms; + transition-property: opacity, transform; + } + .navbar-dropdown.is-right { + left: auto; + right: 0; + } + .navbar-divider { + display: block; + } + .navbar > .container .navbar-brand, +.container > .navbar .navbar-brand { + margin-left: -0.75rem; + } + .navbar > .container .navbar-menu, +.container > .navbar .navbar-menu { + margin-right: -0.75rem; + } + .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop { + left: 0; + position: fixed; + right: 0; + z-index: 30; + } + .navbar.is-fixed-bottom-desktop { + bottom: 0; + } + .navbar.is-fixed-bottom-desktop.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); + } + .navbar.is-fixed-top-desktop { + top: 0; + } + html.has-navbar-fixed-top-desktop, +body.has-navbar-fixed-top-desktop { + padding-top: 4rem; + } + html.has-navbar-fixed-bottom-desktop, +body.has-navbar-fixed-bottom-desktop { + padding-bottom: 4rem; + } + html.has-spaced-navbar-fixed-top, +body.has-spaced-navbar-fixed-top { + padding-top: 6rem; + } + html.has-spaced-navbar-fixed-bottom, +body.has-spaced-navbar-fixed-bottom { + padding-bottom: 6rem; + } + a.navbar-item.is-active, +.navbar-link.is-active { + color: #0a0a0a; + } + a.navbar-item.is-active:not(:focus):not(:hover), +.navbar-link.is-active:not(:focus):not(:hover) { + background-color: transparent; + } + .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #fafafa; + } +} + +.hero.is-fullheight-with-navbar { + min-height: calc(100vh - 4rem); +} + +.menu { + font-size: 1rem; +} + +.menu.is-small { + font-size: 0.75rem; +} + +.menu.is-medium { + font-size: 1.25rem; +} + +.menu.is-large { + font-size: 1.5rem; +} + +.menu-list { + line-height: 1.25; +} + +.menu-list a { + border-radius: 2px; + color: rgba(0, 0, 0, 0.87); + display: block; + padding: 0.5em 0.75em; +} + +.menu-list a:hover { + background-color: transparent; + color: #ca6500; +} + +.menu-list a.is-active { + background-color: #ca6500; + color: #fff; +} + +.menu-list li ul { + border-left: 1px solid #dbdbdb; + margin: 0.75em; + padding-left: 0.75em; +} + +.menu-label { + color: #7a7a7a; + font-size: 0.75em; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.menu-label:not(:first-child) { + margin-top: 1em; +} + +.menu-label:not(:last-child) { + margin-bottom: 1em; +} + +.tabs { + -webkit-overflow-scrolling: touch; + align-items: stretch; + display: flex; + font-size: 1rem; + justify-content: space-between; + overflow: hidden; + overflow-x: auto; + white-space: nowrap; +} + +.tabs a { + align-items: center; + border-bottom-color: #dbdbdb; + border-bottom-style: solid; + border-bottom-width: 1px; + color: rgba(0, 0, 0, 0.87); + display: flex; + justify-content: center; + margin-bottom: -1px; + padding: 0.5em 1em; + vertical-align: top; +} + +.tabs a:hover { + border-bottom-color: #363636; + color: #363636; +} + +.tabs li { + display: block; +} + +.tabs li.is-active a { + border-bottom-color: #FF9200; + color: #FF9200; +} + +.tabs ul { + align-items: center; + border-bottom-color: #dbdbdb; + border-bottom-style: solid; + border-bottom-width: 1px; + display: flex; + flex-grow: 1; + flex-shrink: 0; + justify-content: flex-start; +} + +.tabs ul.is-left { + padding-right: 0.75em; +} + +.tabs ul.is-center { + flex: none; + justify-content: center; + padding-left: 0.75em; + padding-right: 0.75em; +} + +.tabs ul.is-right { + justify-content: flex-end; + padding-left: 0.75em; +} + +.tabs .icon:first-child { + margin-right: 0.5em; +} + +.tabs .icon:last-child { + margin-left: 0.5em; +} + +.tabs.is-centered ul { + justify-content: center; +} + +.tabs.is-right ul { + justify-content: flex-end; +} + +.tabs.is-boxed a { + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} + +.tabs.is-boxed a:hover { + background-color: #FFFFFF; + border-bottom-color: #dbdbdb; +} + +.tabs.is-boxed li.is-active a { + background-color: white; + border-color: #dbdbdb; + border-bottom-color: transparent !important; +} + +.tabs.is-fullwidth li { + flex-grow: 1; + flex-shrink: 0; +} + +.tabs.is-toggle a { + border-color: #dbdbdb; + border-style: solid; + border-width: 1px; + margin-bottom: 0; + position: relative; +} + +.tabs.is-toggle a:hover { + background-color: #FFFFFF; + border-color: #b5b5b5; + z-index: 2; +} + +.tabs.is-toggle li + li { + margin-left: -1px; +} + +.tabs.is-toggle li:first-child a { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} + +.tabs.is-toggle li:last-child a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.tabs.is-toggle li.is-active a { + background-color: #FF9200; + border-color: #FF9200; + color: #fff; + z-index: 1; +} + +.tabs.is-toggle ul { + border-bottom: none; +} + +.tabs.is-toggle.is-toggle-rounded li:first-child a { + border-bottom-left-radius: 290486px; + border-top-left-radius: 290486px; + padding-left: 1.25em; +} + +.tabs.is-toggle.is-toggle-rounded li:last-child a { + border-bottom-right-radius: 290486px; + border-top-right-radius: 290486px; + padding-right: 1.25em; +} + +.tabs.is-small { + font-size: 0.75rem; +} + +.tabs.is-medium { + font-size: 1.25rem; +} + +.tabs.is-large { + font-size: 1.5rem; +} + +.icon { + align-items: center; + display: inline-flex; + justify-content: center; + height: 1.5rem; + width: 1.5rem; +} + +.icon.is-small { + height: 1rem; + width: 1rem; +} + +.icon.is-medium { + height: 2rem; + width: 2rem; +} + +.icon.is-large { + height: 3rem; + width: 3rem; +} + +.icon-text { + align-items: flex-start; + color: inherit; + display: inline-flex; + flex-wrap: wrap; + line-height: 1.5rem; + vertical-align: top; +} + +.icon-text .icon { + flex-grow: 0; + flex-shrink: 0; +} + +.icon-text .icon:not(:last-child) { + margin-right: 0.25em; +} + +.icon-text .icon:not(:first-child) { + margin-left: 0.25em; +} + +div.icon-text { + display: flex; +} + +.image { + display: block; + position: relative; +} + +.image img { + display: block; + height: auto; + width: 100%; +} + +.image img.is-rounded { + border-radius: 290486px; +} + +.image.is-fullwidth { + width: 100%; +} + +.image.is-square img, +.image.is-square .has-ratio, .image.is-1by1 img, +.image.is-1by1 .has-ratio, .image.is-5by4 img, +.image.is-5by4 .has-ratio, .image.is-4by3 img, +.image.is-4by3 .has-ratio, .image.is-3by2 img, +.image.is-3by2 .has-ratio, .image.is-5by3 img, +.image.is-5by3 .has-ratio, .image.is-16by9 img, +.image.is-16by9 .has-ratio, .image.is-2by1 img, +.image.is-2by1 .has-ratio, .image.is-3by1 img, +.image.is-3by1 .has-ratio, .image.is-4by5 img, +.image.is-4by5 .has-ratio, .image.is-3by4 img, +.image.is-3by4 .has-ratio, .image.is-2by3 img, +.image.is-2by3 .has-ratio, .image.is-3by5 img, +.image.is-3by5 .has-ratio, .image.is-9by16 img, +.image.is-9by16 .has-ratio, .image.is-1by2 img, +.image.is-1by2 .has-ratio, .image.is-1by3 img, +.image.is-1by3 .has-ratio { + height: 100%; + width: 100%; +} + +.image.is-square, .image.is-1by1 { + padding-top: 100%; +} + +.image.is-5by4 { + padding-top: 80%; +} + +.image.is-4by3 { + padding-top: 75%; +} + +.image.is-3by2 { + padding-top: 66.6666%; +} + +.image.is-5by3 { + padding-top: 60%; +} + +.image.is-16by9 { + padding-top: 56.25%; +} + +.image.is-2by1 { + padding-top: 50%; +} + +.image.is-3by1 { + padding-top: 33.3333%; +} + +.image.is-4by5 { + padding-top: 125%; +} + +.image.is-3by4 { + padding-top: 133.3333%; +} + +.image.is-2by3 { + padding-top: 150%; +} + +.image.is-3by5 { + padding-top: 166.6666%; +} + +.image.is-9by16 { + padding-top: 177.7777%; +} + +.image.is-1by2 { + padding-top: 200%; +} + +.image.is-1by3 { + padding-top: 300%; +} + +.image.is-16x16 { + height: 16px; + width: 16px; +} + +.image.is-24x24 { + height: 24px; + width: 24px; +} + +.image.is-32x32 { + height: 32px; + width: 32px; +} + +.image.is-48x48 { + height: 48px; + width: 48px; +} + +.image.is-64x64 { + height: 64px; + width: 64px; +} + +.image.is-96x96 { + height: 96px; + width: 96px; +} + +.image.is-128x128 { + height: 128px; + width: 128px; +} + +/* Bulma Form */ +.select select, .textarea, .input { + background-color: white; + border-color: #dbdbdb; + border-radius: 4px; + color: #363636; +} + +.select select::-moz-placeholder, .textarea::-moz-placeholder, .input::-moz-placeholder { + color: rgba(54, 54, 54, 0.3); +} + +.select select::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .input::-webkit-input-placeholder { + color: rgba(54, 54, 54, 0.3); +} + +.select select:-moz-placeholder, .textarea:-moz-placeholder, .input:-moz-placeholder { + color: rgba(54, 54, 54, 0.3); +} + +.select select:-ms-input-placeholder, .textarea:-ms-input-placeholder, .input:-ms-input-placeholder { + color: rgba(54, 54, 54, 0.3); +} + +.select select:hover, .textarea:hover, .input:hover, .select select.is-hovered, .is-hovered.textarea, .is-hovered.input { + border-color: #b5b5b5; +} + +.select select:focus, .textarea:focus, .input:focus, .select select.is-focused, .is-focused.textarea, .is-focused.input, .select select:active, .textarea:active, .input:active, .select select.is-active, .is-active.textarea, .is-active.input { + border-color: #FF9200; + box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); +} + +.select select[disabled], [disabled].textarea, [disabled].input, fieldset[disabled] .select select, .select fieldset[disabled] select, fieldset[disabled] .textarea, fieldset[disabled] .input { + background-color: #FFFFFF; + border-color: #FFFFFF; + box-shadow: none; + color: #7a7a7a; +} + +.select select[disabled]::-moz-placeholder, [disabled].textarea::-moz-placeholder, [disabled].input::-moz-placeholder, fieldset[disabled] .select select::-moz-placeholder, .select fieldset[disabled] select::-moz-placeholder, fieldset[disabled] .textarea::-moz-placeholder, fieldset[disabled] .input::-moz-placeholder { + color: rgba(122, 122, 122, 0.3); +} + +.select select[disabled]::-webkit-input-placeholder, [disabled].textarea::-webkit-input-placeholder, [disabled].input::-webkit-input-placeholder, fieldset[disabled] .select select::-webkit-input-placeholder, .select fieldset[disabled] select::-webkit-input-placeholder, fieldset[disabled] .textarea::-webkit-input-placeholder, fieldset[disabled] .input::-webkit-input-placeholder { + color: rgba(122, 122, 122, 0.3); +} + +.select select[disabled]:-moz-placeholder, [disabled].textarea:-moz-placeholder, [disabled].input:-moz-placeholder, fieldset[disabled] .select select:-moz-placeholder, .select fieldset[disabled] select:-moz-placeholder, fieldset[disabled] .textarea:-moz-placeholder, fieldset[disabled] .input:-moz-placeholder { + color: rgba(122, 122, 122, 0.3); +} + +.select select[disabled]:-ms-input-placeholder, [disabled].textarea:-ms-input-placeholder, [disabled].input:-ms-input-placeholder, fieldset[disabled] .select select:-ms-input-placeholder, .select fieldset[disabled] select:-ms-input-placeholder, fieldset[disabled] .textarea:-ms-input-placeholder, fieldset[disabled] .input:-ms-input-placeholder { + color: rgba(122, 122, 122, 0.3); +} + +.textarea, .input { + box-shadow: inset 0 0.0625em 0.125em rgba(10, 10, 10, 0.05); + max-width: 100%; + width: 100%; +} + +[readonly].textarea, [readonly].input { + box-shadow: none; +} + +.is-white.textarea, .is-white.input { + border-color: white; +} + +.is-white.textarea:focus, .is-white.input:focus, .is-white.is-focused.textarea, .is-white.is-focused.input, .is-white.textarea:active, .is-white.input:active, .is-white.is-active.textarea, .is-white.is-active.input { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); +} + +.is-black.textarea, .is-black.input { + border-color: #0a0a0a; +} + +.is-black.textarea:focus, .is-black.input:focus, .is-black.is-focused.textarea, .is-black.is-focused.input, .is-black.textarea:active, .is-black.input:active, .is-black.is-active.textarea, .is-black.is-active.input { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); +} + +.is-light.textarea, .is-light.input { + border-color: whitesmoke; +} + +.is-light.textarea:focus, .is-light.input:focus, .is-light.is-focused.textarea, .is-light.is-focused.input, .is-light.textarea:active, .is-light.input:active, .is-light.is-active.textarea, .is-light.is-active.input { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); +} + +.is-dark.textarea, .is-dark.input { + border-color: #363636; +} + +.is-dark.textarea:focus, .is-dark.input:focus, .is-dark.is-focused.textarea, .is-dark.is-focused.input, .is-dark.textarea:active, .is-dark.input:active, .is-dark.is-active.textarea, .is-dark.is-active.input { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); +} + +.is-primary.textarea, .is-primary.input { + border-color: #FF9200; +} + +.is-primary.textarea:focus, .is-primary.input:focus, .is-primary.is-focused.textarea, .is-primary.is-focused.input, .is-primary.textarea:active, .is-primary.input:active, .is-primary.is-active.textarea, .is-primary.is-active.input { + box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); +} + +.is-link.textarea, .is-link.input { + border-color: #FF9200; +} + +.is-link.textarea:focus, .is-link.input:focus, .is-link.is-focused.textarea, .is-link.is-focused.input, .is-link.textarea:active, .is-link.input:active, .is-link.is-active.textarea, .is-link.is-active.input { + box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); +} + +.is-info.textarea, .is-info.input { + border-color: #3298dc; +} + +.is-info.textarea:focus, .is-info.input:focus, .is-info.is-focused.textarea, .is-info.is-focused.input, .is-info.textarea:active, .is-info.input:active, .is-info.is-active.textarea, .is-info.is-active.input { + box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); +} + +.is-success.textarea, .is-success.input { + border-color: #01a901; +} + +.is-success.textarea:focus, .is-success.input:focus, .is-success.is-focused.textarea, .is-success.is-focused.input, .is-success.textarea:active, .is-success.input:active, .is-success.is-active.textarea, .is-success.is-active.input { + box-shadow: 0 0 0 0.125em rgba(1, 169, 1, 0.25); +} + +.is-warning.textarea, .is-warning.input { + border-color: #e7cb00; +} + +.is-warning.textarea:focus, .is-warning.input:focus, .is-warning.is-focused.textarea, .is-warning.is-focused.input, .is-warning.textarea:active, .is-warning.input:active, .is-warning.is-active.textarea, .is-warning.is-active.input { + box-shadow: 0 0 0 0.125em rgba(231, 203, 0, 0.25); +} + +.is-danger.textarea, .is-danger.input { + border-color: #F45F4B; +} + +.is-danger.textarea:focus, .is-danger.input:focus, .is-danger.is-focused.textarea, .is-danger.is-focused.input, .is-danger.textarea:active, .is-danger.input:active, .is-danger.is-active.textarea, .is-danger.is-active.input { + box-shadow: 0 0 0 0.125em rgba(244, 95, 75, 0.25); +} + +.is-small.textarea, .is-small.input { + border-radius: 2px; + font-size: 0.75rem; +} + +.is-medium.textarea, .is-medium.input { + font-size: 1.25rem; +} + +.is-large.textarea, .is-large.input { + font-size: 1.5rem; +} + +.is-fullwidth.textarea, .is-fullwidth.input { + display: block; + width: 100%; +} + +.is-inline.textarea, .is-inline.input { + display: inline; + width: auto; +} + +.input.is-rounded { + border-radius: 290486px; + padding-left: calc(calc(0.75em - 1px) + 0.375em); + padding-right: calc(calc(0.75em - 1px) + 0.375em); +} + +.input.is-static { + background-color: transparent; + border-color: transparent; + box-shadow: none; + padding-left: 0; + padding-right: 0; +} + +.textarea { + display: block; + max-width: 100%; + min-width: 100%; + padding: calc(0.75em - 1px); + resize: vertical; +} + +.textarea:not([rows]) { + max-height: 40em; + min-height: 8em; +} + +.textarea[rows] { + height: initial; +} + +.textarea.has-fixed-size { + resize: none; +} + +.radio, .checkbox { + cursor: pointer; + display: inline-block; + line-height: 1.25; + position: relative; +} + +.radio input, .checkbox input { + cursor: pointer; +} + +.radio:hover, .checkbox:hover { + color: #363636; +} + +[disabled].radio, [disabled].checkbox, fieldset[disabled] .radio, fieldset[disabled] .checkbox, +.radio input[disabled], +.checkbox input[disabled] { + color: #7a7a7a; + cursor: not-allowed; +} + +.radio + .radio { + margin-left: 0.5em; +} + +.select { + display: inline-block; + max-width: 100%; + position: relative; + vertical-align: top; +} + +.select:not(.is-multiple) { + height: 2.5em; +} + +.select:not(.is-multiple):not(.is-loading)::after { + border-color: #FF9200; + right: 1.125em; + z-index: 4; +} + +.select.is-rounded select { + border-radius: 290486px; + padding-left: 1em; +} + +.select select { + cursor: pointer; + display: block; + font-size: 1em; + max-width: 100%; + outline: none; +} + +.select select::-ms-expand { + display: none; +} + +.select select[disabled]:hover, fieldset[disabled] .select select:hover { + border-color: #FFFFFF; +} + +.select select:not([multiple]) { + padding-right: 2.5em; +} + +.select select[multiple] { + height: auto; + padding: 0; +} + +.select select[multiple] option { + padding: 0.5em 1em; +} + +.select:not(.is-multiple):not(.is-loading):hover::after { + border-color: #363636; +} + +.select.is-white:not(:hover)::after { + border-color: white; +} + +.select.is-white select { + border-color: white; +} + +.select.is-white select:hover, .select.is-white select.is-hovered { + border-color: #f2f2f2; +} + +.select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); +} + +.select.is-black:not(:hover)::after { + border-color: #0a0a0a; +} + +.select.is-black select { + border-color: #0a0a0a; +} + +.select.is-black select:hover, .select.is-black select.is-hovered { + border-color: black; +} + +.select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); +} + +.select.is-light:not(:hover)::after { + border-color: whitesmoke; +} + +.select.is-light select { + border-color: whitesmoke; +} + +.select.is-light select:hover, .select.is-light select.is-hovered { + border-color: #e8e8e8; +} + +.select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); +} + +.select.is-dark:not(:hover)::after { + border-color: #363636; +} + +.select.is-dark select { + border-color: #363636; +} + +.select.is-dark select:hover, .select.is-dark select.is-hovered { + border-color: #292929; +} + +.select.is-dark select:focus, .select.is-dark select.is-focused, .select.is-dark select:active, .select.is-dark select.is-active { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); +} + +.select.is-primary:not(:hover)::after { + border-color: #FF9200; +} + +.select.is-primary select { + border-color: #FF9200; +} + +.select.is-primary select:hover, .select.is-primary select.is-hovered { + border-color: #e68300; +} + +.select.is-primary select:focus, .select.is-primary select.is-focused, .select.is-primary select:active, .select.is-primary select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); +} + +.select.is-link:not(:hover)::after { + border-color: #FF9200; +} + +.select.is-link select { + border-color: #FF9200; +} + +.select.is-link select:hover, .select.is-link select.is-hovered { + border-color: #e68300; +} + +.select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 146, 0, 0.25); +} + +.select.is-info:not(:hover)::after { + border-color: #3298dc; +} + +.select.is-info select { + border-color: #3298dc; +} + +.select.is-info select:hover, .select.is-info select.is-hovered { + border-color: #238cd1; +} + +.select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active { + box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); +} + +.select.is-success:not(:hover)::after { + border-color: #01a901; +} + +.select.is-success select { + border-color: #01a901; +} + +.select.is-success select:hover, .select.is-success select.is-hovered { + border-color: #019001; +} + +.select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active { + box-shadow: 0 0 0 0.125em rgba(1, 169, 1, 0.25); +} + +.select.is-warning:not(:hover)::after { + border-color: #e7cb00; +} + +.select.is-warning select { + border-color: #e7cb00; +} + +.select.is-warning select:hover, .select.is-warning select.is-hovered { + border-color: #ceb500; +} + +.select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active { + box-shadow: 0 0 0 0.125em rgba(231, 203, 0, 0.25); +} + +.select.is-danger:not(:hover)::after { + border-color: #F45F4B; +} + +.select.is-danger select { + border-color: #F45F4B; +} + +.select.is-danger select:hover, .select.is-danger select.is-hovered { + border-color: #f34a33; +} + +.select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active { + box-shadow: 0 0 0 0.125em rgba(244, 95, 75, 0.25); +} + +.select.is-small { + border-radius: 2px; + font-size: 0.75rem; +} + +.select.is-medium { + font-size: 1.25rem; +} + +.select.is-large { + font-size: 1.5rem; +} + +.select.is-disabled::after { + border-color: #7a7a7a; +} + +.select.is-fullwidth { + width: 100%; +} + +.select.is-fullwidth select { + width: 100%; +} + +.select.is-loading::after { + margin-top: 0; + position: absolute; + right: 0.625em; + top: 0.625em; + transform: none; +} + +.select.is-loading.is-small:after { + font-size: 0.75rem; +} + +.select.is-loading.is-medium:after { + font-size: 1.25rem; +} + +.select.is-loading.is-large:after { + font-size: 1.5rem; +} + +.file { + align-items: stretch; + display: flex; + justify-content: flex-start; + position: relative; +} + +.file.is-white .file-cta { + background-color: white; + border-color: transparent; + color: #0a0a0a; +} + +.file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; +} + +.file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); + color: #0a0a0a; +} + +.file.is-white:active .file-cta, .file.is-white.is-active .file-cta { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; +} + +.file.is-black .file-cta { + background-color: #0a0a0a; + border-color: transparent; + color: white; +} + +.file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta { + background-color: #040404; + border-color: transparent; + color: white; +} + +.file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); + color: white; +} + +.file.is-black:active .file-cta, .file.is-black.is-active .file-cta { + background-color: black; + border-color: transparent; + color: white; +} + +.file.is-light .file-cta { + background-color: whitesmoke; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} + +.file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta { + background-color: #eeeeee; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} + +.file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25); + color: rgba(0, 0, 0, 0.7); +} + +.file.is-light:active .file-cta, .file.is-light.is-active .file-cta { + background-color: #e8e8e8; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} + +.file.is-dark .file-cta { + background-color: #363636; + border-color: transparent; + color: #fff; +} + +.file.is-dark:hover .file-cta, .file.is-dark.is-hovered .file-cta { + background-color: #2f2f2f; + border-color: transparent; + color: #fff; +} + +.file.is-dark:focus .file-cta, .file.is-dark.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25); + color: #fff; +} + +.file.is-dark:active .file-cta, .file.is-dark.is-active .file-cta { + background-color: #292929; + border-color: transparent; + color: #fff; +} + +.file.is-primary .file-cta { + background-color: #FF9200; + border-color: transparent; + color: #fff; +} + +.file.is-primary:hover .file-cta, .file.is-primary.is-hovered .file-cta { + background-color: #f28b00; + border-color: transparent; + color: #fff; +} + +.file.is-primary:focus .file-cta, .file.is-primary.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 146, 0, 0.25); + color: #fff; +} + +.file.is-primary:active .file-cta, .file.is-primary.is-active .file-cta { + background-color: #e68300; + border-color: transparent; + color: #fff; +} + +.file.is-link .file-cta { + background-color: #FF9200; + border-color: transparent; + color: #fff; +} + +.file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta { + background-color: #f28b00; + border-color: transparent; + color: #fff; +} + +.file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 146, 0, 0.25); + color: #fff; +} + +.file.is-link:active .file-cta, .file.is-link.is-active .file-cta { + background-color: #e68300; + border-color: transparent; + color: #fff; +} + +.file.is-info .file-cta { + background-color: #3298dc; + border-color: transparent; + color: #fff; +} + +.file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta { + background-color: #2793da; + border-color: transparent; + color: #fff; +} + +.file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(50, 152, 220, 0.25); + color: #fff; +} + +.file.is-info:active .file-cta, .file.is-info.is-active .file-cta { + background-color: #238cd1; + border-color: transparent; + color: #fff; +} + +.file.is-success .file-cta { + background-color: #01a901; + border-color: transparent; + color: #fff; +} + +.file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta { + background-color: #019c01; + border-color: transparent; + color: #fff; +} + +.file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(1, 169, 1, 0.25); + color: #fff; +} + +.file.is-success:active .file-cta, .file.is-success.is-active .file-cta { + background-color: #019001; + border-color: transparent; + color: #fff; +} + +.file.is-warning .file-cta { + background-color: #e7cb00; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} + +.file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta { + background-color: #dac000; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} + +.file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(231, 203, 0, 0.25); + color: rgba(0, 0, 0, 0.7); +} + +.file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta { + background-color: #ceb500; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); +} + +.file.is-danger .file-cta { + background-color: #F45F4B; + border-color: transparent; + color: #fff; +} + +.file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta { + background-color: #f3543f; + border-color: transparent; + color: #fff; +} + +.file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(244, 95, 75, 0.25); + color: #fff; +} + +.file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta { + background-color: #f34a33; + border-color: transparent; + color: #fff; +} + +.file.is-small { + font-size: 0.75rem; +} + +.file.is-medium { + font-size: 1.25rem; +} + +.file.is-medium .file-icon .fa { + font-size: 21px; +} + +.file.is-large { + font-size: 1.5rem; +} + +.file.is-large .file-icon .fa { + font-size: 28px; +} + +.file.has-name .file-cta { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +.file.has-name .file-name { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.file.has-name.is-empty .file-cta { + border-radius: 4px; +} + +.file.has-name.is-empty .file-name { + display: none; +} + +.file.is-boxed .file-label { + flex-direction: column; +} + +.file.is-boxed .file-cta { + flex-direction: column; + height: auto; + padding: 1em 3em; +} + +.file.is-boxed .file-name { + border-width: 0 1px 1px; +} + +.file.is-boxed .file-icon { + height: 1.5em; + width: 1.5em; +} + +.file.is-boxed .file-icon .fa { + font-size: 21px; +} + +.file.is-boxed.is-small .file-icon .fa { + font-size: 14px; +} + +.file.is-boxed.is-medium .file-icon .fa { + font-size: 28px; +} + +.file.is-boxed.is-large .file-icon .fa { + font-size: 35px; +} + +.file.is-boxed.has-name .file-cta { + border-radius: 4px 4px 0 0; +} + +.file.is-boxed.has-name .file-name { + border-radius: 0 0 4px 4px; + border-width: 0 1px 1px; +} + +.file.is-centered { + justify-content: center; +} + +.file.is-fullwidth .file-label { + width: 100%; +} + +.file.is-fullwidth .file-name { + flex-grow: 1; + max-width: none; +} + +.file.is-right { + justify-content: flex-end; +} + +.file.is-right .file-cta { + border-radius: 0 4px 4px 0; +} + +.file.is-right .file-name { + border-radius: 4px 0 0 4px; + border-width: 1px 0 1px 1px; + order: -1; +} + +.file-label { + align-items: stretch; + display: flex; + cursor: pointer; + justify-content: flex-start; + overflow: hidden; + position: relative; +} + +.file-label:hover .file-cta { + background-color: #eeeeee; + color: #363636; +} + +.file-label:hover .file-name { + border-color: #d5d5d5; +} + +.file-label:active .file-cta { + background-color: #e8e8e8; + color: #363636; +} + +.file-label:active .file-name { + border-color: #cfcfcf; +} + +.file-input { + height: 100%; + left: 0; + opacity: 0; + outline: none; + position: absolute; + top: 0; + width: 100%; +} + +.file-cta, +.file-name { + border-color: #dbdbdb; + border-radius: 4px; + font-size: 1em; + padding-left: 1em; + padding-right: 1em; + white-space: nowrap; +} + +.file-cta { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.87); +} + +.file-name { + border-color: #dbdbdb; + border-style: solid; + border-width: 1px 1px 1px 0; + display: block; + max-width: 16em; + overflow: hidden; + text-align: inherit; + text-overflow: ellipsis; +} + +.file-icon { + align-items: center; + display: flex; + height: 1em; + justify-content: center; + margin-right: 0.5em; + width: 1em; +} + +.file-icon .fa { + font-size: 14px; +} + +.label { + color: #363636; + display: block; + font-size: 1rem; + font-weight: 700; +} + +.label:not(:last-child) { + margin-bottom: 0.5em; +} + +.label.is-small { + font-size: 0.75rem; +} + +.label.is-medium { + font-size: 1.25rem; +} + +.label.is-large { + font-size: 1.5rem; +} + +.help { + display: block; + font-size: 0.75rem; + margin-top: 0.25rem; +} + +.help.is-white { + color: white; +} + +.help.is-black { + color: #0a0a0a; +} + +.help.is-light { + color: whitesmoke; +} + +.help.is-dark { + color: #363636; +} + +.help.is-primary { + color: #FF9200; +} + +.help.is-link { + color: #FF9200; +} + +.help.is-info { + color: #3298dc; +} + +.help.is-success { + color: #01a901; +} + +.help.is-warning { + color: #e7cb00; +} + +.help.is-danger { + color: #F45F4B; +} + +.field:not(:last-child) { + margin-bottom: 0.75rem; +} + +.field.has-addons { + display: flex; + justify-content: flex-start; +} + +.field.has-addons .control:not(:last-child) { + margin-right: -1px; +} + +.field.has-addons .control:not(:first-child):not(:last-child) .button, +.field.has-addons .control:not(:first-child):not(:last-child) .input, +.field.has-addons .control:not(:first-child):not(:last-child) .select select { + border-radius: 0; +} + +.field.has-addons .control:first-child:not(:only-child) .button, +.field.has-addons .control:first-child:not(:only-child) .input, +.field.has-addons .control:first-child:not(:only-child) .select select { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +.field.has-addons .control:last-child:not(:only-child) .button, +.field.has-addons .control:last-child:not(:only-child) .input, +.field.has-addons .control:last-child:not(:only-child) .select select { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered, +.field.has-addons .control .input:not([disabled]):hover, +.field.has-addons .control .input:not([disabled]).is-hovered, +.field.has-addons .control .select select:not([disabled]):hover, +.field.has-addons .control .select select:not([disabled]).is-hovered { + z-index: 2; +} + +.field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active, +.field.has-addons .control .input:not([disabled]):focus, +.field.has-addons .control .input:not([disabled]).is-focused, +.field.has-addons .control .input:not([disabled]):active, +.field.has-addons .control .input:not([disabled]).is-active, +.field.has-addons .control .select select:not([disabled]):focus, +.field.has-addons .control .select select:not([disabled]).is-focused, +.field.has-addons .control .select select:not([disabled]):active, +.field.has-addons .control .select select:not([disabled]).is-active { + z-index: 3; +} + +.field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover, +.field.has-addons .control .input:not([disabled]):focus:hover, +.field.has-addons .control .input:not([disabled]).is-focused:hover, +.field.has-addons .control .input:not([disabled]):active:hover, +.field.has-addons .control .input:not([disabled]).is-active:hover, +.field.has-addons .control .select select:not([disabled]):focus:hover, +.field.has-addons .control .select select:not([disabled]).is-focused:hover, +.field.has-addons .control .select select:not([disabled]):active:hover, +.field.has-addons .control .select select:not([disabled]).is-active:hover { + z-index: 4; +} + +.field.has-addons .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; +} + +.field.has-addons.has-addons-centered { + justify-content: center; +} + +.field.has-addons.has-addons-right { + justify-content: flex-end; +} + +.field.has-addons.has-addons-fullwidth .control { + flex-grow: 1; + flex-shrink: 0; +} + +.field.is-grouped { + display: flex; + justify-content: flex-start; +} + +.field.is-grouped > .control { + flex-shrink: 0; +} + +.field.is-grouped > .control:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; +} + +.field.is-grouped > .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; +} + +.field.is-grouped.is-grouped-centered { + justify-content: center; +} + +.field.is-grouped.is-grouped-right { + justify-content: flex-end; +} + +.field.is-grouped.is-grouped-multiline { + flex-wrap: wrap; +} + +.field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { + margin-bottom: 0.75rem; +} + +.field.is-grouped.is-grouped-multiline:last-child { + margin-bottom: -0.75rem; +} + +.field.is-grouped.is-grouped-multiline:not(:last-child) { + margin-bottom: 0; +} + +@media screen and (min-width: 769px), print { + .field.is-horizontal { + display: flex; + } +} + +.field-label .label { + font-size: inherit; +} + +@media screen and (max-width: 768px) { + .field-label { + margin-bottom: 0.5rem; + } +} + +@media screen and (min-width: 769px), print { + .field-label { + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + margin-right: 1.5rem; + text-align: right; + } + .field-label.is-small { + font-size: 0.75rem; + padding-top: 0.375em; + } + .field-label.is-normal { + padding-top: 0.375em; + } + .field-label.is-medium { + font-size: 1.25rem; + padding-top: 0.375em; + } + .field-label.is-large { + font-size: 1.5rem; + padding-top: 0.375em; + } +} + +.field-body .field .field { + margin-bottom: 0; +} + +@media screen and (min-width: 769px), print { + .field-body { + display: flex; + flex-basis: 0; + flex-grow: 5; + flex-shrink: 1; + } + .field-body .field { + margin-bottom: 0; + } + .field-body > .field { + flex-shrink: 1; + } + .field-body > .field:not(.is-narrow) { + flex-grow: 1; + } + .field-body > .field:not(:last-child) { + margin-right: 0.75rem; + } +} + +.control { + box-sizing: border-box; + clear: both; + font-size: 1rem; + position: relative; + text-align: inherit; +} + +.control.has-icons-left .input:focus ~ .icon, +.control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon, +.control.has-icons-right .select:focus ~ .icon { + color: rgba(0, 0, 0, 0.87); +} + +.control.has-icons-left .input.is-small ~ .icon, +.control.has-icons-left .select.is-small ~ .icon, .control.has-icons-right .input.is-small ~ .icon, +.control.has-icons-right .select.is-small ~ .icon { + font-size: 0.75rem; +} + +.control.has-icons-left .input.is-medium ~ .icon, +.control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon, +.control.has-icons-right .select.is-medium ~ .icon { + font-size: 1.25rem; +} + +.control.has-icons-left .input.is-large ~ .icon, +.control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon, +.control.has-icons-right .select.is-large ~ .icon { + font-size: 1.5rem; +} + +.control.has-icons-left .icon, .control.has-icons-right .icon { + color: #dbdbdb; + height: 2.5em; + pointer-events: none; + position: absolute; + top: 0; + width: 2.5em; + z-index: 4; +} + +.control.has-icons-left .input, +.control.has-icons-left .select select { + padding-left: 2.5em; +} + +.control.has-icons-left .icon.is-left { + left: 0; +} + +.control.has-icons-right .input, +.control.has-icons-right .select select { + padding-right: 2.5em; +} + +.control.has-icons-right .icon.is-right { + right: 0; +} + +.control.is-loading::after { + position: absolute !important; + right: 0.625em; + top: 0.625em; + z-index: 4; +} + +.control.is-loading.is-small:after { + font-size: 0.75rem; +} + +.control.is-loading.is-medium:after { + font-size: 1.25rem; +} + +.control.is-loading.is-large:after { + font-size: 1.5rem; +} + +/* Bulma Helpers */ +.has-text-white { + color: white !important; +} + +a.has-text-white:hover, a.has-text-white:focus { + color: #e6e6e6 !important; +} + +.has-background-white { + background-color: white !important; +} + +.has-text-black { + color: #0a0a0a !important; +} + +a.has-text-black:hover, a.has-text-black:focus { + color: black !important; +} + +.has-background-black { + background-color: #0a0a0a !important; +} + +.has-text-light { + color: whitesmoke !important; +} + +a.has-text-light:hover, a.has-text-light:focus { + color: #dbdbdb !important; +} + +.has-background-light { + background-color: whitesmoke !important; +} + +.has-text-dark { + color: #363636 !important; +} + +a.has-text-dark:hover, a.has-text-dark:focus { + color: #1c1c1c !important; +} + +.has-background-dark { + background-color: #363636 !important; +} + +.has-text-primary { + color: #FF9200 !important; +} + +a.has-text-primary:hover, a.has-text-primary:focus { + color: #cc7500 !important; +} + +.has-background-primary { + background-color: #FF9200 !important; +} + +.has-text-primary-light { + color: #fff6eb !important; +} + +a.has-text-primary-light:hover, a.has-text-primary-light:focus { + color: #ffe0b8 !important; +} + +.has-background-primary-light { + background-color: #fff6eb !important; +} + +.has-text-primary-dark { + color: #a35d00 !important; +} + +a.has-text-primary-dark:hover, a.has-text-primary-dark:focus { + color: #d67b00 !important; +} + +.has-background-primary-dark { + background-color: #a35d00 !important; +} + +.has-text-link { + color: #FF9200 !important; +} + +a.has-text-link:hover, a.has-text-link:focus { + color: #cc7500 !important; +} + +.has-background-link { + background-color: #FF9200 !important; +} + +.has-text-link-light { + color: #fff6eb !important; +} + +a.has-text-link-light:hover, a.has-text-link-light:focus { + color: #ffe0b8 !important; +} + +.has-background-link-light { + background-color: #fff6eb !important; +} + +.has-text-link-dark { + color: #a35d00 !important; +} + +a.has-text-link-dark:hover, a.has-text-link-dark:focus { + color: #d67b00 !important; +} + +.has-background-link-dark { + background-color: #a35d00 !important; +} + +.has-text-info { + color: #3298dc !important; +} + +a.has-text-info:hover, a.has-text-info:focus { + color: #207dbc !important; +} + +.has-background-info { + background-color: #3298dc !important; +} + +.has-text-info-light { + color: #eef6fc !important; +} + +a.has-text-info-light:hover, a.has-text-info-light:focus { + color: #c2e0f5 !important; +} + +.has-background-info-light { + background-color: #eef6fc !important; +} + +.has-text-info-dark { + color: #1d72aa !important; +} + +a.has-text-info-dark:hover, a.has-text-info-dark:focus { + color: #248fd6 !important; +} + +.has-background-info-dark { + background-color: #1d72aa !important; +} + +.has-text-success { + color: #01a901 !important; +} + +a.has-text-success:hover, a.has-text-success:focus { + color: #017601 !important; +} + +.has-background-success { + background-color: #01a901 !important; +} + +.has-text-success-light { + color: #ebffeb !important; +} + +a.has-text-success-light:hover, a.has-text-success-light:focus { + color: #b8ffb8 !important; +} + +.has-background-success-light { + background-color: #ebffeb !important; +} + +.has-text-success-dark { + color: #01cb01 !important; +} + +a.has-text-success-dark:hover, a.has-text-success-dark:focus { + color: #02fe02 !important; +} + +.has-background-success-dark { + background-color: #01cb01 !important; +} + +.has-text-warning { + color: #e7cb00 !important; +} + +a.has-text-warning:hover, a.has-text-warning:focus { + color: #b49e00 !important; +} + +.has-background-warning { + background-color: #e7cb00 !important; +} + +.has-text-warning-light { + color: #fffdeb !important; +} + +a.has-text-warning-light:hover, a.has-text-warning-light:focus { + color: #fff6b8 !important; +} + +.has-background-warning-light { + background-color: #fffdeb !important; +} + +.has-text-warning-dark { + color: #948200 !important; +} + +a.has-text-warning-dark:hover, a.has-text-warning-dark:focus { + color: #c7af00 !important; +} + +.has-background-warning-dark { + background-color: #948200 !important; +} + +.has-text-danger { + color: #F45F4B !important; +} + +a.has-text-danger:hover, a.has-text-danger:focus { + color: #f1341b !important; +} + +.has-background-danger { + background-color: #F45F4B !important; +} + +.has-text-danger-light { + color: #feeeec !important; +} + +a.has-text-danger-light:hover, a.has-text-danger-light:focus { + color: #fbc3bc !important; +} + +.has-background-danger-light { + background-color: #feeeec !important; +} + +.has-text-danger-dark { + color: #c0210c !important; +} + +a.has-text-danger-dark:hover, a.has-text-danger-dark:focus { + color: #f0290f !important; +} + +.has-background-danger-dark { + background-color: #c0210c !important; +} + +.has-text-black-bis { + color: #121212 !important; +} + +.has-background-black-bis { + background-color: #121212 !important; +} + +.has-text-black-ter { + color: #242424 !important; +} + +.has-background-black-ter { + background-color: #242424 !important; +} + +.has-text-grey-darker { + color: #363636 !important; +} + +.has-background-grey-darker { + background-color: #363636 !important; +} + +.has-text-grey-dark { + color: #4a4a4a !important; +} + +.has-background-grey-dark { + background-color: #4a4a4a !important; +} + +.has-text-grey { + color: #7a7a7a !important; +} + +.has-background-grey { + background-color: #7a7a7a !important; +} + +.has-text-grey-light { + color: #b5b5b5 !important; +} + +.has-background-grey-light { + background-color: #b5b5b5 !important; +} + +.has-text-grey-lighter { + color: #dbdbdb !important; +} + +.has-background-grey-lighter { + background-color: #dbdbdb !important; +} + +.has-text-white-ter { + color: whitesmoke !important; +} + +.has-background-white-ter { + background-color: whitesmoke !important; +} + +.has-text-white-bis { + color: #fafafa !important; +} + +.has-background-white-bis { + background-color: #fafafa !important; +} + +.is-flex-direction-row { + flex-direction: row !important; +} + +.is-flex-direction-row-reverse { + flex-direction: row-reverse !important; +} + +.is-flex-direction-column { + flex-direction: column !important; +} + +.is-flex-direction-column-reverse { + flex-direction: column-reverse !important; +} + +.is-flex-wrap-nowrap { + flex-wrap: nowrap !important; +} + +.is-flex-wrap-wrap { + flex-wrap: wrap !important; +} + +.is-flex-wrap-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.is-justify-content-flex-start { + justify-content: flex-start !important; +} + +.is-justify-content-flex-end { + justify-content: flex-end !important; +} + +.is-justify-content-center { + justify-content: center !important; +} + +.is-justify-content-space-between { + justify-content: space-between !important; +} + +.is-justify-content-space-around { + justify-content: space-around !important; +} + +.is-justify-content-space-evenly { + justify-content: space-evenly !important; +} + +.is-justify-content-start { + justify-content: start !important; +} + +.is-justify-content-end { + justify-content: end !important; +} + +.is-justify-content-left { + justify-content: left !important; +} + +.is-justify-content-right { + justify-content: right !important; +} + +.is-align-content-flex-start { + align-content: flex-start !important; +} + +.is-align-content-flex-end { + align-content: flex-end !important; +} + +.is-align-content-center { + align-content: center !important; +} + +.is-align-content-space-between { + align-content: space-between !important; +} + +.is-align-content-space-around { + align-content: space-around !important; +} + +.is-align-content-space-evenly { + align-content: space-evenly !important; +} + +.is-align-content-stretch { + align-content: stretch !important; +} + +.is-align-content-start { + align-content: start !important; +} + +.is-align-content-end { + align-content: end !important; +} + +.is-align-content-baseline { + align-content: baseline !important; +} + +.is-align-items-stretch { + align-items: stretch !important; +} + +.is-align-items-flex-start { + align-items: flex-start !important; +} + +.is-align-items-flex-end { + align-items: flex-end !important; +} + +.is-align-items-center { + align-items: center !important; +} + +.is-align-items-baseline { + align-items: baseline !important; +} + +.is-align-items-start { + align-items: start !important; +} + +.is-align-items-end { + align-items: end !important; +} + +.is-align-items-self-start { + align-items: self-start !important; +} + +.is-align-items-self-end { + align-items: self-end !important; +} + +.is-align-self-auto { + align-self: auto !important; +} + +.is-align-self-flex-start { + align-self: flex-start !important; +} + +.is-align-self-flex-end { + align-self: flex-end !important; +} + +.is-align-self-center { + align-self: center !important; +} + +.is-align-self-baseline { + align-self: baseline !important; +} + +.is-align-self-stretch { + align-self: stretch !important; +} + +.is-flex-grow-0 { + flex-grow: 0 !important; +} + +.is-flex-grow-1 { + flex-grow: 1 !important; +} + +.is-flex-grow-2 { + flex-grow: 2 !important; +} + +.is-flex-grow-3 { + flex-grow: 3 !important; +} + +.is-flex-grow-4 { + flex-grow: 4 !important; +} + +.is-flex-grow-5 { + flex-grow: 5 !important; +} + +.is-flex-shrink-0 { + flex-shrink: 0 !important; +} + +.is-flex-shrink-1 { + flex-shrink: 1 !important; +} + +.is-flex-shrink-2 { + flex-shrink: 2 !important; +} + +.is-flex-shrink-3 { + flex-shrink: 3 !important; +} + +.is-flex-shrink-4 { + flex-shrink: 4 !important; +} + +.is-flex-shrink-5 { + flex-shrink: 5 !important; +} + +.is-clearfix::after { + clear: both; + content: " "; + display: table; +} + +.is-pulled-left { + float: left !important; +} + +.is-pulled-right { + float: right !important; +} + +.is-radiusless { + border-radius: 0 !important; +} + +.is-shadowless { + box-shadow: none !important; +} + +.is-clickable { + cursor: pointer !important; + pointer-events: all !important; +} + +.is-clipped { + overflow: hidden !important; +} + +.is-relative { + position: relative !important; +} + +.is-marginless { + margin: 0 !important; +} + +.is-paddingless { + padding: 0 !important; +} + +.m-0 { + margin: 0 !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mr-0 { + margin-right: 0 !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.ml-0 { + margin-left: 0 !important; +} + +.mx-0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mr-1 { + margin-right: 0.25rem !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1 { + margin-left: 0.25rem !important; +} + +.mx-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mr-2 { + margin-right: 0.5rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2 { + margin-left: 0.5rem !important; +} + +.mx-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.m-3 { + margin: 0.75rem !important; +} + +.mt-3 { + margin-top: 0.75rem !important; +} + +.mr-3 { + margin-right: 0.75rem !important; +} + +.mb-3 { + margin-bottom: 0.75rem !important; +} + +.ml-3 { + margin-left: 0.75rem !important; +} + +.mx-3 { + margin-left: 0.75rem !important; + margin-right: 0.75rem !important; +} + +.my-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; +} + +.m-4 { + margin: 1rem !important; +} + +.mt-4 { + margin-top: 1rem !important; +} + +.mr-4 { + margin-right: 1rem !important; +} + +.mb-4 { + margin-bottom: 1rem !important; +} + +.ml-4 { + margin-left: 1rem !important; +} + +.mx-4 { + margin-left: 1rem !important; + margin-right: 1rem !important; +} + +.my-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.m-5 { + margin: 1.5rem !important; +} + +.mt-5 { + margin-top: 1.5rem !important; +} + +.mr-5 { + margin-right: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 1.5rem !important; +} + +.ml-5 { + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; +} + +.my-5 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.m-6 { + margin: 3rem !important; +} + +.mt-6 { + margin-top: 3rem !important; +} + +.mr-6 { + margin-right: 3rem !important; +} + +.mb-6 { + margin-bottom: 3rem !important; +} + +.ml-6 { + margin-left: 3rem !important; +} + +.mx-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; +} + +.my-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pr-0 { + padding-right: 0 !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pl-0 { + padding-left: 0 !important; +} + +.px-0 { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pr-1 { + padding-right: 0.25rem !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1 { + padding-left: 0.25rem !important; +} + +.px-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pr-2 { + padding-right: 0.5rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2 { + padding-left: 0.5rem !important; +} + +.px-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.p-3 { + padding: 0.75rem !important; +} + +.pt-3 { + padding-top: 0.75rem !important; +} + +.pr-3 { + padding-right: 0.75rem !important; +} + +.pb-3 { + padding-bottom: 0.75rem !important; +} + +.pl-3 { + padding-left: 0.75rem !important; +} + +.px-3 { + padding-left: 0.75rem !important; + padding-right: 0.75rem !important; +} + +.py-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; +} + +.p-4 { + padding: 1rem !important; +} + +.pt-4 { + padding-top: 1rem !important; +} + +.pr-4 { + padding-right: 1rem !important; +} + +.pb-4 { + padding-bottom: 1rem !important; +} + +.pl-4 { + padding-left: 1rem !important; +} + +.px-4 { + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.py-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.p-5 { + padding: 1.5rem !important; +} + +.pt-5 { + padding-top: 1.5rem !important; +} + +.pr-5 { + padding-right: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 1.5rem !important; +} + +.pl-5 { + padding-left: 1.5rem !important; +} + +.px-5 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; +} + +.py-5 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.p-6 { + padding: 3rem !important; +} + +.pt-6 { + padding-top: 3rem !important; +} + +.pr-6 { + padding-right: 3rem !important; +} + +.pb-6 { + padding-bottom: 3rem !important; +} + +.pl-6 { + padding-left: 3rem !important; +} + +.px-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; +} + +.py-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.is-size-1 { + font-size: 3rem !important; +} + +.is-size-2 { + font-size: 2.5rem !important; +} + +.is-size-3 { + font-size: 2rem !important; +} + +.is-size-4 { + font-size: 1.5rem !important; +} + +.is-size-5 { + font-size: 1.25rem !important; +} + +.is-size-6 { + font-size: 1rem !important; +} + +.is-size-7 { + font-size: 0.75rem !important; +} + +@media screen and (max-width: 768px) { + .is-size-1-mobile { + font-size: 3rem !important; + } + .is-size-2-mobile { + font-size: 2.5rem !important; + } + .is-size-3-mobile { + font-size: 2rem !important; + } + .is-size-4-mobile { + font-size: 1.5rem !important; + } + .is-size-5-mobile { + font-size: 1.25rem !important; + } + .is-size-6-mobile { + font-size: 1rem !important; + } + .is-size-7-mobile { + font-size: 0.75rem !important; + } +} + +@media screen and (min-width: 769px), print { + .is-size-1-tablet { + font-size: 3rem !important; + } + .is-size-2-tablet { + font-size: 2.5rem !important; + } + .is-size-3-tablet { + font-size: 2rem !important; + } + .is-size-4-tablet { + font-size: 1.5rem !important; + } + .is-size-5-tablet { + font-size: 1.25rem !important; + } + .is-size-6-tablet { + font-size: 1rem !important; + } + .is-size-7-tablet { + font-size: 0.75rem !important; + } +} + +@media screen and (max-width: 1023px) { + .is-size-1-touch { + font-size: 3rem !important; + } + .is-size-2-touch { + font-size: 2.5rem !important; + } + .is-size-3-touch { + font-size: 2rem !important; + } + .is-size-4-touch { + font-size: 1.5rem !important; + } + .is-size-5-touch { + font-size: 1.25rem !important; + } + .is-size-6-touch { + font-size: 1rem !important; + } + .is-size-7-touch { + font-size: 0.75rem !important; + } +} + +@media screen and (min-width: 1024px) { + .is-size-1-desktop { + font-size: 3rem !important; + } + .is-size-2-desktop { + font-size: 2.5rem !important; + } + .is-size-3-desktop { + font-size: 2rem !important; + } + .is-size-4-desktop { + font-size: 1.5rem !important; + } + .is-size-5-desktop { + font-size: 1.25rem !important; + } + .is-size-6-desktop { + font-size: 1rem !important; + } + .is-size-7-desktop { + font-size: 0.75rem !important; + } +} + +@media screen and (min-width: 1216px) { + .is-size-1-widescreen { + font-size: 3rem !important; + } + .is-size-2-widescreen { + font-size: 2.5rem !important; + } + .is-size-3-widescreen { + font-size: 2rem !important; + } + .is-size-4-widescreen { + font-size: 1.5rem !important; + } + .is-size-5-widescreen { + font-size: 1.25rem !important; + } + .is-size-6-widescreen { + font-size: 1rem !important; + } + .is-size-7-widescreen { + font-size: 0.75rem !important; + } +} + +@media screen and (min-width: 1408px) { + .is-size-1-fullhd { + font-size: 3rem !important; + } + .is-size-2-fullhd { + font-size: 2.5rem !important; + } + .is-size-3-fullhd { + font-size: 2rem !important; + } + .is-size-4-fullhd { + font-size: 1.5rem !important; + } + .is-size-5-fullhd { + font-size: 1.25rem !important; + } + .is-size-6-fullhd { + font-size: 1rem !important; + } + .is-size-7-fullhd { + font-size: 0.75rem !important; + } +} + +.has-text-centered { + text-align: center !important; +} + +.has-text-justified { + text-align: justify !important; +} + +.has-text-left { + text-align: left !important; +} + +.has-text-right { + text-align: right !important; +} + +@media screen and (max-width: 768px) { + .has-text-centered-mobile { + text-align: center !important; + } +} + +@media screen and (min-width: 769px), print { + .has-text-centered-tablet { + text-align: center !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .has-text-centered-tablet-only { + text-align: center !important; + } +} + +@media screen and (max-width: 1023px) { + .has-text-centered-touch { + text-align: center !important; + } +} + +@media screen and (min-width: 1024px) { + .has-text-centered-desktop { + text-align: center !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .has-text-centered-desktop-only { + text-align: center !important; + } +} + +@media screen and (min-width: 1216px) { + .has-text-centered-widescreen { + text-align: center !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-centered-widescreen-only { + text-align: center !important; + } +} + +@media screen and (min-width: 1408px) { + .has-text-centered-fullhd { + text-align: center !important; + } +} + +@media screen and (max-width: 768px) { + .has-text-justified-mobile { + text-align: justify !important; + } +} + +@media screen and (min-width: 769px), print { + .has-text-justified-tablet { + text-align: justify !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .has-text-justified-tablet-only { + text-align: justify !important; + } +} + +@media screen and (max-width: 1023px) { + .has-text-justified-touch { + text-align: justify !important; + } +} + +@media screen and (min-width: 1024px) { + .has-text-justified-desktop { + text-align: justify !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .has-text-justified-desktop-only { + text-align: justify !important; + } +} + +@media screen and (min-width: 1216px) { + .has-text-justified-widescreen { + text-align: justify !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-justified-widescreen-only { + text-align: justify !important; + } +} + +@media screen and (min-width: 1408px) { + .has-text-justified-fullhd { + text-align: justify !important; + } +} + +@media screen and (max-width: 768px) { + .has-text-left-mobile { + text-align: left !important; + } +} + +@media screen and (min-width: 769px), print { + .has-text-left-tablet { + text-align: left !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .has-text-left-tablet-only { + text-align: left !important; + } +} + +@media screen and (max-width: 1023px) { + .has-text-left-touch { + text-align: left !important; + } +} + +@media screen and (min-width: 1024px) { + .has-text-left-desktop { + text-align: left !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .has-text-left-desktop-only { + text-align: left !important; + } +} + +@media screen and (min-width: 1216px) { + .has-text-left-widescreen { + text-align: left !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-left-widescreen-only { + text-align: left !important; + } +} + +@media screen and (min-width: 1408px) { + .has-text-left-fullhd { + text-align: left !important; + } +} + +@media screen and (max-width: 768px) { + .has-text-right-mobile { + text-align: right !important; + } +} + +@media screen and (min-width: 769px), print { + .has-text-right-tablet { + text-align: right !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .has-text-right-tablet-only { + text-align: right !important; + } +} + +@media screen and (max-width: 1023px) { + .has-text-right-touch { + text-align: right !important; + } +} + +@media screen and (min-width: 1024px) { + .has-text-right-desktop { + text-align: right !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .has-text-right-desktop-only { + text-align: right !important; + } +} + +@media screen and (min-width: 1216px) { + .has-text-right-widescreen { + text-align: right !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-right-widescreen-only { + text-align: right !important; + } +} + +@media screen and (min-width: 1408px) { + .has-text-right-fullhd { + text-align: right !important; + } +} + +.is-capitalized { + text-transform: capitalize !important; +} + +.is-lowercase { + text-transform: lowercase !important; +} + +.is-uppercase { + text-transform: uppercase !important; +} + +.is-italic { + font-style: italic !important; +} + +.has-text-weight-light { + font-weight: 300 !important; +} + +.has-text-weight-normal { + font-weight: 400 !important; +} + +.has-text-weight-medium { + font-weight: 500 !important; +} + +.has-text-weight-semibold { + font-weight: 600 !important; +} + +.has-text-weight-bold { + font-weight: 700 !important; +} + +.is-family-primary { + font-family: "PT Sans", Helvetica, Arial, "sans-serif" !important; +} + +.is-family-secondary { + font-family: "PT Sans", Helvetica, Arial, "sans-serif" !important; +} + +.is-family-sans-serif { + font-family: "PT Sans", Helvetica, Arial, "sans-serif" !important; +} + +.is-family-monospace { + font-family: Menlo, Monaco, "Courier New", monospace !important; +} + +.is-family-code { + font-family: Menlo, Monaco, "Courier New", monospace !important; +} + +.is-block { + display: block !important; +} + +@media screen and (max-width: 768px) { + .is-block-mobile { + display: block !important; + } +} + +@media screen and (min-width: 769px), print { + .is-block-tablet { + display: block !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-block-tablet-only { + display: block !important; + } +} + +@media screen and (max-width: 1023px) { + .is-block-touch { + display: block !important; + } +} + +@media screen and (min-width: 1024px) { + .is-block-desktop { + display: block !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-block-desktop-only { + display: block !important; + } +} + +@media screen and (min-width: 1216px) { + .is-block-widescreen { + display: block !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-block-widescreen-only { + display: block !important; + } +} + +@media screen and (min-width: 1408px) { + .is-block-fullhd { + display: block !important; + } +} + +.is-flex { + display: flex !important; +} + +@media screen and (max-width: 768px) { + .is-flex-mobile { + display: flex !important; + } +} + +@media screen and (min-width: 769px), print { + .is-flex-tablet { + display: flex !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-flex-tablet-only { + display: flex !important; + } +} + +@media screen and (max-width: 1023px) { + .is-flex-touch { + display: flex !important; + } +} + +@media screen and (min-width: 1024px) { + .is-flex-desktop { + display: flex !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-flex-desktop-only { + display: flex !important; + } +} + +@media screen and (min-width: 1216px) { + .is-flex-widescreen { + display: flex !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-flex-widescreen-only { + display: flex !important; + } +} + +@media screen and (min-width: 1408px) { + .is-flex-fullhd { + display: flex !important; + } +} + +.is-inline { + display: inline !important; +} + +@media screen and (max-width: 768px) { + .is-inline-mobile { + display: inline !important; + } +} + +@media screen and (min-width: 769px), print { + .is-inline-tablet { + display: inline !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-inline-tablet-only { + display: inline !important; + } +} + +@media screen and (max-width: 1023px) { + .is-inline-touch { + display: inline !important; + } +} + +@media screen and (min-width: 1024px) { + .is-inline-desktop { + display: inline !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-inline-desktop-only { + display: inline !important; + } +} + +@media screen and (min-width: 1216px) { + .is-inline-widescreen { + display: inline !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-widescreen-only { + display: inline !important; + } +} + +@media screen and (min-width: 1408px) { + .is-inline-fullhd { + display: inline !important; + } +} + +.is-inline-block { + display: inline-block !important; +} + +@media screen and (max-width: 768px) { + .is-inline-block-mobile { + display: inline-block !important; + } +} + +@media screen and (min-width: 769px), print { + .is-inline-block-tablet { + display: inline-block !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-inline-block-tablet-only { + display: inline-block !important; + } +} + +@media screen and (max-width: 1023px) { + .is-inline-block-touch { + display: inline-block !important; + } +} + +@media screen and (min-width: 1024px) { + .is-inline-block-desktop { + display: inline-block !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-inline-block-desktop-only { + display: inline-block !important; + } +} + +@media screen and (min-width: 1216px) { + .is-inline-block-widescreen { + display: inline-block !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-block-widescreen-only { + display: inline-block !important; + } +} + +@media screen and (min-width: 1408px) { + .is-inline-block-fullhd { + display: inline-block !important; + } +} + +.is-inline-flex { + display: inline-flex !important; +} + +@media screen and (max-width: 768px) { + .is-inline-flex-mobile { + display: inline-flex !important; + } +} + +@media screen and (min-width: 769px), print { + .is-inline-flex-tablet { + display: inline-flex !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-inline-flex-tablet-only { + display: inline-flex !important; + } +} + +@media screen and (max-width: 1023px) { + .is-inline-flex-touch { + display: inline-flex !important; + } +} + +@media screen and (min-width: 1024px) { + .is-inline-flex-desktop { + display: inline-flex !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-inline-flex-desktop-only { + display: inline-flex !important; + } +} + +@media screen and (min-width: 1216px) { + .is-inline-flex-widescreen { + display: inline-flex !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-flex-widescreen-only { + display: inline-flex !important; + } +} + +@media screen and (min-width: 1408px) { + .is-inline-flex-fullhd { + display: inline-flex !important; + } +} + +.is-hidden { + display: none !important; +} + +.is-sr-only { + border: none !important; + clip: rect(0, 0, 0, 0) !important; + height: 0.01em !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + white-space: nowrap !important; + width: 0.01em !important; +} + +@media screen and (max-width: 768px) { + .is-hidden-mobile { + display: none !important; + } +} + +@media screen and (min-width: 769px), print { + .is-hidden-tablet { + display: none !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-hidden-tablet-only { + display: none !important; + } +} + +@media screen and (max-width: 1023px) { + .is-hidden-touch { + display: none !important; + } +} + +@media screen and (min-width: 1024px) { + .is-hidden-desktop { + display: none !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-hidden-desktop-only { + display: none !important; + } +} + +@media screen and (min-width: 1216px) { + .is-hidden-widescreen { + display: none !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-hidden-widescreen-only { + display: none !important; + } +} + +@media screen and (min-width: 1408px) { + .is-hidden-fullhd { + display: none !important; + } +} + +.is-invisible { + visibility: hidden !important; +} + +@media screen and (max-width: 768px) { + .is-invisible-mobile { + visibility: hidden !important; + } +} + +@media screen and (min-width: 769px), print { + .is-invisible-tablet { + visibility: hidden !important; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .is-invisible-tablet-only { + visibility: hidden !important; + } +} + +@media screen and (max-width: 1023px) { + .is-invisible-touch { + visibility: hidden !important; + } +} + +@media screen and (min-width: 1024px) { + .is-invisible-desktop { + visibility: hidden !important; + } +} + +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .is-invisible-desktop-only { + visibility: hidden !important; + } +} + +@media screen and (min-width: 1216px) { + .is-invisible-widescreen { + visibility: hidden !important; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-invisible-widescreen-only { + visibility: hidden !important; + } +} + +@media screen and (min-width: 1408px) { + .is-invisible-fullhd { + visibility: hidden !important; + } +} + +.hero { + align-items: stretch; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.hero .navbar { + background: none; +} + +.hero .tabs ul { + border-bottom: none; +} + +.hero.is-white { + background-color: white; + color: #0a0a0a; +} + +.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-white strong { + color: inherit; +} + +.hero.is-white .title { + color: #0a0a0a; +} + +.hero.is-white .subtitle { + color: rgba(10, 10, 10, 0.9); +} + +.hero.is-white .subtitle a:not(.button), +.hero.is-white .subtitle strong { + color: #0a0a0a; +} + +@media screen and (max-width: 1023px) { + .hero.is-white .navbar-menu { + background-color: white; + } +} + +.hero.is-white .navbar-item, +.hero.is-white .navbar-link { + color: rgba(10, 10, 10, 0.7); +} + +.hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active, +.hero.is-white .navbar-link:hover, +.hero.is-white .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; +} + +.hero.is-white .tabs a { + color: #0a0a0a; + opacity: 0.9; +} + +.hero.is-white .tabs a:hover { + opacity: 1; +} + +.hero.is-white .tabs li.is-active a { + opacity: 1; +} + +.hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a { + color: #0a0a0a; +} + +.hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; +} + +.hero.is-white.is-bold { + background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-white.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%); + } +} + +.hero.is-black { + background-color: #0a0a0a; + color: white; +} + +.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-black strong { + color: inherit; +} + +.hero.is-black .title { + color: white; +} + +.hero.is-black .subtitle { + color: rgba(255, 255, 255, 0.9); +} + +.hero.is-black .subtitle a:not(.button), +.hero.is-black .subtitle strong { + color: white; +} + +@media screen and (max-width: 1023px) { + .hero.is-black .navbar-menu { + background-color: #0a0a0a; + } +} + +.hero.is-black .navbar-item, +.hero.is-black .navbar-link { + color: rgba(255, 255, 255, 0.7); +} + +.hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active, +.hero.is-black .navbar-link:hover, +.hero.is-black .navbar-link.is-active { + background-color: black; + color: white; +} + +.hero.is-black .tabs a { + color: white; + opacity: 0.9; +} + +.hero.is-black .tabs a:hover { + opacity: 1; +} + +.hero.is-black .tabs li.is-active a { + opacity: 1; +} + +.hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a { + color: white; +} + +.hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover { + background-color: white; + border-color: white; + color: #0a0a0a; +} + +.hero.is-black.is-bold { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-black.is-bold .navbar-menu { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); + } +} + +.hero.is-light { + background-color: whitesmoke; + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-light strong { + color: inherit; +} + +.hero.is-light .title { + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-light .subtitle { + color: rgba(0, 0, 0, 0.9); +} + +.hero.is-light .subtitle a:not(.button), +.hero.is-light .subtitle strong { + color: rgba(0, 0, 0, 0.7); +} + +@media screen and (max-width: 1023px) { + .hero.is-light .navbar-menu { + background-color: whitesmoke; + } +} + +.hero.is-light .navbar-item, +.hero.is-light .navbar-link { + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active, +.hero.is-light .navbar-link:hover, +.hero.is-light .navbar-link.is-active { + background-color: #e8e8e8; + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-light .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; +} + +.hero.is-light .tabs a:hover { + opacity: 1; +} + +.hero.is-light .tabs li.is-active a { + opacity: 1; +} + +.hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: whitesmoke; +} + +.hero.is-light.is-bold { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-light.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); + } +} + +.hero.is-dark { + background-color: #363636; + color: #fff; +} + +.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-dark strong { + color: inherit; +} + +.hero.is-dark .title { + color: #fff; +} + +.hero.is-dark .subtitle { + color: rgba(255, 255, 255, 0.9); +} + +.hero.is-dark .subtitle a:not(.button), +.hero.is-dark .subtitle strong { + color: #fff; +} + +@media screen and (max-width: 1023px) { + .hero.is-dark .navbar-menu { + background-color: #363636; + } +} + +.hero.is-dark .navbar-item, +.hero.is-dark .navbar-link { + color: rgba(255, 255, 255, 0.7); +} + +.hero.is-dark a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active, +.hero.is-dark .navbar-link:hover, +.hero.is-dark .navbar-link.is-active { + background-color: #292929; + color: #fff; +} + +.hero.is-dark .tabs a { + color: #fff; + opacity: 0.9; +} + +.hero.is-dark .tabs a:hover { + opacity: 1; +} + +.hero.is-dark .tabs li.is-active a { + opacity: 1; +} + +.hero.is-dark .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a { + color: #fff; +} + +.hero.is-dark .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-dark .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #363636; +} + +.hero.is-dark.is-bold { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-dark.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); + } +} + +.hero.is-primary { + background-color: #FF9200; + color: #fff; +} + +.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-primary strong { + color: inherit; +} + +.hero.is-primary .title { + color: #fff; +} + +.hero.is-primary .subtitle { + color: rgba(255, 255, 255, 0.9); +} + +.hero.is-primary .subtitle a:not(.button), +.hero.is-primary .subtitle strong { + color: #fff; +} + +@media screen and (max-width: 1023px) { + .hero.is-primary .navbar-menu { + background-color: #FF9200; + } +} + +.hero.is-primary .navbar-item, +.hero.is-primary .navbar-link { + color: rgba(255, 255, 255, 0.7); +} + +.hero.is-primary a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active, +.hero.is-primary .navbar-link:hover, +.hero.is-primary .navbar-link.is-active { + background-color: #e68300; + color: #fff; +} + +.hero.is-primary .tabs a { + color: #fff; + opacity: 0.9; +} + +.hero.is-primary .tabs a:hover { + opacity: 1; +} + +.hero.is-primary .tabs li.is-active a { + opacity: 1; +} + +.hero.is-primary .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a { + color: #fff; +} + +.hero.is-primary .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-primary .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #FF9200; +} + +.hero.is-primary.is-bold { + background-image: linear-gradient(141deg, #cc5300 0%, #FF9200 71%, #ffc31a 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-primary.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #cc5300 0%, #FF9200 71%, #ffc31a 100%); + } +} + +.hero.is-link { + background-color: #FF9200; + color: #fff; +} + +.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-link strong { + color: inherit; +} + +.hero.is-link .title { + color: #fff; +} + +.hero.is-link .subtitle { + color: rgba(255, 255, 255, 0.9); +} + +.hero.is-link .subtitle a:not(.button), +.hero.is-link .subtitle strong { + color: #fff; +} + +@media screen and (max-width: 1023px) { + .hero.is-link .navbar-menu { + background-color: #FF9200; + } +} + +.hero.is-link .navbar-item, +.hero.is-link .navbar-link { + color: rgba(255, 255, 255, 0.7); +} + +.hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active, +.hero.is-link .navbar-link:hover, +.hero.is-link .navbar-link.is-active { + background-color: #e68300; + color: #fff; +} + +.hero.is-link .tabs a { + color: #fff; + opacity: 0.9; +} + +.hero.is-link .tabs a:hover { + opacity: 1; +} + +.hero.is-link .tabs li.is-active a { + opacity: 1; +} + +.hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a { + color: #fff; +} + +.hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #FF9200; +} + +.hero.is-link.is-bold { + background-image: linear-gradient(141deg, #cc5300 0%, #FF9200 71%, #ffc31a 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-link.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #cc5300 0%, #FF9200 71%, #ffc31a 100%); + } +} + +.hero.is-info { + background-color: #3298dc; + color: #fff; +} + +.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-info strong { + color: inherit; +} + +.hero.is-info .title { + color: #fff; +} + +.hero.is-info .subtitle { + color: rgba(255, 255, 255, 0.9); +} + +.hero.is-info .subtitle a:not(.button), +.hero.is-info .subtitle strong { + color: #fff; +} + +@media screen and (max-width: 1023px) { + .hero.is-info .navbar-menu { + background-color: #3298dc; + } +} + +.hero.is-info .navbar-item, +.hero.is-info .navbar-link { + color: rgba(255, 255, 255, 0.7); +} + +.hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active, +.hero.is-info .navbar-link:hover, +.hero.is-info .navbar-link.is-active { + background-color: #238cd1; + color: #fff; +} + +.hero.is-info .tabs a { + color: #fff; + opacity: 0.9; +} + +.hero.is-info .tabs a:hover { + opacity: 1; +} + +.hero.is-info .tabs li.is-active a { + opacity: 1; +} + +.hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a { + color: #fff; +} + +.hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #3298dc; +} + +.hero.is-info.is-bold { + background-image: linear-gradient(141deg, #159dc6 0%, #3298dc 71%, #4389e5 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-info.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #159dc6 0%, #3298dc 71%, #4389e5 100%); + } +} + +.hero.is-success { + background-color: #01a901; + color: #fff; +} + +.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-success strong { + color: inherit; +} + +.hero.is-success .title { + color: #fff; +} + +.hero.is-success .subtitle { + color: rgba(255, 255, 255, 0.9); +} + +.hero.is-success .subtitle a:not(.button), +.hero.is-success .subtitle strong { + color: #fff; +} + +@media screen and (max-width: 1023px) { + .hero.is-success .navbar-menu { + background-color: #01a901; + } +} + +.hero.is-success .navbar-item, +.hero.is-success .navbar-link { + color: rgba(255, 255, 255, 0.7); +} + +.hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active, +.hero.is-success .navbar-link:hover, +.hero.is-success .navbar-link.is-active { + background-color: #019001; + color: #fff; +} + +.hero.is-success .tabs a { + color: #fff; + opacity: 0.9; +} + +.hero.is-success .tabs a:hover { + opacity: 1; +} + +.hero.is-success .tabs li.is-active a { + opacity: 1; +} + +.hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a { + color: #fff; +} + +.hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #01a901; +} + +.hero.is-success.is-bold { + background-image: linear-gradient(141deg, #147700 0%, #01a901 71%, #00c421 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-success.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #147700 0%, #01a901 71%, #00c421 100%); + } +} + +.hero.is-warning { + background-color: #e7cb00; + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-warning strong { + color: inherit; +} + +.hero.is-warning .title { + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-warning .subtitle { + color: rgba(0, 0, 0, 0.9); +} + +.hero.is-warning .subtitle a:not(.button), +.hero.is-warning .subtitle strong { + color: rgba(0, 0, 0, 0.7); +} + +@media screen and (max-width: 1023px) { + .hero.is-warning .navbar-menu { + background-color: #e7cb00; + } +} + +.hero.is-warning .navbar-item, +.hero.is-warning .navbar-link { + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active, +.hero.is-warning .navbar-link:hover, +.hero.is-warning .navbar-link.is-active { + background-color: #ceb500; + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-warning .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; +} + +.hero.is-warning .tabs a:hover { + opacity: 1; +} + +.hero.is-warning .tabs li.is-active a { + opacity: 1; +} + +.hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); +} + +.hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: #e7cb00; +} + +.hero.is-warning.is-bold { + background-image: linear-gradient(141deg, #b48000 0%, #e7cb00 71%, #f3ff02 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-warning.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #b48000 0%, #e7cb00 71%, #f3ff02 100%); + } +} + +.hero.is-danger { + background-color: #F45F4B; + color: #fff; +} + +.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), +.hero.is-danger strong { + color: inherit; +} + +.hero.is-danger .title { + color: #fff; +} + +.hero.is-danger .subtitle { + color: rgba(255, 255, 255, 0.9); +} + +.hero.is-danger .subtitle a:not(.button), +.hero.is-danger .subtitle strong { + color: #fff; +} + +@media screen and (max-width: 1023px) { + .hero.is-danger .navbar-menu { + background-color: #F45F4B; + } +} + +.hero.is-danger .navbar-item, +.hero.is-danger .navbar-link { + color: rgba(255, 255, 255, 0.7); +} + +.hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active, +.hero.is-danger .navbar-link:hover, +.hero.is-danger .navbar-link.is-active { + background-color: #f34a33; + color: #fff; +} + +.hero.is-danger .tabs a { + color: #fff; + opacity: 0.9; +} + +.hero.is-danger .tabs a:hover { + opacity: 1; +} + +.hero.is-danger .tabs li.is-active a { + opacity: 1; +} + +.hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a { + color: #fff; +} + +.hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); +} + +.hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #F45F4B; +} + +.hero.is-danger.is-bold { + background-image: linear-gradient(141deg, #fd0f1a 0%, #F45F4B 71%, #fa8b5f 100%); +} + +@media screen and (max-width: 768px) { + .hero.is-danger.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #fd0f1a 0%, #F45F4B 71%, #fa8b5f 100%); + } +} + +.hero.is-small .hero-body { + padding: 1.5rem; +} + +@media screen and (min-width: 769px), print { + .hero.is-medium .hero-body { + padding: 9rem 1.5rem; + } +} + +@media screen and (min-width: 769px), print { + .hero.is-large .hero-body { + padding: 18rem 1.5rem; + } +} + +.hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body { + align-items: center; + display: flex; +} + +.hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container { + flex-grow: 1; + flex-shrink: 1; +} + +.hero.is-halfheight { + min-height: 50vh; +} + +.hero.is-fullheight { + min-height: 100vh; +} + +.hero-video { + overflow: hidden; +} + +.hero-video video { + left: 50%; + min-height: 100%; + min-width: 100%; + position: absolute; + top: 50%; + transform: translate3d(-50%, -50%, 0); +} + +.hero-video.is-transparent { + opacity: 0.3; +} + +@media screen and (max-width: 768px) { + .hero-video { + display: none; + } +} + +.hero-buttons { + margin-top: 1.5rem; +} + +@media screen and (max-width: 768px) { + .hero-buttons .button { + display: flex; + } + .hero-buttons .button:not(:last-child) { + margin-bottom: 0.75rem; + } +} + +@media screen and (min-width: 769px), print { + .hero-buttons { + display: flex; + justify-content: center; + } + .hero-buttons .button:not(:last-child) { + margin-right: 1.5rem; + } +} + +.hero-head, +.hero-foot { + flex-grow: 0; + flex-shrink: 0; +} + +.hero-body { + flex-grow: 1; + flex-shrink: 0; + padding: 3rem 1.5rem; +} + +html { + scroll-padding-top: 4.5rem; +} + +h1, h2, .rst-content #index h3, .rst-content .toctree-wrapper .caption, h3, h4, h5, h6 { + overflow-wrap: break-word; +} + +.viewcode-back { + float: right; + color: #FF9200; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple), html.writer-html4 .rst-content dl:not(.docutils) { + padding-bottom: 0.5em; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property, html.writer-html4 .rst-content dl:not(.docutils) .property { + display: inherit; + padding-right: 0px; + max-width: 100%; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt, html.writer-html4 .rst-content dl:not(.docutils) > dt { + border-top: 3px solid #ca6500; + color: #343131; + display: inherit; + line-height: 1.4; + font-family: Menlo, Monaco, "Courier New", monospace; + font-size: 0.9rem; + background-color: #FFEBD0; + border-radius: 4px; + overflow-wrap: break-word; + position: relative; + padding-left: 0.45rem; + padding-right: 5.625rem; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt:target::before, html.writer-html4 .rst-content dl:not(.docutils) > dt:target::before { + background-color: #FFFFFF; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt > .property, html.writer-html4 .rst-content dl:not(.docutils) > dt > .property { + display: unset; + padding-right: 0px; + max-width: 100%; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt .viewcode-link, html.writer-html4 .rst-content dl:not(.docutils) > dt .viewcode-link { + position: absolute; + top: 0.45rem; + right: 1.8rem; + color: #808080; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt .viewcode-link .pre:hover, html.writer-html4 .rst-content dl:not(.docutils) > dt .viewcode-link .pre:hover { + color: #FF9200; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt .headerlink, html.writer-html4 .rst-content dl:not(.docutils) > dt .headerlink { + position: absolute; + top: 0.45rem; + right: 0.45rem; + color: #FF9200; + opacity: 1; + margin-top: -0.1rem; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd, html.writer-html4 .rst-content dl:not(.docutils) > dd { + margin: 1em; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd:empty, html.writer-html4 .rst-content dl:not(.docutils) > dd:empty { + padding-bottom: 0 !important; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dt, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dt { + font-weight: bold; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > ul.simple, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > ul.simple { + margin-left: 0; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > dl > dt > strong, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > dl > dt > strong, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > ul.simple:first-child > li > p:first-child > strong, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > ul.simple:first-child > li > p:first-child > strong, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > p:first-child > strong, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > p:first-child > strong { + font-family: Menlo, Monaco, "Courier New", monospace; + color: #343131; + font-weight: normal; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > dl > dt > .classifier, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > dl > dt > .classifier, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > ul.simple:first-child > li > p:first-child > .classifier, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > ul.simple:first-child > li > p:first-child > .classifier, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > p:first-child > .classifier, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > p:first-child > .classifier { + font-family: Menlo, Monaco, "Courier New", monospace; + color: #4a4a4a; + overflow-wrap: break-word; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > dl > dt > a.reference > em, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > dl > dt > a.reference > em, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > p:first-child > a.reference > em, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > p:first-child > a.reference > em { + font-family: Menlo, Monaco, "Courier New", monospace; + font-style: normal; +} + +html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dd > .field-list > dd > dl > dt > strong::after, html.writer-html4 .rst-content dl:not(.docutils) > dd > .field-list > dd > dl > dt > strong::after { + content: ": "; +} + +.rst-content { + font-size: 1rem; + line-height: 1.6; + color-adjust: exact; +} + +@media print { + .rst-content { + font-size: 0.85rem; + } +} + +.rst-content ul, +.rst-content ol, +.rst-content dl, +.rst-content figure, +.rst-content p, +.rst-content pre { + margin: 1em 0; +} + +.rst-content h1 { + margin: 0 0 1.25em; + color: #121212; + font-weight: 700; + line-height: 1.3; + letter-spacing: -0.01em; + font-size: 175%; +} + +.rst-content h2, .rst-content #index h3, .rst-content .toctree-wrapper .caption { + margin: 1.6em 0 0.64em; + font-weight: 600; + font-size: 1.5625em; + line-height: 1.4; + letter-spacing: -0.01em; +} + +.rst-content h3 { + margin: 1.6em 0 0.8em; + font-weight: 500; + font-size: 1.25em; + line-height: 1.5; + letter-spacing: -0.01em; +} + +.rst-content h2 + h3, .rst-content #index h3 + h3, .rst-content .toctree-wrapper .caption + h3 { + margin-top: 0.8em; +} + +.rst-content h4 { + margin: 1em 0; + font-weight: 700; + letter-spacing: -0.01em; +} + +.rst-content h5, +.rst-content h6 { + margin: 1.25em 0; + color: #121212; + font-weight: 700; + font-size: 0.8em; + letter-spacing: -0.01em; +} + +.rst-content h5 { + text-transform: uppercase; +} + +.rst-content hr { + display: flow-root; + margin: 1.5em 0; + border-bottom: 0.0625rem solid #0a0a0a; +} + +.rst-content a { + color: #FF9200; + overflow-wrap: break-word; +} + +.rst-content a, .rst-content a::before { + transition: color 125ms; +} + +.rst-content a:focus { + color: #ca6500; +} + +.rst-content a:hover { + color: #ca6500; +} + +.rst-content a.focus-visible { + outline-color: #ca6500; + outline-offset: 0.25rem; +} + +.rst-content code, +.rst-content pre, +.rst-content kbd { + color: #0a0a0a; + direction: ltr; +} + +@media print { + .rst-content code, +.rst-content pre, +.rst-content kbd { + white-space: pre-wrap; + } +} + +.rst-content code { + padding: 0 0.29412em; + font-size: 0.85em; + overflow-wrap: break-word; + background-color: #f8f8f8; + border-radius: 0.125rem; + box-decoration-break: clone; +} + +.rst-content code:not(.focus-visible) { + outline: none; + -webkit-tap-highlight-color: transparent; +} + +.rst-content h1 code, +.rst-content h2 code, +.rst-content #index h3 code, +.rst-content .toctree-wrapper .caption code, +.rst-content h3 code, +.rst-content h4 code, +.rst-content h5 code, +.rst-content h6 code { + background-color: transparent; + box-shadow: none; +} + +.rst-content a code { + color: currentColor; +} + +.rst-content pre { + position: relative; + display: flow-root; + line-height: 1.4; +} + +.rst-content pre > code { + display: block; + margin: 0; + padding: 0.77206em 1.17647em; + overflow: auto; + word-break: normal; + box-shadow: none; + box-decoration-break: slice; + touch-action: auto; + scrollbar-width: thin; + scrollbar-color: #242424 transparent; +} + +.rst-content pre > code:hover { + scrollbar-color: #ca6500 transparent; +} + +.rst-content pre > code::-webkit-scrollbar { + width: 0.25rem; + height: 0.25rem; +} + +.rst-content pre > code::-webkit-scrollbar-thumb { + background-color: #242424; +} + +.rst-content pre > code::-webkit-scrollbar-thumb:hover { + background-color: #ca6500; +} + +@media screen and (max-width: 768px) { + .rst-content > pre code { + border-radius: 0; + } +} + +.rst-content kbd { + display: inline-block; + padding: 0 0.66667em; + color: #0a0a0a; + font-size: 0.75em; + vertical-align: text-top; + overflow-wrap: break-word; + background-color: whitesmoke; + border-radius: 0.125rem; + box-shadow: 0 0.125rem 0 0.0625rem #dbdbdb, 0 0.125rem 0 #dbdbdb, 0 -0.125rem 0.25rem #ededed inset; +} + +.rst-content mark { + color: inherit; + overflow-wrap: break-word; + background-color: #e7cb00; + box-decoration-break: clone; +} + +.rst-content abbr { + text-decoration: none; + border-bottom: 0.0625rem dotted #121212; + cursor: help; +} + +@media (hover: none) { + .rst-content abbr { + position: relative; + } + .rst-content abbr[title]:focus::after, .rst-content abbr[title]:hover::after { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + position: absolute; + left: 0; + display: inline-block; + width: auto; + min-width: max-content; + max-width: 80%; + margin-top: 2em; + padding: 0.25rem 0.375rem; + color: #FFFFFF; + font-size: 0.875rem; + background-color: #0a0a0a; + border-radius: 0.125rem; + content: attr(title); + } +} + +.rst-content small { + opacity: 0.75; +} + +.rst-content sup, +.rst-content sub { + margin-left: 0.07812em; +} + +[dir="rtl"] .rst-content sup, [dir="rtl"] .rst-content sub { + margin-right: 0.07812em; + margin-left: initial; +} + +.rst-content blockquote { + display: flow-root; + padding-left: 0.75rem; + color: #4a4a4a; +} + +[dir="rtl"] .rst-content blockquote { + padding-right: 0.75rem; + padding-left: initial; + border-right: 0.25rem solid #7a7a7a; + border-left: initial; +} + +.rst-content li > blockquote { + border-left: none; +} + +[dir="rtl"] .rst-content li > blockquote { + border-right: none; +} + +.rst-content blockquote +ul { + list-style-type: disc; +} + +.rst-content ul, +.rst-content ol { + display: flow-root; + margin-left: 0.625em; + padding: 0; +} + +[dir="rtl"] .rst-content ul, [dir="rtl"] .rst-content ol { + margin-right: 0.625em; + margin-left: initial; +} + +.rst-content ul ol, +.rst-content ol ol { + list-style-type: lower-alpha; +} + +.rst-content ul ol ol, +.rst-content ol ol ol { + list-style-type: lower-roman; +} + +.rst-content ul li, +.rst-content ol li { + margin-bottom: 0.5em; + margin-left: 1.25em; +} + +[dir="rtl"] .rst-content ul li, [dir="rtl"] .rst-content ol li { + margin-right: 1.25em; + margin-left: initial; +} + +.rst-content ul li p, +.rst-content ul li blockquote, +.rst-content ol li p, +.rst-content ol li blockquote { + margin: 0.5em 0; +} + +.rst-content ul li:last-child, +.rst-content ol li:last-child { + margin-bottom: 0; +} + +.rst-content ul li ul, +.rst-content ul li ol, +.rst-content ol li ul, +.rst-content ol li ol { + margin: 0.5em 0 0.5em 0.625em; +} + +[dir="rtl"] .rst-content ul li ul, [dir="rtl"] .rst-content ul li ol, [dir="rtl"] .rst-content ol li ul, [dir="rtl"] .rst-content ol li ol { + margin-right: 0.625em; + margin-left: initial; +} + +.rst-content dd { + margin: 1em 0 1.5em 1.875em; +} + +@media screen and (max-width: 769px) { + .rst-content dd { + margin-left: 0.625em; + } +} + +[dir="rtl"] .rst-content dd { + margin-right: 1.875em; + margin-left: initial; +} + +@media screen and (max-width: 769px) { + [dir="rtl"] .rst-content dd { + margin-right: 0.625em; + } +} + +.rst-content dl:not([class]) dt, .rst-content dl.simple dt { + font-weight: 200; +} + +.rst-content img, +.rst-content svg { + max-width: 100%; + height: auto; +} + +.rst-content img[align="left"], +.rst-content svg[align="left"] { + margin: 1em; + margin-left: 0; +} + +.rst-content img[align="right"], +.rst-content svg[align="right"] { + margin: 1em; + margin-right: 0; +} + +.rst-content img[align]:only-child, +.rst-content svg[align]:only-child { + margin-top: 0; +} + +.rst-content figure { + display: flow-root; + width: fit-content; + max-width: 100%; + margin: 0 auto; + text-align: center; +} + +.rst-content figure img { + display: block; + margin: 0 auto; +} + +.rst-content figcaption { + margin: 1em auto 2em; + text-align: justify; + font-size: 90%; + hyphens: auto; + width: 80%; +} + +.rst-content iframe { + max-width: 100%; +} + +.rst-content .align-left { + text-align: left; +} + +.rst-content .align-right { + text-align: right; +} + +.rst-content .align-center { + clear: both; + text-align: center; +} + +.rst-content .align-top { + vertical-align: top; +} + +.rst-content .align-middle { + vertical-align: middle; +} + +.rst-content .align-bottom { + vertical-align: bottom; +} + +.rst-content .figure.align-left, +.rst-content figure.align-left, +.rst-content img.align-left, +.rst-content object.align-left, +.rst-content table.align-left { + margin-right: auto; +} + +.rst-content .figure.align-center, +.rst-content figure.align-center, +.rst-content img.align-center, +.rst-content object.align-center, +.rst-content table.align-center, +.rst-content table.align-default { + margin-right: auto; + margin-left: auto; +} + +.rst-content .figure.align-right, +.rst-content figure.align-right, +.rst-content img.align-right, +.rst-content object.align-right, +.rst-content table.align-right { + margin-left: auto; +} + +.rst-content .figure.align-center, +.rst-content .figure.align-right, +.rst-content figure.align-center, +.rst-content figure.align-right, +.rst-content img.align-center, +.rst-content img.align-right, +.rst-content object.align-center, +.rst-content object.align-right { + display: block; +} + +.rst-content .figure.align-left, +.rst-content .figure.align-right, +.rst-content figure.align-left, +.rst-content figure.align-right, +.rst-content table.align-left, +.rst-content table.align-center, +.rst-content table.align-right { + text-align: inherit; +} + +.rst-content .rubric { + font-weight: bold; +} + +.rst-content table.highlighttable td.linenos { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + padding-left: 0; + padding-right: 0; +} + +.rst-content table.highlighttable td.linenos .linenodiv pre { + padding-right: 0; +} + +@media screen and (max-width: 768px) { + .rst-content table.highlighttable td.linenos .linenodiv pre { + display: none; + } +} + +.rst-content table.highlighttable td.linenos + td.code { + margin-left: 0; + padding-left: 0; + padding-right: 0; +} + +.rst-content table.highlighttable td.linenos + td.code .highlight pre { + overflow-x: auto; +} + +@media screen and (max-width: 768px) { + .rst-content table.highlighttable td.linenos + td.code .highlight pre { + width: 96vw; + } +} + +.rst-content .highlight { + background-color: #f8f8f8; + border-radius: 4px; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + overflow-x: auto; + margin: 1em 0; +} + +.rst-content .highlight .gp, .rst-content .highlight .linenos { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.rst-content .highlight pre { + overflow-x: unset; + margin: unset; +} + +.rst-content .highlight span.linenos { + margin-right: 0.5rem; + margin-left: -0.5rem; + color: #666666; +} + +@media screen and (max-width: 768px) { + .rst-content .highlight span.linenos { + display: none; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .rst-content section > .notranslate > .highlight, .rst-content .section > .notranslate > .highlight { + margin-left: calc(-0.5 * (42.5rem - 42.5rem)); + width: 42.5rem; + } +} + +@media screen and (min-width: 1408px) { + .rst-content section > .notranslate > .highlight, .rst-content .section > .notranslate > .highlight { + margin-left: 0rem; + width: 42.5rem; + } +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .rst-content section > .notranslate > .highlight::before, .rst-content .section > .notranslate > .highlight::before { + right: calc($code-lang-ident-padding - 0.5 * (42.5rem - 42.5rem)); + } +} + +@media screen and (min-width: 1408px) { + .rst-content section > .notranslate > .highlight::before, .rst-content .section > .notranslate > .highlight::before { + right: calc($code-lang-ident-padding - 0.5 * (42.5rem - 42.5rem)); + } +} + +.rst-content .wy-table-responsive.autosummary { + overflow-x: hidden; +} + +.rst-content .wy-table-responsive.autosummary table { + table-layout: fixed; + width: 100%; +} + +.rst-content .wy-table-responsive.autosummary table colgroup col:first-child { + width: 30% !important; +} + +.rst-content .wy-table-responsive.autosummary table colgroup col:last-child { + width: 70% !important; +} + +.rst-content .wy-table-responsive.autosummary table td:first-child { + overflow-wrap: break-word; +} + +.rst-content .wy-table-responsive.autosummary table td:first-child a, .rst-content .wy-table-responsive.autosummary table td:first-child code { + overflow-wrap: break-word; +} + +.rst-content .wy-table-responsive.autosummary table td:first-child a::after, .rst-content .wy-table-responsive.autosummary table td:first-child code::after { + content: "​"; +} + +.rst-content .wy-table-responsive:not(.autosummary).expanded { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); +} + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .rst-content .wy-table-responsive:not(.autosummary).expanded { + margin-left: calc(-0.5 * (66vw - 42.5rem)); + width: 66vw; + max-width: 66vw; + } + .rst-content .wy-table-responsive:not(.autosummary).expanded table { + min-width: 66vw; + } +} + +@media screen and (min-width: 1408px) { + .rst-content .wy-table-responsive:not(.autosummary).expanded { + margin-left: -7.75rem; + width: 58rem; + max-width: 58rem; + } + .rst-content .wy-table-responsive:not(.autosummary).expanded table { + min-width: 58rem; + } +} + +.rst-content .wy-table-responsive:not(.autosummary) table { + font-size: 85%; +} + +.rst-content .wy-table-responsive:not(.autosummary) table tbody tr { + transition: background-color 125ms; +} + +.rst-content .wy-table-responsive:not(.autosummary) table tbody tr:hover { + background-color: rgba(0, 0, 0, 0.035); +} + +.rst-content .headerlink { + font-size: 1em; + margin-left: 0.5em; + color: #b5b5b5; +} + +@media screen and (min-width: 769px) { + .rst-content .headerlink { + display: inline-block; + transform: translateY(0.25rem); + transition: transform .25s 0.2s,color .25s,opacity .125s 0.2s; + opacity: 0; + } +} + +.rst-content *:hover > .headerlink { + transition: transform .25s,color .25s,opacity .125s; + -webkit-transform: translate(0); + transform: translate(0); + opacity: 1; +} + +.rst-content dl.citation > dd { + margin-top: 0; +} + +.rst-content dl.citation > dd :first-child { + margin-top: 0; +} + +.rst-content .file { + align-items: unset; + display: unset; + justify-content: unset; + position: unset; +} + +.rst-content a.brackets::before { + content: "["; +} + +.rst-content a.brackets::after { + content: "]"; +} + +.rst-content .highlight-pycon span.go { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.rst-content .highlight-python, .rst-content .highlight-py, .rst-content .highlight-python3, .rst-content .highlight-py3, .rst-content .highlight-pycon { + position: relative; +} + +.rst-content .highlight-python .highlight::before, .rst-content .highlight-py .highlight::before, .rst-content .highlight-python3 .highlight::before, .rst-content .highlight-py3 .highlight::before, .rst-content .highlight-pycon .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "Python"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-sh, .rst-content .highlight-shell-session, .rst-content .highlight-shell { + position: relative; +} + +.rst-content .highlight-sh .highlight::before, .rst-content .highlight-shell-session .highlight::before, .rst-content .highlight-shell .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "Shell"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-bash { + position: relative; +} + +.rst-content .highlight-bash .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "BASH"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-yaml, .rst-content .highlight-yml { + position: relative; +} + +.rst-content .highlight-yaml .highlight::before, .rst-content .highlight-yml .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "YAML"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-toml { + position: relative; +} + +.rst-content .highlight-toml .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "TOML"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-json { + position: relative; +} + +.rst-content .highlight-json .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "JSON"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-html { + position: relative; +} + +.rst-content .highlight-html .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "HTML"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-xml { + position: relative; +} + +.rst-content .highlight-xml .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "XML"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-javascript, .rst-content .highlight-js { + position: relative; +} + +.rst-content .highlight-javascript .highlight::before, .rst-content .highlight-js .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "JavaScript"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-jinja { + position: relative; +} + +.rst-content .highlight-jinja .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "Jinja"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-c { + position: relative; +} + +.rst-content .highlight-c .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "C"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-cxx, .rst-content .highlight-cpp, .rst-content .highlight-c\+\+ { + position: relative; +} + +.rst-content .highlight-cxx .highlight::before, .rst-content .highlight-cpp .highlight::before, .rst-content .highlight-c\+\+ .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "C++"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-rs, .rst-content .highlight-rust { + position: relative; +} + +.rst-content .highlight-rs .highlight::before, .rst-content .highlight-rust .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "Rust"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-julia { + position: relative; +} + +.rst-content .highlight-julia .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "Julia"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-r { + position: relative; +} + +.rst-content .highlight-r .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "R"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-restructuredtext, .rst-content .highlight-rst, .rst-content .highlight-rest { + position: relative; +} + +.rst-content .highlight-restructuredtext .highlight::before, .rst-content .highlight-rst .highlight::before, .rst-content .highlight-rest .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "reStructuredText"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-md, .rst-content .highlight-markdown { + position: relative; +} + +.rst-content .highlight-md .highlight::before, .rst-content .highlight-markdown .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "Markdown"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-tex { + position: relative; +} + +.rst-content .highlight-tex .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "TeX"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .highlight-latex { + position: relative; +} + +.rst-content .highlight-latex .highlight::before { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + content: "LaTeX"; + color: #696969; + font-size: 80%; + font-family: Menlo, Monaco, "Courier New", monospace; + font-variant: small-caps; + position: absolute; + z-index: 10; + right: 0.18rem; + top: 0.18rem; + line-height: 0.8; +} + +.rst-content .nbinput > .prompt, .rst-content .nboutput > .prompt { + display: None; +} + +.rst-content .nbinput > .output_area, .rst-content .nbinput > .input_area, .rst-content .nboutput > .output_area, .rst-content .nboutput > .input_area { + border: None !important; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 2px 2px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); +} + +.rst-content .nbinput .highlight, .rst-content .nboutput .highlight { + width: 100%; +} + +.rst-content .nbinput:not(.nblast) > .input_area { + border-radius: 4px 0 0 0 !important; +} + +.rst-content .nbinput.nblast > .input_area { + border-radius: 4px 0 0 4px !important; +} + +.rst-content .nbinput > .input_area { + border-left: medium #808080 solid !important; +} + +.rst-content .nbinput > .input_area pre { + padding: 1.25rem 1.5rem !important; +} + +.rst-content .nboutput.nblast > .output_area { + border-radius: 0 0 0 4px !important; +} + +.rst-content .nboutput > .stderr.output_area { + border-left: medium #b5b5b5 solid !important; + background: #fee !important; +} + +.rst-content .nboutput > :not(.stderr).output_area { + border-left: medium #b5b5b5 solid !important; + background: #FFFFFF !important; +} + +.rst-content .cell.container { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + border-radius: 4px 2px 2px 4px; +} + +.rst-content .cell.container > .cell_input { + border: none; + border-left: 4px green solid; +} + +.rst-content .cell.container > .cell_input:last-child { + border-radius: 4px 0 0 4px; +} + +.rst-content .cell.container > .cell_input:not(:last-child) { + border-radius: 4px 0 0 0; +} + +.rst-content .cell.container .highlight { + border: None; + border-radius: 0; + box-shadow: None; +} + +.rst-content .cell.container > .cell_output { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + border-left: 4px gray solid; + margin-top: -1em; + padding-left: 0; +} + +.rst-content .cell.container > .cell_output:last-child { + border-radius: 0 0 0 4px; +} + +.rst-content .cell.container > .cell_output > .output, .rst-content .cell.container > .cell_output > img { + margin-top: 0; +} + +.rst-content .cell.container > .cell_output > .output.stderr, .rst-content .cell.container > .cell_output > img.stderr { + background: #fee; +} + +.rst-content .cell.container > .cell_output > .output.stderr .highlight, .rst-content .cell.container > .cell_output > .output.stderr pre, .rst-content .cell.container > .cell_output > img.stderr .highlight, .rst-content .cell.container > .cell_output > img.stderr pre { + background: None; +} + +.rst-content .cell.container > .cell_output > .output:not(.stderr), .rst-content .cell.container > .cell_output > img:not(.stderr) { + background: #FFFFFF; +} + +.rst-content .cell.container > .cell_output > .output:not(.stderr) .highlight, .rst-content .cell.container > .cell_output > .output:not(.stderr) pre, .rst-content .cell.container > .cell_output > img:not(.stderr) .highlight, .rst-content .cell.container > .cell_output > img:not(.stderr) pre { + background: None; +} + +.rst-content .cell.container > .cell_output > .output.traceback, .rst-content .cell.container > .cell_output > img.traceback { + border: None; +} + +.rst-content .cell.container > .cell_output > .output pre, .rst-content .cell.container > .cell_output > img pre { + padding: 5px; + white-space: pre-wrap; + word-break: break-all; +} + +.rst-content .cell.container .highlight { + border: none; +} + +.rst-content .admonition, .rst-content div.deprecated, .rst-content div.alert { + margin: 1.25rem 0; + padding: 0 0.75rem; + overflow: hidden; + color: rgba(0, 0, 0, 0.87); + page-break-inside: avoid; + border-left: none; + border-radius: 0.125rem; + box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.4); +} + +@media print { + .rst-content .admonition, .rst-content div.deprecated, .rst-content div.alert { + box-shadow: none; + } +} + +[dir="rtl"] .rst-content .admonition, [dir="rtl"] .rst-content div.deprecated, [dir="rtl"] .rst-content div.alert { + border-right: 0.25rem solid #ca6500; + border-left: none; +} + +.rst-content .admonition .admonition, .rst-content div.deprecated .admonition, .rst-content div.alert .admonition { + margin-top: 1em; + margin-bottom: 1em; +} + +.rst-content .admonition .md-typeset__scrollwrap, .rst-content div.deprecated .md-typeset__scrollwrap, .rst-content div.alert .md-typeset__scrollwrap { + margin: 1em -0.75rem; +} + +.rst-content .admonition .md-typeset__table, .rst-content div.deprecated .md-typeset__table, .rst-content div.alert .md-typeset__table { + padding: 0 0.75rem; +} + +.rst-content .admonition > .tabbed-set:only-child, .rst-content div.deprecated > .tabbed-set:only-child, .rst-content div.alert > .tabbed-set:only-child { + margin-top: 0; +} + +html .rst-content .admonition:not(div.deprecated) > :last-child, html .rst-content div.deprecated:not(div.deprecated) > :last-child, html .rst-content div.alert:not(div.deprecated) > :last-child { + margin-bottom: 0.75rem; +} + +.rst-content .admonition:not(div.deprecated) > p:not(.admonition-title), .rst-content div.deprecated:not(div.deprecated) > p:not(.admonition-title), .rst-content div.alert:not(div.deprecated) > p:not(.admonition-title) { + max-width: calc(80ex - 2 * 1.25rem); +} + +.rst-content .admonition.note, .rst-content .admonition.admonition-note, .rst-content div.deprecated.note, .rst-content div.deprecated.admonition-note, .rst-content div.alert.note, .rst-content div.alert.admonition-note { + border-left-color: #808080; + background-color: rgba(128, 128, 128, 0.1); +} + +[dir="rtl"] .rst-content .admonition.note, [dir="rtl"] .rst-content .admonition.admonition-note, [dir="rtl"] .rst-content div.deprecated.note, [dir="rtl"] .rst-content div.deprecated.admonition-note, [dir="rtl"] .rst-content div.alert.note, [dir="rtl"] .rst-content div.alert.admonition-note { + border-right-color: #808080; +} + +.rst-content .admonition.note .admonition-title, .rst-content .admonition.note.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-note .admonition-title, .rst-content .admonition.admonition-note.deprecated .versionmodified.deprecated, .rst-content div.deprecated.note .admonition-title, .rst-content div.deprecated.note.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-note .admonition-title, .rst-content div.deprecated.admonition-note.deprecated .versionmodified.deprecated, .rst-content div.alert.note .admonition-title, .rst-content div.alert.note.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-note .admonition-title, .rst-content div.alert.admonition-note.deprecated .versionmodified.deprecated { + background-color: #808080; + border-left-color: #808080; + color: white; +} + +[dir="rtl"] .rst-content .admonition.note .admonition-title, [dir="rtl"] .rst-content .admonition.note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-note .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.note .admonition-title, [dir="rtl"] .rst-content div.deprecated.note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-note .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.note .admonition-title, [dir="rtl"] .rst-content div.alert.note.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-note .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-note.deprecated .versionmodified.deprecated { + border-right-color: #808080; +} + +.rst-content .admonition.note .admonition-title::before, .rst-content .admonition.note.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-note .admonition-title::before, .rst-content .admonition.admonition-note.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.note .admonition-title::before, .rst-content div.deprecated.note.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-note .admonition-title::before, .rst-content div.deprecated.admonition-note.deprecated .versionmodified.deprecated::before, .rst-content div.alert.note .admonition-title::before, .rst-content div.alert.note.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-note .admonition-title::before, .rst-content div.alert.admonition-note.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.note .admonition-title strong, .rst-content .admonition.note.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-note .admonition-title strong, .rst-content .admonition.admonition-note.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.note .admonition-title strong, .rst-content div.deprecated.note.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-note .admonition-title strong, .rst-content div.deprecated.admonition-note.deprecated .versionmodified.deprecated strong, .rst-content div.alert.note .admonition-title strong, .rst-content div.alert.note.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-note .admonition-title strong, .rst-content div.alert.admonition-note.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.seealso, .rst-content .admonition.admonition-seealso, .rst-content div.deprecated.seealso, .rst-content div.deprecated.admonition-seealso, .rst-content div.alert.seealso, .rst-content div.alert.admonition-seealso { + border-left-color: #808080; + background-color: rgba(128, 128, 128, 0.1); +} + +[dir="rtl"] .rst-content .admonition.seealso, [dir="rtl"] .rst-content .admonition.admonition-seealso, [dir="rtl"] .rst-content div.deprecated.seealso, [dir="rtl"] .rst-content div.deprecated.admonition-seealso, [dir="rtl"] .rst-content div.alert.seealso, [dir="rtl"] .rst-content div.alert.admonition-seealso { + border-right-color: #808080; +} + +.rst-content .admonition.seealso .admonition-title, .rst-content .admonition.seealso.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-seealso .admonition-title, .rst-content .admonition.admonition-seealso.deprecated .versionmodified.deprecated, .rst-content div.deprecated.seealso .admonition-title, .rst-content div.deprecated.seealso.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-seealso .admonition-title, .rst-content div.deprecated.admonition-seealso.deprecated .versionmodified.deprecated, .rst-content div.alert.seealso .admonition-title, .rst-content div.alert.seealso.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-seealso .admonition-title, .rst-content div.alert.admonition-seealso.deprecated .versionmodified.deprecated { + background-color: #808080; + border-left-color: #808080; + color: white; +} + +[dir="rtl"] .rst-content .admonition.seealso .admonition-title, [dir="rtl"] .rst-content .admonition.seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-seealso .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.seealso .admonition-title, [dir="rtl"] .rst-content div.deprecated.seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-seealso .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.seealso .admonition-title, [dir="rtl"] .rst-content div.alert.seealso.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-seealso .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-seealso.deprecated .versionmodified.deprecated { + border-right-color: #808080; +} + +.rst-content .admonition.seealso .admonition-title::before, .rst-content .admonition.seealso.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-seealso .admonition-title::before, .rst-content .admonition.admonition-seealso.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.seealso .admonition-title::before, .rst-content div.deprecated.seealso.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-seealso .admonition-title::before, .rst-content div.deprecated.admonition-seealso.deprecated .versionmodified.deprecated::before, .rst-content div.alert.seealso .admonition-title::before, .rst-content div.alert.seealso.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-seealso .admonition-title::before, .rst-content div.alert.admonition-seealso.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.seealso .admonition-title strong, .rst-content .admonition.seealso.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-seealso .admonition-title strong, .rst-content .admonition.admonition-seealso.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.seealso .admonition-title strong, .rst-content div.deprecated.seealso.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-seealso .admonition-title strong, .rst-content div.deprecated.admonition-seealso.deprecated .versionmodified.deprecated strong, .rst-content div.alert.seealso .admonition-title strong, .rst-content div.alert.seealso.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-seealso .admonition-title strong, .rst-content div.alert.admonition-seealso.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.admonition-abstract, .rst-content .admonition.admonition-summary, .rst-content .admonition.admonition-tldr, .rst-content div.deprecated.admonition-abstract, .rst-content div.deprecated.admonition-summary, .rst-content div.deprecated.admonition-tldr, .rst-content div.alert.admonition-abstract, .rst-content div.alert.admonition-summary, .rst-content div.alert.admonition-tldr { + border-left-color: #3298dc; + background-color: rgba(50, 152, 220, 0.1); +} + +[dir="rtl"] .rst-content .admonition.admonition-abstract, [dir="rtl"] .rst-content .admonition.admonition-summary, [dir="rtl"] .rst-content .admonition.admonition-tldr, [dir="rtl"] .rst-content div.deprecated.admonition-abstract, [dir="rtl"] .rst-content div.deprecated.admonition-summary, [dir="rtl"] .rst-content div.deprecated.admonition-tldr, [dir="rtl"] .rst-content div.alert.admonition-abstract, [dir="rtl"] .rst-content div.alert.admonition-summary, [dir="rtl"] .rst-content div.alert.admonition-tldr { + border-right-color: #3298dc; +} + +.rst-content .admonition.admonition-abstract .admonition-title, .rst-content .admonition.admonition-abstract.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-summary .admonition-title, .rst-content .admonition.admonition-summary.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-tldr .admonition-title, .rst-content .admonition.admonition-tldr.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-abstract .admonition-title, .rst-content div.deprecated.admonition-abstract.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-summary .admonition-title, .rst-content div.deprecated.admonition-summary.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-tldr .admonition-title, .rst-content div.deprecated.admonition-tldr.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-abstract .admonition-title, .rst-content div.alert.admonition-abstract.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-summary .admonition-title, .rst-content div.alert.admonition-summary.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-tldr .admonition-title, .rst-content div.alert.admonition-tldr.deprecated .versionmodified.deprecated { + background-color: #3298dc; + border-left-color: #3298dc; + color: white; +} + +[dir="rtl"] .rst-content .admonition.admonition-abstract .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-abstract.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-summary .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-summary.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-tldr .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-tldr.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-abstract .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-abstract.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-summary .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-summary.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-tldr .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-tldr.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-abstract .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-abstract.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-summary .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-summary.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-tldr .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-tldr.deprecated .versionmodified.deprecated { + border-right-color: #3298dc; +} + +.rst-content .admonition.admonition-abstract .admonition-title::before, .rst-content .admonition.admonition-abstract.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-summary .admonition-title::before, .rst-content .admonition.admonition-summary.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-tldr .admonition-title::before, .rst-content .admonition.admonition-tldr.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-abstract .admonition-title::before, .rst-content div.deprecated.admonition-abstract.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-summary .admonition-title::before, .rst-content div.deprecated.admonition-summary.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-tldr .admonition-title::before, .rst-content div.deprecated.admonition-tldr.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-abstract .admonition-title::before, .rst-content div.alert.admonition-abstract.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-summary .admonition-title::before, .rst-content div.alert.admonition-summary.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-tldr .admonition-title::before, .rst-content div.alert.admonition-tldr.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.admonition-abstract .admonition-title strong, .rst-content .admonition.admonition-abstract.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-summary .admonition-title strong, .rst-content .admonition.admonition-summary.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-tldr .admonition-title strong, .rst-content .admonition.admonition-tldr.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-abstract .admonition-title strong, .rst-content div.deprecated.admonition-abstract.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-summary .admonition-title strong, .rst-content div.deprecated.admonition-summary.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-tldr .admonition-title strong, .rst-content div.deprecated.admonition-tldr.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-abstract .admonition-title strong, .rst-content div.alert.admonition-abstract.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-summary .admonition-title strong, .rst-content div.alert.admonition-summary.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-tldr .admonition-title strong, .rst-content div.alert.admonition-tldr.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.admonition-info, .rst-content .admonition.alert-info, .rst-content div.deprecated.admonition-info, .rst-content div.deprecated.alert-info, .rst-content div.alert.admonition-info, .rst-content div.alert.alert-info { + border-left-color: #ca6500; + background-color: rgba(202, 101, 0, 0.1); +} + +[dir="rtl"] .rst-content .admonition.admonition-info, [dir="rtl"] .rst-content .admonition.alert-info, [dir="rtl"] .rst-content div.deprecated.admonition-info, [dir="rtl"] .rst-content div.deprecated.alert-info, [dir="rtl"] .rst-content div.alert.admonition-info, [dir="rtl"] .rst-content div.alert.alert-info { + border-right-color: #ca6500; +} + +.rst-content .admonition.admonition-info .admonition-title, .rst-content .admonition.admonition-info.deprecated .versionmodified.deprecated, .rst-content .admonition.alert-info .admonition-title, .rst-content .admonition.alert-info.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-info .admonition-title, .rst-content div.deprecated.admonition-info.deprecated .versionmodified.deprecated, .rst-content div.deprecated.alert-info .admonition-title, .rst-content div.deprecated.alert-info.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-info .admonition-title, .rst-content div.alert.admonition-info.deprecated .versionmodified.deprecated, .rst-content div.alert.alert-info .admonition-title, .rst-content div.alert.alert-info.deprecated .versionmodified.deprecated { + background-color: #ca6500; + border-left-color: #ca6500; + color: white; +} + +[dir="rtl"] .rst-content .admonition.admonition-info .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.alert-info .admonition-title, [dir="rtl"] .rst-content .admonition.alert-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-info .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.alert-info .admonition-title, [dir="rtl"] .rst-content div.deprecated.alert-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-info .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-info.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.alert-info .admonition-title, [dir="rtl"] .rst-content div.alert.alert-info.deprecated .versionmodified.deprecated { + border-right-color: #ca6500; +} + +.rst-content .admonition.admonition-info .admonition-title::before, .rst-content .admonition.admonition-info.deprecated .versionmodified.deprecated::before, .rst-content .admonition.alert-info .admonition-title::before, .rst-content .admonition.alert-info.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-info .admonition-title::before, .rst-content div.deprecated.admonition-info.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.alert-info .admonition-title::before, .rst-content div.deprecated.alert-info.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-info .admonition-title::before, .rst-content div.alert.admonition-info.deprecated .versionmodified.deprecated::before, .rst-content div.alert.alert-info .admonition-title::before, .rst-content div.alert.alert-info.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.admonition-info .admonition-title strong, .rst-content .admonition.admonition-info.deprecated .versionmodified.deprecated strong, .rst-content .admonition.alert-info .admonition-title strong, .rst-content .admonition.alert-info.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-info .admonition-title strong, .rst-content div.deprecated.admonition-info.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.alert-info .admonition-title strong, .rst-content div.deprecated.alert-info.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-info .admonition-title strong, .rst-content div.alert.admonition-info.deprecated .versionmodified.deprecated strong, .rst-content div.alert.alert-info .admonition-title strong, .rst-content div.alert.alert-info.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.admonition-todo, .rst-content div.deprecated.admonition-todo, .rst-content div.alert.admonition-todo { + border-left-color: #e7cb00; + background-color: rgba(231, 203, 0, 0.1); +} + +[dir="rtl"] .rst-content .admonition.admonition-todo, [dir="rtl"] .rst-content div.deprecated.admonition-todo, [dir="rtl"] .rst-content div.alert.admonition-todo { + border-right-color: #e7cb00; +} + +.rst-content .admonition.admonition-todo .admonition-title, .rst-content .admonition.admonition-todo.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-todo .admonition-title, .rst-content div.deprecated.admonition-todo.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-todo .admonition-title, .rst-content div.alert.admonition-todo.deprecated .versionmodified.deprecated { + background-color: #e7cb00; + border-left-color: #e7cb00; + color: white; +} + +[dir="rtl"] .rst-content .admonition.admonition-todo .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-todo.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-todo .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-todo.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-todo .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-todo.deprecated .versionmodified.deprecated { + border-right-color: #e7cb00; +} + +.rst-content .admonition.admonition-todo .admonition-title::before, .rst-content .admonition.admonition-todo.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-todo .admonition-title::before, .rst-content div.deprecated.admonition-todo.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-todo .admonition-title::before, .rst-content div.alert.admonition-todo.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.admonition-todo .admonition-title strong, .rst-content .admonition.admonition-todo.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-todo .admonition-title strong, .rst-content div.deprecated.admonition-todo.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-todo .admonition-title strong, .rst-content div.alert.admonition-todo.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.tip, .rst-content .admonition.hint, .rst-content .admonition.admonition-tip, .rst-content .admonition.admonition-hint, .rst-content div.deprecated.tip, .rst-content div.deprecated.hint, .rst-content div.deprecated.admonition-tip, .rst-content div.deprecated.admonition-hint, .rst-content div.alert.tip, .rst-content div.alert.hint, .rst-content div.alert.admonition-tip, .rst-content div.alert.admonition-hint { + border-left-color: #00d1b2; + background-color: rgba(0, 209, 178, 0.1); +} + +[dir="rtl"] .rst-content .admonition.tip, [dir="rtl"] .rst-content .admonition.hint, [dir="rtl"] .rst-content .admonition.admonition-tip, [dir="rtl"] .rst-content .admonition.admonition-hint, [dir="rtl"] .rst-content div.deprecated.tip, [dir="rtl"] .rst-content div.deprecated.hint, [dir="rtl"] .rst-content div.deprecated.admonition-tip, [dir="rtl"] .rst-content div.deprecated.admonition-hint, [dir="rtl"] .rst-content div.alert.tip, [dir="rtl"] .rst-content div.alert.hint, [dir="rtl"] .rst-content div.alert.admonition-tip, [dir="rtl"] .rst-content div.alert.admonition-hint { + border-right-color: #00d1b2; +} + +.rst-content .admonition.tip .admonition-title, .rst-content .admonition.tip.deprecated .versionmodified.deprecated, .rst-content .admonition.hint .admonition-title, .rst-content .admonition.hint.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-tip .admonition-title, .rst-content .admonition.admonition-tip.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-hint .admonition-title, .rst-content .admonition.admonition-hint.deprecated .versionmodified.deprecated, .rst-content div.deprecated.tip .admonition-title, .rst-content div.deprecated.tip.deprecated .versionmodified.deprecated, .rst-content div.deprecated.hint .admonition-title, .rst-content div.deprecated.hint.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-tip .admonition-title, .rst-content div.deprecated.admonition-tip.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-hint .admonition-title, .rst-content div.deprecated.admonition-hint.deprecated .versionmodified.deprecated, .rst-content div.alert.tip .admonition-title, .rst-content div.alert.tip.deprecated .versionmodified.deprecated, .rst-content div.alert.hint .admonition-title, .rst-content div.alert.hint.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-tip .admonition-title, .rst-content div.alert.admonition-tip.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-hint .admonition-title, .rst-content div.alert.admonition-hint.deprecated .versionmodified.deprecated { + background-color: #00d1b2; + border-left-color: #00d1b2; + color: white; +} + +[dir="rtl"] .rst-content .admonition.tip .admonition-title, [dir="rtl"] .rst-content .admonition.tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.hint .admonition-title, [dir="rtl"] .rst-content .admonition.hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-tip .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-hint .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.tip .admonition-title, [dir="rtl"] .rst-content div.deprecated.tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.hint .admonition-title, [dir="rtl"] .rst-content div.deprecated.hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-tip .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-hint .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.tip .admonition-title, [dir="rtl"] .rst-content div.alert.tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.hint .admonition-title, [dir="rtl"] .rst-content div.alert.hint.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-tip .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-tip.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-hint .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-hint.deprecated .versionmodified.deprecated { + border-right-color: #00d1b2; +} + +.rst-content .admonition.tip .admonition-title::before, .rst-content .admonition.tip.deprecated .versionmodified.deprecated::before, .rst-content .admonition.hint .admonition-title::before, .rst-content .admonition.hint.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-tip .admonition-title::before, .rst-content .admonition.admonition-tip.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-hint .admonition-title::before, .rst-content .admonition.admonition-hint.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.tip .admonition-title::before, .rst-content div.deprecated.tip.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.hint .admonition-title::before, .rst-content div.deprecated.hint.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-tip .admonition-title::before, .rst-content div.deprecated.admonition-tip.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-hint .admonition-title::before, .rst-content div.deprecated.admonition-hint.deprecated .versionmodified.deprecated::before, .rst-content div.alert.tip .admonition-title::before, .rst-content div.alert.tip.deprecated .versionmodified.deprecated::before, .rst-content div.alert.hint .admonition-title::before, .rst-content div.alert.hint.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-tip .admonition-title::before, .rst-content div.alert.admonition-tip.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-hint .admonition-title::before, .rst-content div.alert.admonition-hint.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.tip .admonition-title strong, .rst-content .admonition.tip.deprecated .versionmodified.deprecated strong, .rst-content .admonition.hint .admonition-title strong, .rst-content .admonition.hint.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-tip .admonition-title strong, .rst-content .admonition.admonition-tip.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-hint .admonition-title strong, .rst-content .admonition.admonition-hint.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.tip .admonition-title strong, .rst-content div.deprecated.tip.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.hint .admonition-title strong, .rst-content div.deprecated.hint.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-tip .admonition-title strong, .rst-content div.deprecated.admonition-tip.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-hint .admonition-title strong, .rst-content div.deprecated.admonition-hint.deprecated .versionmodified.deprecated strong, .rst-content div.alert.tip .admonition-title strong, .rst-content div.alert.tip.deprecated .versionmodified.deprecated strong, .rst-content div.alert.hint .admonition-title strong, .rst-content div.alert.hint.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-tip .admonition-title strong, .rst-content div.alert.admonition-tip.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-hint .admonition-title strong, .rst-content div.alert.admonition-hint.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.important, .rst-content .admonition.admonition-important, .rst-content div.deprecated.important, .rst-content div.deprecated.admonition-important, .rst-content div.alert.important, .rst-content div.alert.admonition-important { + border-left-color: #FF9200; + background-color: rgba(255, 146, 0, 0.1); +} + +[dir="rtl"] .rst-content .admonition.important, [dir="rtl"] .rst-content .admonition.admonition-important, [dir="rtl"] .rst-content div.deprecated.important, [dir="rtl"] .rst-content div.deprecated.admonition-important, [dir="rtl"] .rst-content div.alert.important, [dir="rtl"] .rst-content div.alert.admonition-important { + border-right-color: #FF9200; +} + +.rst-content .admonition.important .admonition-title, .rst-content .admonition.important.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-important .admonition-title, .rst-content .admonition.admonition-important.deprecated .versionmodified.deprecated, .rst-content div.deprecated.important .admonition-title, .rst-content div.deprecated.important.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-important .admonition-title, .rst-content div.deprecated.admonition-important.deprecated .versionmodified.deprecated, .rst-content div.alert.important .admonition-title, .rst-content div.alert.important.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-important .admonition-title, .rst-content div.alert.admonition-important.deprecated .versionmodified.deprecated { + background-color: #FF9200; + border-left-color: #FF9200; + color: white; +} + +[dir="rtl"] .rst-content .admonition.important .admonition-title, [dir="rtl"] .rst-content .admonition.important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-important .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.important .admonition-title, [dir="rtl"] .rst-content div.deprecated.important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-important .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.important .admonition-title, [dir="rtl"] .rst-content div.alert.important.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-important .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-important.deprecated .versionmodified.deprecated { + border-right-color: #FF9200; +} + +.rst-content .admonition.important .admonition-title::before, .rst-content .admonition.important.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-important .admonition-title::before, .rst-content .admonition.admonition-important.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.important .admonition-title::before, .rst-content div.deprecated.important.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-important .admonition-title::before, .rst-content div.deprecated.admonition-important.deprecated .versionmodified.deprecated::before, .rst-content div.alert.important .admonition-title::before, .rst-content div.alert.important.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-important .admonition-title::before, .rst-content div.alert.admonition-important.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.important .admonition-title strong, .rst-content .admonition.important.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-important .admonition-title strong, .rst-content .admonition.admonition-important.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.important .admonition-title strong, .rst-content div.deprecated.important.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-important .admonition-title strong, .rst-content div.deprecated.admonition-important.deprecated .versionmodified.deprecated strong, .rst-content div.alert.important .admonition-title strong, .rst-content div.alert.important.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-important .admonition-title strong, .rst-content div.alert.admonition-important.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.admonition-success, .rst-content .admonition.admonition-check, .rst-content .admonition.admonition-done, .rst-content .admonition.alert-success, .rst-content div.deprecated.admonition-success, .rst-content div.deprecated.admonition-check, .rst-content div.deprecated.admonition-done, .rst-content div.deprecated.alert-success, .rst-content div.alert.admonition-success, .rst-content div.alert.admonition-check, .rst-content div.alert.admonition-done, .rst-content div.alert.alert-success { + border-left-color: #01a901; + background-color: rgba(1, 169, 1, 0.1); +} + +[dir="rtl"] .rst-content .admonition.admonition-success, [dir="rtl"] .rst-content .admonition.admonition-check, [dir="rtl"] .rst-content .admonition.admonition-done, [dir="rtl"] .rst-content .admonition.alert-success, [dir="rtl"] .rst-content div.deprecated.admonition-success, [dir="rtl"] .rst-content div.deprecated.admonition-check, [dir="rtl"] .rst-content div.deprecated.admonition-done, [dir="rtl"] .rst-content div.deprecated.alert-success, [dir="rtl"] .rst-content div.alert.admonition-success, [dir="rtl"] .rst-content div.alert.admonition-check, [dir="rtl"] .rst-content div.alert.admonition-done, [dir="rtl"] .rst-content div.alert.alert-success { + border-right-color: #01a901; +} + +.rst-content .admonition.admonition-success .admonition-title, .rst-content .admonition.admonition-success.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-check .admonition-title, .rst-content .admonition.admonition-check.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-done .admonition-title, .rst-content .admonition.admonition-done.deprecated .versionmodified.deprecated, .rst-content .admonition.alert-success .admonition-title, .rst-content .admonition.alert-success.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-success .admonition-title, .rst-content div.deprecated.admonition-success.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-check .admonition-title, .rst-content div.deprecated.admonition-check.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-done .admonition-title, .rst-content div.deprecated.admonition-done.deprecated .versionmodified.deprecated, .rst-content div.deprecated.alert-success .admonition-title, .rst-content div.deprecated.alert-success.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-success .admonition-title, .rst-content div.alert.admonition-success.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-check .admonition-title, .rst-content div.alert.admonition-check.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-done .admonition-title, .rst-content div.alert.admonition-done.deprecated .versionmodified.deprecated, .rst-content div.alert.alert-success .admonition-title, .rst-content div.alert.alert-success.deprecated .versionmodified.deprecated { + background-color: #01a901; + border-left-color: #01a901; + color: white; +} + +[dir="rtl"] .rst-content .admonition.admonition-success .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-check .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-check.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-done .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-done.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.alert-success .admonition-title, [dir="rtl"] .rst-content .admonition.alert-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-success .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-check .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-check.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-done .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-done.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.alert-success .admonition-title, [dir="rtl"] .rst-content div.deprecated.alert-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-success .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-success.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-check .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-check.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-done .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-done.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.alert-success .admonition-title, [dir="rtl"] .rst-content div.alert.alert-success.deprecated .versionmodified.deprecated { + border-right-color: #01a901; +} + +.rst-content .admonition.admonition-success .admonition-title::before, .rst-content .admonition.admonition-success.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-check .admonition-title::before, .rst-content .admonition.admonition-check.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-done .admonition-title::before, .rst-content .admonition.admonition-done.deprecated .versionmodified.deprecated::before, .rst-content .admonition.alert-success .admonition-title::before, .rst-content .admonition.alert-success.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-success .admonition-title::before, .rst-content div.deprecated.admonition-success.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-check .admonition-title::before, .rst-content div.deprecated.admonition-check.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-done .admonition-title::before, .rst-content div.deprecated.admonition-done.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.alert-success .admonition-title::before, .rst-content div.deprecated.alert-success.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-success .admonition-title::before, .rst-content div.alert.admonition-success.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-check .admonition-title::before, .rst-content div.alert.admonition-check.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-done .admonition-title::before, .rst-content div.alert.admonition-done.deprecated .versionmodified.deprecated::before, .rst-content div.alert.alert-success .admonition-title::before, .rst-content div.alert.alert-success.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.admonition-success .admonition-title strong, .rst-content .admonition.admonition-success.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-check .admonition-title strong, .rst-content .admonition.admonition-check.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-done .admonition-title strong, .rst-content .admonition.admonition-done.deprecated .versionmodified.deprecated strong, .rst-content .admonition.alert-success .admonition-title strong, .rst-content .admonition.alert-success.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-success .admonition-title strong, .rst-content div.deprecated.admonition-success.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-check .admonition-title strong, .rst-content div.deprecated.admonition-check.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-done .admonition-title strong, .rst-content div.deprecated.admonition-done.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.alert-success .admonition-title strong, .rst-content div.deprecated.alert-success.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-success .admonition-title strong, .rst-content div.alert.admonition-success.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-check .admonition-title strong, .rst-content div.alert.admonition-check.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-done .admonition-title strong, .rst-content div.alert.admonition-done.deprecated .versionmodified.deprecated strong, .rst-content div.alert.alert-success .admonition-title strong, .rst-content div.alert.alert-success.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.admonition-question, .rst-content .admonition.admonition-help, .rst-content .admonition.admonition-faq, .rst-content div.deprecated.admonition-question, .rst-content div.deprecated.admonition-help, .rst-content div.deprecated.admonition-faq, .rst-content div.alert.admonition-question, .rst-content div.alert.admonition-help, .rst-content div.alert.admonition-faq { + border-left-color: #3298dc; + background-color: rgba(50, 152, 220, 0.1); +} + +[dir="rtl"] .rst-content .admonition.admonition-question, [dir="rtl"] .rst-content .admonition.admonition-help, [dir="rtl"] .rst-content .admonition.admonition-faq, [dir="rtl"] .rst-content div.deprecated.admonition-question, [dir="rtl"] .rst-content div.deprecated.admonition-help, [dir="rtl"] .rst-content div.deprecated.admonition-faq, [dir="rtl"] .rst-content div.alert.admonition-question, [dir="rtl"] .rst-content div.alert.admonition-help, [dir="rtl"] .rst-content div.alert.admonition-faq { + border-right-color: #3298dc; +} + +.rst-content .admonition.admonition-question .admonition-title, .rst-content .admonition.admonition-question.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-help .admonition-title, .rst-content .admonition.admonition-help.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-faq .admonition-title, .rst-content .admonition.admonition-faq.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-question .admonition-title, .rst-content div.deprecated.admonition-question.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-help .admonition-title, .rst-content div.deprecated.admonition-help.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-faq .admonition-title, .rst-content div.deprecated.admonition-faq.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-question .admonition-title, .rst-content div.alert.admonition-question.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-help .admonition-title, .rst-content div.alert.admonition-help.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-faq .admonition-title, .rst-content div.alert.admonition-faq.deprecated .versionmodified.deprecated { + background-color: #3298dc; + border-left-color: #3298dc; + color: white; +} + +[dir="rtl"] .rst-content .admonition.admonition-question .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-question.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-help .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-help.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-faq .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-faq.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-question .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-question.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-help .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-help.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-faq .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-faq.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-question .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-question.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-help .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-help.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-faq .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-faq.deprecated .versionmodified.deprecated { + border-right-color: #3298dc; +} + +.rst-content .admonition.admonition-question .admonition-title::before, .rst-content .admonition.admonition-question.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-help .admonition-title::before, .rst-content .admonition.admonition-help.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-faq .admonition-title::before, .rst-content .admonition.admonition-faq.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-question .admonition-title::before, .rst-content div.deprecated.admonition-question.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-help .admonition-title::before, .rst-content div.deprecated.admonition-help.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-faq .admonition-title::before, .rst-content div.deprecated.admonition-faq.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-question .admonition-title::before, .rst-content div.alert.admonition-question.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-help .admonition-title::before, .rst-content div.alert.admonition-help.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-faq .admonition-title::before, .rst-content div.alert.admonition-faq.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.admonition-question .admonition-title strong, .rst-content .admonition.admonition-question.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-help .admonition-title strong, .rst-content .admonition.admonition-help.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-faq .admonition-title strong, .rst-content .admonition.admonition-faq.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-question .admonition-title strong, .rst-content div.deprecated.admonition-question.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-help .admonition-title strong, .rst-content div.deprecated.admonition-help.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-faq .admonition-title strong, .rst-content div.deprecated.admonition-faq.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-question .admonition-title strong, .rst-content div.alert.admonition-question.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-help .admonition-title strong, .rst-content div.alert.admonition-help.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-faq .admonition-title strong, .rst-content div.alert.admonition-faq.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.warning, .rst-content .admonition.caution, .rst-content .admonition.attention, .rst-content .admonition.admonition-warning, .rst-content .admonition.admonition-caution, .rst-content .admonition.admonition-attention, .rst-content div.deprecated.warning, .rst-content div.deprecated.caution, .rst-content div.deprecated.attention, .rst-content div.deprecated.admonition-warning, .rst-content div.deprecated.admonition-caution, .rst-content div.deprecated.admonition-attention, .rst-content div.alert.warning, .rst-content div.alert.caution, .rst-content div.alert.attention, .rst-content div.alert.admonition-warning, .rst-content div.alert.admonition-caution, .rst-content div.alert.admonition-attention { + border-left-color: #FF9200; + background-color: rgba(255, 146, 0, 0.1); +} + +[dir="rtl"] .rst-content .admonition.warning, [dir="rtl"] .rst-content .admonition.caution, [dir="rtl"] .rst-content .admonition.attention, [dir="rtl"] .rst-content .admonition.admonition-warning, [dir="rtl"] .rst-content .admonition.admonition-caution, [dir="rtl"] .rst-content .admonition.admonition-attention, [dir="rtl"] .rst-content div.deprecated.warning, [dir="rtl"] .rst-content div.deprecated.caution, [dir="rtl"] .rst-content div.deprecated.attention, [dir="rtl"] .rst-content div.deprecated.admonition-warning, [dir="rtl"] .rst-content div.deprecated.admonition-caution, [dir="rtl"] .rst-content div.deprecated.admonition-attention, [dir="rtl"] .rst-content div.alert.warning, [dir="rtl"] .rst-content div.alert.caution, [dir="rtl"] .rst-content div.alert.attention, [dir="rtl"] .rst-content div.alert.admonition-warning, [dir="rtl"] .rst-content div.alert.admonition-caution, [dir="rtl"] .rst-content div.alert.admonition-attention { + border-right-color: #FF9200; +} + +.rst-content .admonition.warning .admonition-title, .rst-content .admonition.warning.deprecated .versionmodified.deprecated, .rst-content .admonition.caution .admonition-title, .rst-content .admonition.caution.deprecated .versionmodified.deprecated, .rst-content .admonition.attention .admonition-title, .rst-content .admonition.attention.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-warning .admonition-title, .rst-content .admonition.admonition-warning.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-caution .admonition-title, .rst-content .admonition.admonition-caution.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-attention .admonition-title, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated, .rst-content div.deprecated.warning .admonition-title, .rst-content div.deprecated.warning.deprecated .versionmodified.deprecated, .rst-content div.deprecated.caution .admonition-title, .rst-content div.deprecated.caution.deprecated .versionmodified.deprecated, .rst-content div.deprecated.attention .admonition-title, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-warning .admonition-title, .rst-content div.deprecated.admonition-warning.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-caution .admonition-title, .rst-content div.deprecated.admonition-caution.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-attention .admonition-title, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated, .rst-content div.alert.warning .admonition-title, .rst-content div.alert.warning.deprecated .versionmodified.deprecated, .rst-content div.alert.caution .admonition-title, .rst-content div.alert.caution.deprecated .versionmodified.deprecated, .rst-content div.alert.attention .admonition-title, .rst-content div.alert.attention.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-warning .admonition-title, .rst-content div.alert.admonition-warning.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-caution .admonition-title, .rst-content div.alert.admonition-caution.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-attention .admonition-title, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated { + background-color: #FF9200; + border-left-color: #FF9200; + color: white; +} + +[dir="rtl"] .rst-content .admonition.warning .admonition-title, [dir="rtl"] .rst-content .admonition.warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.caution .admonition-title, [dir="rtl"] .rst-content .admonition.caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.attention .admonition-title, [dir="rtl"] .rst-content .admonition.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-warning .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-caution .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-attention .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.warning .admonition-title, [dir="rtl"] .rst-content div.deprecated.warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.caution .admonition-title, [dir="rtl"] .rst-content div.deprecated.caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.attention .admonition-title, [dir="rtl"] .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-warning .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-caution .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-attention .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.warning .admonition-title, [dir="rtl"] .rst-content div.alert.warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.caution .admonition-title, [dir="rtl"] .rst-content div.alert.caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.attention .admonition-title, [dir="rtl"] .rst-content div.alert.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-warning .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-caution .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-caution.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-attention .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated { + border-right-color: #FF9200; +} + +.rst-content .admonition.warning .admonition-title::before, .rst-content .admonition.warning.deprecated .versionmodified.deprecated::before, .rst-content .admonition.caution .admonition-title::before, .rst-content .admonition.caution.deprecated .versionmodified.deprecated::before, .rst-content .admonition.attention .admonition-title::before, .rst-content .admonition.attention.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-warning .admonition-title::before, .rst-content .admonition.admonition-warning.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-caution .admonition-title::before, .rst-content .admonition.admonition-caution.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-attention .admonition-title::before, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.warning .admonition-title::before, .rst-content div.deprecated.warning.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.caution .admonition-title::before, .rst-content div.deprecated.caution.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.attention .admonition-title::before, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-warning .admonition-title::before, .rst-content div.deprecated.admonition-warning.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-caution .admonition-title::before, .rst-content div.deprecated.admonition-caution.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-attention .admonition-title::before, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content div.alert.warning .admonition-title::before, .rst-content div.alert.warning.deprecated .versionmodified.deprecated::before, .rst-content div.alert.caution .admonition-title::before, .rst-content div.alert.caution.deprecated .versionmodified.deprecated::before, .rst-content div.alert.attention .admonition-title::before, .rst-content div.alert.attention.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-warning .admonition-title::before, .rst-content div.alert.admonition-warning.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-caution .admonition-title::before, .rst-content div.alert.admonition-caution.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-attention .admonition-title::before, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.warning .admonition-title strong, .rst-content .admonition.warning.deprecated .versionmodified.deprecated strong, .rst-content .admonition.caution .admonition-title strong, .rst-content .admonition.caution.deprecated .versionmodified.deprecated strong, .rst-content .admonition.attention .admonition-title strong, .rst-content .admonition.attention.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-warning .admonition-title strong, .rst-content .admonition.admonition-warning.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-caution .admonition-title strong, .rst-content .admonition.admonition-caution.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-attention .admonition-title strong, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.warning .admonition-title strong, .rst-content div.deprecated.warning.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.caution .admonition-title strong, .rst-content div.deprecated.caution.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.attention .admonition-title strong, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-warning .admonition-title strong, .rst-content div.deprecated.admonition-warning.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-caution .admonition-title strong, .rst-content div.deprecated.admonition-caution.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-attention .admonition-title strong, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content div.alert.warning .admonition-title strong, .rst-content div.alert.warning.deprecated .versionmodified.deprecated strong, .rst-content div.alert.caution .admonition-title strong, .rst-content div.alert.caution.deprecated .versionmodified.deprecated strong, .rst-content div.alert.attention .admonition-title strong, .rst-content div.alert.attention.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-warning .admonition-title strong, .rst-content div.alert.admonition-warning.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-caution .admonition-title strong, .rst-content div.alert.admonition-caution.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-attention .admonition-title strong, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.attention, .rst-content .admonition.admonition-attention, .rst-content .admonition.alert-warning, .rst-content div.deprecated.attention, .rst-content div.deprecated.admonition-attention, .rst-content div.deprecated.alert-warning, .rst-content div.alert.attention, .rst-content div.alert.admonition-attention, .rst-content div.alert.alert-warning { + border-left-color: #FF9200; + background-color: rgba(255, 146, 0, 0.1); +} + +[dir="rtl"] .rst-content .admonition.attention, [dir="rtl"] .rst-content .admonition.admonition-attention, [dir="rtl"] .rst-content .admonition.alert-warning, [dir="rtl"] .rst-content div.deprecated.attention, [dir="rtl"] .rst-content div.deprecated.admonition-attention, [dir="rtl"] .rst-content div.deprecated.alert-warning, [dir="rtl"] .rst-content div.alert.attention, [dir="rtl"] .rst-content div.alert.admonition-attention, [dir="rtl"] .rst-content div.alert.alert-warning { + border-right-color: #FF9200; +} + +.rst-content .admonition.attention .admonition-title, .rst-content .admonition.attention.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-attention .admonition-title, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated, .rst-content .admonition.alert-warning .admonition-title, .rst-content .admonition.alert-warning.deprecated .versionmodified.deprecated, .rst-content div.deprecated.attention .admonition-title, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-attention .admonition-title, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated, .rst-content div.deprecated.alert-warning .admonition-title, .rst-content div.deprecated.alert-warning.deprecated .versionmodified.deprecated, .rst-content div.alert.attention .admonition-title, .rst-content div.alert.attention.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-attention .admonition-title, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated, .rst-content div.alert.alert-warning .admonition-title, .rst-content div.alert.alert-warning.deprecated .versionmodified.deprecated { + background-color: #FF9200; + border-left-color: #FF9200; + color: white; +} + +[dir="rtl"] .rst-content .admonition.attention .admonition-title, [dir="rtl"] .rst-content .admonition.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-attention .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.alert-warning .admonition-title, [dir="rtl"] .rst-content .admonition.alert-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.attention .admonition-title, [dir="rtl"] .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-attention .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.alert-warning .admonition-title, [dir="rtl"] .rst-content div.deprecated.alert-warning.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.attention .admonition-title, [dir="rtl"] .rst-content div.alert.attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-attention .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.alert-warning .admonition-title, [dir="rtl"] .rst-content div.alert.alert-warning.deprecated .versionmodified.deprecated { + border-right-color: #FF9200; +} + +.rst-content .admonition.attention .admonition-title::before, .rst-content .admonition.attention.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-attention .admonition-title::before, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content .admonition.alert-warning .admonition-title::before, .rst-content .admonition.alert-warning.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.attention .admonition-title::before, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-attention .admonition-title::before, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.alert-warning .admonition-title::before, .rst-content div.deprecated.alert-warning.deprecated .versionmodified.deprecated::before, .rst-content div.alert.attention .admonition-title::before, .rst-content div.alert.attention.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-attention .admonition-title::before, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated::before, .rst-content div.alert.alert-warning .admonition-title::before, .rst-content div.alert.alert-warning.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.attention .admonition-title strong, .rst-content .admonition.attention.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-attention .admonition-title strong, .rst-content .admonition.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content .admonition.alert-warning .admonition-title strong, .rst-content .admonition.alert-warning.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.attention .admonition-title strong, .rst-content div.deprecated.attention.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-attention .admonition-title strong, .rst-content div.deprecated.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.alert-warning .admonition-title strong, .rst-content div.deprecated.alert-warning.deprecated .versionmodified.deprecated strong, .rst-content div.alert.attention .admonition-title strong, .rst-content div.alert.attention.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-attention .admonition-title strong, .rst-content div.alert.admonition-attention.deprecated .versionmodified.deprecated strong, .rst-content div.alert.alert-warning .admonition-title strong, .rst-content div.alert.alert-warning.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.error, .rst-content .admonition.admonition-failure, .rst-content .admonition.admonition-fail, .rst-content .admonition.admonition-missing, .rst-content .admonition.admonition-error, .rst-content div.deprecated.error, .rst-content div.deprecated.admonition-failure, .rst-content div.deprecated.admonition-fail, .rst-content div.deprecated.admonition-missing, .rst-content div.deprecated.admonition-error, .rst-content div.alert.error, .rst-content div.alert.admonition-failure, .rst-content div.alert.admonition-fail, .rst-content div.alert.admonition-missing, .rst-content div.alert.admonition-error { + border-left-color: #F45F4B; + background-color: rgba(244, 95, 75, 0.1); +} + +[dir="rtl"] .rst-content .admonition.error, [dir="rtl"] .rst-content .admonition.admonition-failure, [dir="rtl"] .rst-content .admonition.admonition-fail, [dir="rtl"] .rst-content .admonition.admonition-missing, [dir="rtl"] .rst-content .admonition.admonition-error, [dir="rtl"] .rst-content div.deprecated.error, [dir="rtl"] .rst-content div.deprecated.admonition-failure, [dir="rtl"] .rst-content div.deprecated.admonition-fail, [dir="rtl"] .rst-content div.deprecated.admonition-missing, [dir="rtl"] .rst-content div.deprecated.admonition-error, [dir="rtl"] .rst-content div.alert.error, [dir="rtl"] .rst-content div.alert.admonition-failure, [dir="rtl"] .rst-content div.alert.admonition-fail, [dir="rtl"] .rst-content div.alert.admonition-missing, [dir="rtl"] .rst-content div.alert.admonition-error { + border-right-color: #F45F4B; +} + +.rst-content .admonition.error .admonition-title, .rst-content .admonition.error.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-failure .admonition-title, .rst-content .admonition.admonition-failure.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-fail .admonition-title, .rst-content .admonition.admonition-fail.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-missing .admonition-title, .rst-content .admonition.admonition-missing.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-error .admonition-title, .rst-content .admonition.admonition-error.deprecated .versionmodified.deprecated, .rst-content div.deprecated.error .admonition-title, .rst-content div.deprecated.error.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-failure .admonition-title, .rst-content div.deprecated.admonition-failure.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-fail .admonition-title, .rst-content div.deprecated.admonition-fail.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-missing .admonition-title, .rst-content div.deprecated.admonition-missing.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-error .admonition-title, .rst-content div.deprecated.admonition-error.deprecated .versionmodified.deprecated, .rst-content div.alert.error .admonition-title, .rst-content div.alert.error.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-failure .admonition-title, .rst-content div.alert.admonition-failure.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-fail .admonition-title, .rst-content div.alert.admonition-fail.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-missing .admonition-title, .rst-content div.alert.admonition-missing.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-error .admonition-title, .rst-content div.alert.admonition-error.deprecated .versionmodified.deprecated { + background-color: #F45F4B; + border-left-color: #F45F4B; + color: white; +} + +[dir="rtl"] .rst-content .admonition.error .admonition-title, [dir="rtl"] .rst-content .admonition.error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-failure .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-failure.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-fail .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-fail.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-missing .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-missing.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-error .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.error .admonition-title, [dir="rtl"] .rst-content div.deprecated.error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-failure .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-failure.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-fail .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-fail.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-missing .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-missing.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-error .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.error .admonition-title, [dir="rtl"] .rst-content div.alert.error.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-failure .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-failure.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-fail .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-fail.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-missing .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-missing.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-error .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-error.deprecated .versionmodified.deprecated { + border-right-color: #F45F4B; +} + +.rst-content .admonition.error .admonition-title::before, .rst-content .admonition.error.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-failure .admonition-title::before, .rst-content .admonition.admonition-failure.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-fail .admonition-title::before, .rst-content .admonition.admonition-fail.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-missing .admonition-title::before, .rst-content .admonition.admonition-missing.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-error .admonition-title::before, .rst-content .admonition.admonition-error.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.error .admonition-title::before, .rst-content div.deprecated.error.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-failure .admonition-title::before, .rst-content div.deprecated.admonition-failure.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-fail .admonition-title::before, .rst-content div.deprecated.admonition-fail.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-missing .admonition-title::before, .rst-content div.deprecated.admonition-missing.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-error .admonition-title::before, .rst-content div.deprecated.admonition-error.deprecated .versionmodified.deprecated::before, .rst-content div.alert.error .admonition-title::before, .rst-content div.alert.error.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-failure .admonition-title::before, .rst-content div.alert.admonition-failure.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-fail .admonition-title::before, .rst-content div.alert.admonition-fail.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-missing .admonition-title::before, .rst-content div.alert.admonition-missing.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-error .admonition-title::before, .rst-content div.alert.admonition-error.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.error .admonition-title strong, .rst-content .admonition.error.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-failure .admonition-title strong, .rst-content .admonition.admonition-failure.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-fail .admonition-title strong, .rst-content .admonition.admonition-fail.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-missing .admonition-title strong, .rst-content .admonition.admonition-missing.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-error .admonition-title strong, .rst-content .admonition.admonition-error.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.error .admonition-title strong, .rst-content div.deprecated.error.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-failure .admonition-title strong, .rst-content div.deprecated.admonition-failure.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-fail .admonition-title strong, .rst-content div.deprecated.admonition-fail.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-missing .admonition-title strong, .rst-content div.deprecated.admonition-missing.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-error .admonition-title strong, .rst-content div.deprecated.admonition-error.deprecated .versionmodified.deprecated strong, .rst-content div.alert.error .admonition-title strong, .rst-content div.alert.error.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-failure .admonition-title strong, .rst-content div.alert.admonition-failure.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-fail .admonition-title strong, .rst-content div.alert.admonition-fail.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-missing .admonition-title strong, .rst-content div.alert.admonition-missing.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-error .admonition-title strong, .rst-content div.alert.admonition-error.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.danger, .rst-content .admonition.admonition-danger, .rst-content .admonition.alert-danger, .rst-content div.deprecated.danger, .rst-content div.deprecated.admonition-danger, .rst-content div.deprecated.alert-danger, .rst-content div.alert.danger, .rst-content div.alert.admonition-danger, .rst-content div.alert.alert-danger { + border-left-color: #F45F4B; + background-color: rgba(244, 95, 75, 0.1); +} + +[dir="rtl"] .rst-content .admonition.danger, [dir="rtl"] .rst-content .admonition.admonition-danger, [dir="rtl"] .rst-content .admonition.alert-danger, [dir="rtl"] .rst-content div.deprecated.danger, [dir="rtl"] .rst-content div.deprecated.admonition-danger, [dir="rtl"] .rst-content div.deprecated.alert-danger, [dir="rtl"] .rst-content div.alert.danger, [dir="rtl"] .rst-content div.alert.admonition-danger, [dir="rtl"] .rst-content div.alert.alert-danger { + border-right-color: #F45F4B; +} + +.rst-content .admonition.danger .admonition-title, .rst-content .admonition.danger.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-danger .admonition-title, .rst-content .admonition.admonition-danger.deprecated .versionmodified.deprecated, .rst-content .admonition.alert-danger .admonition-title, .rst-content .admonition.alert-danger.deprecated .versionmodified.deprecated, .rst-content div.deprecated.danger .admonition-title, .rst-content div.deprecated.danger.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-danger .admonition-title, .rst-content div.deprecated.admonition-danger.deprecated .versionmodified.deprecated, .rst-content div.deprecated.alert-danger .admonition-title, .rst-content div.deprecated.alert-danger.deprecated .versionmodified.deprecated, .rst-content div.alert.danger .admonition-title, .rst-content div.alert.danger.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-danger .admonition-title, .rst-content div.alert.admonition-danger.deprecated .versionmodified.deprecated, .rst-content div.alert.alert-danger .admonition-title, .rst-content div.alert.alert-danger.deprecated .versionmodified.deprecated { + background-color: #F45F4B; + border-left-color: #F45F4B; + color: white; +} + +[dir="rtl"] .rst-content .admonition.danger .admonition-title, [dir="rtl"] .rst-content .admonition.danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-danger .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.alert-danger .admonition-title, [dir="rtl"] .rst-content .admonition.alert-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.danger .admonition-title, [dir="rtl"] .rst-content div.deprecated.danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-danger .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.alert-danger .admonition-title, [dir="rtl"] .rst-content div.deprecated.alert-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.danger .admonition-title, [dir="rtl"] .rst-content div.alert.danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-danger .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-danger.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.alert-danger .admonition-title, [dir="rtl"] .rst-content div.alert.alert-danger.deprecated .versionmodified.deprecated { + border-right-color: #F45F4B; +} + +.rst-content .admonition.danger .admonition-title::before, .rst-content .admonition.danger.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-danger .admonition-title::before, .rst-content .admonition.admonition-danger.deprecated .versionmodified.deprecated::before, .rst-content .admonition.alert-danger .admonition-title::before, .rst-content .admonition.alert-danger.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.danger .admonition-title::before, .rst-content div.deprecated.danger.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-danger .admonition-title::before, .rst-content div.deprecated.admonition-danger.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.alert-danger .admonition-title::before, .rst-content div.deprecated.alert-danger.deprecated .versionmodified.deprecated::before, .rst-content div.alert.danger .admonition-title::before, .rst-content div.alert.danger.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-danger .admonition-title::before, .rst-content div.alert.admonition-danger.deprecated .versionmodified.deprecated::before, .rst-content div.alert.alert-danger .admonition-title::before, .rst-content div.alert.alert-danger.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.danger .admonition-title strong, .rst-content .admonition.danger.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-danger .admonition-title strong, .rst-content .admonition.admonition-danger.deprecated .versionmodified.deprecated strong, .rst-content .admonition.alert-danger .admonition-title strong, .rst-content .admonition.alert-danger.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.danger .admonition-title strong, .rst-content div.deprecated.danger.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-danger .admonition-title strong, .rst-content div.deprecated.admonition-danger.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.alert-danger .admonition-title strong, .rst-content div.deprecated.alert-danger.deprecated .versionmodified.deprecated strong, .rst-content div.alert.danger .admonition-title strong, .rst-content div.alert.danger.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-danger .admonition-title strong, .rst-content div.alert.admonition-danger.deprecated .versionmodified.deprecated strong, .rst-content div.alert.alert-danger .admonition-title strong, .rst-content div.alert.alert-danger.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.admonition-bug, .rst-content div.deprecated.admonition-bug, .rst-content div.alert.admonition-bug { + border-left-color: #b86bff; + background-color: rgba(184, 107, 255, 0.1); +} + +[dir="rtl"] .rst-content .admonition.admonition-bug, [dir="rtl"] .rst-content div.deprecated.admonition-bug, [dir="rtl"] .rst-content div.alert.admonition-bug { + border-right-color: #b86bff; +} + +.rst-content .admonition.admonition-bug .admonition-title, .rst-content .admonition.admonition-bug.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-bug .admonition-title, .rst-content div.deprecated.admonition-bug.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-bug .admonition-title, .rst-content div.alert.admonition-bug.deprecated .versionmodified.deprecated { + background-color: #b86bff; + border-left-color: #b86bff; + color: white; +} + +[dir="rtl"] .rst-content .admonition.admonition-bug .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-bug.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-bug .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-bug.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-bug .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-bug.deprecated .versionmodified.deprecated { + border-right-color: #b86bff; +} + +.rst-content .admonition.admonition-bug .admonition-title::before, .rst-content .admonition.admonition-bug.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-bug .admonition-title::before, .rst-content div.deprecated.admonition-bug.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-bug .admonition-title::before, .rst-content div.alert.admonition-bug.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.admonition-bug .admonition-title strong, .rst-content .admonition.admonition-bug.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-bug .admonition-title strong, .rst-content div.deprecated.admonition-bug.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-bug .admonition-title strong, .rst-content div.alert.admonition-bug.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.admonition-example, .rst-content div.deprecated.admonition-example, .rst-content div.alert.admonition-example { + border-left-color: #007ee7; + background-color: rgba(0, 126, 231, 0.1); +} + +[dir="rtl"] .rst-content .admonition.admonition-example, [dir="rtl"] .rst-content div.deprecated.admonition-example, [dir="rtl"] .rst-content div.alert.admonition-example { + border-right-color: #007ee7; +} + +.rst-content .admonition.admonition-example .admonition-title, .rst-content .admonition.admonition-example.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-example .admonition-title, .rst-content div.deprecated.admonition-example.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-example .admonition-title, .rst-content div.alert.admonition-example.deprecated .versionmodified.deprecated { + background-color: #007ee7; + border-left-color: #007ee7; + color: white; +} + +[dir="rtl"] .rst-content .admonition.admonition-example .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-example.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-example .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-example.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-example .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-example.deprecated .versionmodified.deprecated { + border-right-color: #007ee7; +} + +.rst-content .admonition.admonition-example .admonition-title::before, .rst-content .admonition.admonition-example.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-example .admonition-title::before, .rst-content div.deprecated.admonition-example.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-example .admonition-title::before, .rst-content div.alert.admonition-example.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.admonition-example .admonition-title strong, .rst-content .admonition.admonition-example.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-example .admonition-title strong, .rst-content div.deprecated.admonition-example.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-example .admonition-title strong, .rst-content div.alert.admonition-example.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.admonition-quote, .rst-content .admonition.admonition-cite, .rst-content div.deprecated.admonition-quote, .rst-content div.deprecated.admonition-cite, .rst-content div.alert.admonition-quote, .rst-content div.alert.admonition-cite { + border-left-color: #808080; + background-color: rgba(128, 128, 128, 0.1); +} + +[dir="rtl"] .rst-content .admonition.admonition-quote, [dir="rtl"] .rst-content .admonition.admonition-cite, [dir="rtl"] .rst-content div.deprecated.admonition-quote, [dir="rtl"] .rst-content div.deprecated.admonition-cite, [dir="rtl"] .rst-content div.alert.admonition-quote, [dir="rtl"] .rst-content div.alert.admonition-cite { + border-right-color: #808080; +} + +.rst-content .admonition.admonition-quote .admonition-title, .rst-content .admonition.admonition-quote.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-cite .admonition-title, .rst-content .admonition.admonition-cite.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-quote .admonition-title, .rst-content div.deprecated.admonition-quote.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-cite .admonition-title, .rst-content div.deprecated.admonition-cite.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-quote .admonition-title, .rst-content div.alert.admonition-quote.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-cite .admonition-title, .rst-content div.alert.admonition-cite.deprecated .versionmodified.deprecated { + background-color: #808080; + border-left-color: #808080; + color: white; +} + +[dir="rtl"] .rst-content .admonition.admonition-quote .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-quote.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-cite .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-cite.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-quote .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-quote.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-cite .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-cite.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-quote .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-quote.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-cite .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-cite.deprecated .versionmodified.deprecated { + border-right-color: #808080; +} + +.rst-content .admonition.admonition-quote .admonition-title::before, .rst-content .admonition.admonition-quote.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-cite .admonition-title::before, .rst-content .admonition.admonition-cite.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-quote .admonition-title::before, .rst-content div.deprecated.admonition-quote.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-cite .admonition-title::before, .rst-content div.deprecated.admonition-cite.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-quote .admonition-title::before, .rst-content div.alert.admonition-quote.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-cite .admonition-title::before, .rst-content div.alert.admonition-cite.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.admonition-quote .admonition-title strong, .rst-content .admonition.admonition-quote.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-cite .admonition-title strong, .rst-content .admonition.admonition-cite.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-quote .admonition-title strong, .rst-content div.deprecated.admonition-quote.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-cite .admonition-title strong, .rst-content div.deprecated.admonition-cite.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-quote .admonition-title strong, .rst-content div.alert.admonition-quote.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-cite .admonition-title strong, .rst-content div.alert.admonition-cite.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.deprecated, .rst-content .admonition.admonition-deprecated, .rst-content div.deprecated.deprecated, .rst-content div.deprecated.admonition-deprecated, .rst-content div.alert.deprecated, .rst-content div.alert.admonition-deprecated { + border-left-color: #808080; + background-color: rgba(128, 128, 128, 0.1); +} + +[dir="rtl"] .rst-content .admonition.deprecated, [dir="rtl"] .rst-content .admonition.admonition-deprecated, [dir="rtl"] .rst-content div.deprecated.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-deprecated, [dir="rtl"] .rst-content div.alert.deprecated, [dir="rtl"] .rst-content div.alert.admonition-deprecated { + border-right-color: #808080; +} + +.rst-content .admonition.deprecated .admonition-title, .rst-content .admonition.deprecated.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-deprecated .admonition-title, .rst-content .admonition.admonition-deprecated.deprecated .versionmodified.deprecated, .rst-content div.deprecated.deprecated .admonition-title, .rst-content div.deprecated.deprecated.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-deprecated .admonition-title, .rst-content div.deprecated.admonition-deprecated.deprecated .versionmodified.deprecated, .rst-content div.alert.deprecated .admonition-title, .rst-content div.alert.deprecated.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-deprecated .admonition-title, .rst-content div.alert.admonition-deprecated.deprecated .versionmodified.deprecated { + background-color: #808080; + border-left-color: #808080; + color: white; +} + +[dir="rtl"] .rst-content .admonition.deprecated .admonition-title, [dir="rtl"] .rst-content .admonition.deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-deprecated .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.deprecated .admonition-title, [dir="rtl"] .rst-content div.deprecated.deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-deprecated .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.deprecated .admonition-title, [dir="rtl"] .rst-content div.alert.deprecated.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-deprecated .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-deprecated.deprecated .versionmodified.deprecated { + border-right-color: #808080; +} + +.rst-content .admonition.deprecated .admonition-title::before, .rst-content .admonition.deprecated.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-deprecated .admonition-title::before, .rst-content .admonition.admonition-deprecated.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.deprecated .admonition-title::before, .rst-content div.deprecated.deprecated.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-deprecated .admonition-title::before, .rst-content div.deprecated.admonition-deprecated.deprecated .versionmodified.deprecated::before, .rst-content div.alert.deprecated .admonition-title::before, .rst-content div.alert.deprecated.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-deprecated .admonition-title::before, .rst-content div.alert.admonition-deprecated.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.deprecated .admonition-title strong, .rst-content .admonition.deprecated.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-deprecated .admonition-title strong, .rst-content .admonition.admonition-deprecated.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.deprecated .admonition-title strong, .rst-content div.deprecated.deprecated.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-deprecated .admonition-title strong, .rst-content div.deprecated.admonition-deprecated.deprecated .versionmodified.deprecated strong, .rst-content div.alert.deprecated .admonition-title strong, .rst-content div.alert.deprecated.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-deprecated .admonition-title strong, .rst-content div.alert.admonition-deprecated.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content .admonition.experimental, .rst-content .admonition.admonition-experimental, .rst-content .admonition.admonition-experiment, .rst-content .admonition.admonition-experiments, .rst-content div.deprecated.experimental, .rst-content div.deprecated.admonition-experimental, .rst-content div.deprecated.admonition-experiment, .rst-content div.deprecated.admonition-experiments, .rst-content div.alert.experimental, .rst-content div.alert.admonition-experimental, .rst-content div.alert.admonition-experiment, .rst-content div.alert.admonition-experiments { + border-left-color: #FF9200; + background-color: rgba(255, 146, 0, 0.1); +} + +[dir="rtl"] .rst-content .admonition.experimental, [dir="rtl"] .rst-content .admonition.admonition-experimental, [dir="rtl"] .rst-content .admonition.admonition-experiment, [dir="rtl"] .rst-content .admonition.admonition-experiments, [dir="rtl"] .rst-content div.deprecated.experimental, [dir="rtl"] .rst-content div.deprecated.admonition-experimental, [dir="rtl"] .rst-content div.deprecated.admonition-experiment, [dir="rtl"] .rst-content div.deprecated.admonition-experiments, [dir="rtl"] .rst-content div.alert.experimental, [dir="rtl"] .rst-content div.alert.admonition-experimental, [dir="rtl"] .rst-content div.alert.admonition-experiment, [dir="rtl"] .rst-content div.alert.admonition-experiments { + border-right-color: #FF9200; +} + +.rst-content .admonition.experimental .admonition-title, .rst-content .admonition.experimental.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-experimental .admonition-title, .rst-content .admonition.admonition-experimental.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-experiment .admonition-title, .rst-content .admonition.admonition-experiment.deprecated .versionmodified.deprecated, .rst-content .admonition.admonition-experiments .admonition-title, .rst-content .admonition.admonition-experiments.deprecated .versionmodified.deprecated, .rst-content div.deprecated.experimental .admonition-title, .rst-content div.deprecated.experimental.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-experimental .admonition-title, .rst-content div.deprecated.admonition-experimental.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-experiment .admonition-title, .rst-content div.deprecated.admonition-experiment.deprecated .versionmodified.deprecated, .rst-content div.deprecated.admonition-experiments .admonition-title, .rst-content div.deprecated.admonition-experiments.deprecated .versionmodified.deprecated, .rst-content div.alert.experimental .admonition-title, .rst-content div.alert.experimental.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-experimental .admonition-title, .rst-content div.alert.admonition-experimental.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-experiment .admonition-title, .rst-content div.alert.admonition-experiment.deprecated .versionmodified.deprecated, .rst-content div.alert.admonition-experiments .admonition-title, .rst-content div.alert.admonition-experiments.deprecated .versionmodified.deprecated { + background-color: #FF9200; + border-left-color: #FF9200; + color: white; +} + +[dir="rtl"] .rst-content .admonition.experimental .admonition-title, [dir="rtl"] .rst-content .admonition.experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-experimental .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-experiment .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-experiment.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content .admonition.admonition-experiments .admonition-title, [dir="rtl"] .rst-content .admonition.admonition-experiments.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.experimental .admonition-title, [dir="rtl"] .rst-content div.deprecated.experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-experimental .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-experiment .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-experiment.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.deprecated.admonition-experiments .admonition-title, [dir="rtl"] .rst-content div.deprecated.admonition-experiments.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.experimental .admonition-title, [dir="rtl"] .rst-content div.alert.experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-experimental .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-experimental.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-experiment .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-experiment.deprecated .versionmodified.deprecated, [dir="rtl"] .rst-content div.alert.admonition-experiments .admonition-title, [dir="rtl"] .rst-content div.alert.admonition-experiments.deprecated .versionmodified.deprecated { + border-right-color: #FF9200; +} + +.rst-content .admonition.experimental .admonition-title::before, .rst-content .admonition.experimental.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-experimental .admonition-title::before, .rst-content .admonition.admonition-experimental.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-experiment .admonition-title::before, .rst-content .admonition.admonition-experiment.deprecated .versionmodified.deprecated::before, .rst-content .admonition.admonition-experiments .admonition-title::before, .rst-content .admonition.admonition-experiments.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.experimental .admonition-title::before, .rst-content div.deprecated.experimental.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-experimental .admonition-title::before, .rst-content div.deprecated.admonition-experimental.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-experiment .admonition-title::before, .rst-content div.deprecated.admonition-experiment.deprecated .versionmodified.deprecated::before, .rst-content div.deprecated.admonition-experiments .admonition-title::before, .rst-content div.deprecated.admonition-experiments.deprecated .versionmodified.deprecated::before, .rst-content div.alert.experimental .admonition-title::before, .rst-content div.alert.experimental.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-experimental .admonition-title::before, .rst-content div.alert.admonition-experimental.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-experiment .admonition-title::before, .rst-content div.alert.admonition-experiment.deprecated .versionmodified.deprecated::before, .rst-content div.alert.admonition-experiments .admonition-title::before, .rst-content div.alert.admonition-experiments.deprecated .versionmodified.deprecated::before { + color: white; + font-family: "FontAwesome"; + content: ""; +} + +.rst-content .admonition.experimental .admonition-title strong, .rst-content .admonition.experimental.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-experimental .admonition-title strong, .rst-content .admonition.admonition-experimental.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-experiment .admonition-title strong, .rst-content .admonition.admonition-experiment.deprecated .versionmodified.deprecated strong, .rst-content .admonition.admonition-experiments .admonition-title strong, .rst-content .admonition.admonition-experiments.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.experimental .admonition-title strong, .rst-content div.deprecated.experimental.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-experimental .admonition-title strong, .rst-content div.deprecated.admonition-experimental.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-experiment .admonition-title strong, .rst-content div.deprecated.admonition-experiment.deprecated .versionmodified.deprecated strong, .rst-content div.deprecated.admonition-experiments .admonition-title strong, .rst-content div.deprecated.admonition-experiments.deprecated .versionmodified.deprecated strong, .rst-content div.alert.experimental .admonition-title strong, .rst-content div.alert.experimental.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-experimental .admonition-title strong, .rst-content div.alert.admonition-experimental.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-experiment .admonition-title strong, .rst-content div.alert.admonition-experiment.deprecated .versionmodified.deprecated strong, .rst-content div.alert.admonition-experiments .admonition-title strong, .rst-content div.alert.admonition-experiments.deprecated .versionmodified.deprecated strong { + color: white; +} + +.rst-content div.deprecated > p { + margin-top: 0; + max-width: unset; +} + +.rst-content .versionmodified.deprecated { + display: block; + margin: 0 -0.75rem 0.75rem -1rem; +} + +.rst-content .admonition-title { + margin: 0 -0.75rem 0 -1rem; +} + +.rst-content .admonition-title, .rst-content .versionmodified.deprecated { + position: relative; + padding: 0.5rem 0.75rem 0.5rem 2.5rem; + font-weight: 700; + background-color: #ca6500; + border-left: 0.25rem solid #ca6500; +} + +[dir="rtl"] .rst-content .admonition-title, [dir="rtl"] .rst-content .versionmodified.deprecated { + margin: 0 -1rem 0 -0.75rem; + padding: 0.5rem 2.5rem 0.5rem 0.75rem; + border-right: 0.25rem solid #ca6500; + border-left: none; +} + +html .rst-content .admonition-title:last-child.admonition-title, html .rst-content .versionmodified.deprecated:last-child.admonition-title { + margin-bottom: 0; +} + +html .rst-content .admonition-title:last-child.versionmodified.deprecated, html .rst-content .versionmodified.deprecated:last-child.versionmodified.deprecated { + margin-bottom: -1rem; +} + +.rst-content .admonition-title::before, .rst-content .versionmodified.deprecated::before { + position: absolute; + left: 0.75rem; + width: 1.25rem; + height: 1.25rem; + font-family: "FontAwesome"; + content: "\f12a"; +} + +[dir="rtl"] .rst-content .admonition-title::before, [dir="rtl"] .rst-content .versionmodified.deprecated::before { + right: 0.75rem; + left: initial; +} + +.rst-content .admonition-title + .tabbed-set:last-child, .rst-content .versionmodified.deprecated + .tabbed-set:last-child { + margin-top: 0; +} + +@media screen and (max-width: 768px) { + .rst-content { + width: 96vw; + margin-left: 2vw; + margin-right: 2vw; + } +} + +@media screen and (min-width: 769px) and (max-width: 1023px) { + .rst-content { + margin-left: 2vw; + } +} + +@media screen and (min-width: 1024px) { + .rst-content { + max-width: 42.5rem; + margin: auto; + } +} + +header, .navbar.is-primary.has-shadow { + box-shadow: 0 2px 3px 0 #FF9200; +} + +.navbar.is-fixed-bottom, .navbar.is-fixed-top { + height: 4rem; +} + +.navbar.is-fixed-bottom .navbar-item img, .navbar.is-fixed-top .navbar-item img { + max-height: 3rem; +} + +.burger.is-light { + color: whitesmoke; +} + +@media screen and (max-width: 768px) { + .burger { + position: fixed; + top: 0; + left: 90vw; + z-index: 10; + width: 10vw; + } + .burger span:nth-child(4) { + opacity: 0%; + transition: opacity 0.5s; + background-color: black; + position: fixed; + left: 0; + top: 0; + width: 100vw; + height: 100vh; + z-index: 11; + pointer-events: none; + } + #drawer-toggle:checked { + /* show navbar-menu on phones and tablets */ + /* make navbar-burger become cross on screen less than 1024px */ + } + #drawer-toggle:checked ~ #drawer { + transform: translate(20rem, 0); + } + #drawer-toggle:checked + .burger span:nth-child(1) { + transform: translateY(5px) rotate(45deg); + } + #drawer-toggle:checked + .burger span:nth-child(2) { + opacity: 0; + } + #drawer-toggle:checked + .burger span:nth-child(3) { + transform: translateY(-5px) rotate(-45deg); + } + #drawer-toggle:checked + .burger span:nth-child(4) { + opacity: 50%; + pointer-events: auto; + } + #drawer { + left: -20rem; + transition: transform 0.5s; + width: 20rem; + max-width: 90vw; + top: 0; + height: 100vh; + background-color: #FFFFFF; + position: fixed; + display: block; + z-index: 12; + } + #drawer .ff-globaltoc { + position: unset; + } + header { + overflow-wrap: break-word; + } +} + +.has-text-light .breadcrumb a { + color: #fff; +} + +.has-text-light .breadcrumb a code { + color: #fff; + background-color: transparent; +} + +.has-text-light .breadcrumb a:hover { + color: #ffb264; +} + +.has-text-light .breadcrumb li.is-active a { + color: #ffb264; +} + +.has-text-light .breadcrumb li + li::before { + color: #fff; +} + +.clip-siblings { + background: #FFFFFF; + position: relative; +} + +.ff-localtoc, .ff-globaltoc { + position: sticky; + padding: 0.5rem; + overflow-y: auto; + top: 0; + padding-top: 4.5rem; + margin-top: -4rem; + max-height: 100vh; + -ms-overflow-style: none; + scrollbar-width: none; +} + +@media screen and (max-width: 769px) { + .ff-localtoc, .ff-globaltoc { + position: fixed; + top: 4rem; + } +} + +.ff-localtoc::-webkit-scrollbar, .ff-globaltoc::-webkit-scrollbar { + display: none; +} + +.menu { + overflow-wrap: break-word; +} + +.menu code { + background-color: transparent; + color: unset; +} + +body { + min-height: 100vh; + display: flex; + flex-direction: column; + font-family: 'PT Sans', Helvetica, Arial, 'sans-serif'; +} + +header { + z-index: 1; + background-color: #FF9200; +} + +header .nav-title { + padding-left: 0.5rem; + align-items: center; + display: inline-flex; +} + +header .navbar.is-primary .navbar-brand > a.navbar-item:hover { + background-color: #e68300; +} + +header .nav-tabs a { + color: white; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +header .nav-tabs a:hover { + color: #ca6500; +} + +header .is-hidden-tablet.nav-title { + max-width: 90vw; +} + +header .navbar > .navbar-end { + flex: none; + margin-left: auto; + margin-top: auto; + margin-bottom: auto; +} + +header .nav-search input { + transition: width 0.2s, background-color 0.2s; +} + +@media screen and (max-width: 1215px) { + header .nav-search .control { + position: relative; + height: 2.5em; + } + header .nav-search .control input { + background-color: unset; + width: 2.5em; + position: absolute; + right: 0; + } + header .nav-search .control input:hover, header .nav-search .control input:focus, header .nav-search .control input:active { + width: 15rem; + max-width: 15rem; + } + header .nav-search .control input:hover { + background-color: #cc7500; + color: white; + } + header .nav-search .control input:hover::placeholder { + color: #dbdbdb; + } + header .nav-search .control input:focus, header .nav-search .control input:active { + background-color: white; + color: #cc7500; + } + header .nav-search .control input:focus::placeholder, header .nav-search .control input:active::placeholder { + color: rgba(54, 54, 54, 0.3); + } + header .nav-search .control.has-icons-right { + padding-right: 0; + } + header .nav-search .control.has-icons-left { + padding-left: 0; + } +} + +@media screen and (min-width: 1216px) { + header .nav-search input { + background-color: #cc7500; + color: white; + } + header .nav-search input::placeholder { + color: #dbdbdb; + } + header .nav-search input:hover, header .nav-search input:focus, header .nav-search input:active { + background-color: white; + color: #cc7500; + } + header .nav-search input:hover::placeholder, header .nav-search input:focus::placeholder, header .nav-search input:active::placeholder { + color: rgba(54, 54, 54, 0.3); + } +} + +main { + padding-top: 1rem; +} + +footer { + margin-top: auto; + overflow-wrap: break-word; +} + +footer nav { + margin-bottom: 3rem !important; +} + +footer .fineprint { + font-size: 0.8em; + font-weight: 100; +} + +footer .fineprint a { + color: rgba(0, 0, 0, 0.7); + font-weight: 500; +} + +footer .fineprint a:hover { + color: #ca6500; +} + +footer .fineprint .copyright { + font-weight: 400; + margin-bottom: 1rem; +} + +footer .footer-content { + max-width: 1408px; + margin-left: auto; + margin-right: auto; +} + +@media screen and (min-width: 769px) { + footer .socials { + margin-top: auto; + text-align: right; + } +} + +footer .socials .icon { + border: solid 1px; + border-radius: 50%; +} + +.ff-localtoc a { + color: rgba(0, 0, 0, 0.87); + display: block; +} + +.ff-localtoc a:hover { + color: #ca6500; +} + +.ff-localtoc > ul { + padding-left: 0.5rem; +} + +.ff-localtoc > ul ul { + padding-top: 0.2rem; + padding-left: 1rem; + font-size: 0.9em; +} + +.ff-localtoc > ul li { + padding-bottom: 0.2rem; +} + +.ff-localtoc > ul li:last-child { + padding-bottom: 0; +} + +@media screen and (min-width: 1407px) { + main { + max-width: 1508px; + width: 100%; + margin-left: auto; + margin-right: auto; + } +} + +@media screen and (max-width: 1408px) { + .menu-list li ul { + padding-left: 0; + } +} + +a:hover:not(.is-active) code, a:hover:not(.is-active) pre { + color: #ca6500; +} + +.navbar-burger-spacer { + width: 4rem; + display: inline-block; +} + +main > .columns { + max-width: 100vw; +} + +.wy-nav-content-wrap { + background: #fcfcfc; +} + +.wy-nav-top { + background: #343131; +} + +.wy-side-nav-search { + background-color: white; +} + +.wy-side-nav-search > a { + color: #343131; +} + +.wy-side-nav-search > div.version { + color: #808080; +} + +.wy-side-nav-search input[type="text"] { + border-color: #808080; +} + +.wy-menu { + overflow-wrap: break-word; + white-space: inherit; +} + +.wy-menu .caption-text { + color: #FF9200; +} + +.wy-menu a:hover, .wy-menu a:hover:not(.is-active) code { + color: #FF9200; +} + +code { + white-space: inherit; +} + +.rst-content .guilabel { + background: #FFEBD0; + border: 1px solid #808080; +} + +.rst-content code.literal { + color: #ca6500; + background-color: #FFFFFF; +} + +.rst-content dt code.literal { + font-weight: 700; +} + +.wy-table-responsive table td { + white-space: inherit; +} + +.dataTables_wrapper.no-footer .wy-table-responsive { + overflow: unset; +} + +div[role=navigation] > .wy-breadcrumbs { + margin: 0; +} + +div[role=navigation] > .wy-breadcrumbs .breadcrumb-item { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} + diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 0000000..aae669d --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/api.html b/api.html new file mode 100644 index 0000000..c396134 --- /dev/null +++ b/api.html @@ -0,0 +1,1411 @@ + + + + + + + + + + + + + + + + + + + + + + + API Documentation — PathSimAnalysis documentation + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

API Documentation

+
+

Calculating path similarity — pathsimanalysis.psa

+
+

New in version 0.10.0.

+
+

The module contains code to calculate the geometric similarity of trajectories +using path metrics such as the Hausdorff or Fréchet distances +[1]. The path metrics are functions of two paths and return a +nonnegative number, i.e., a distance. Two paths are identical if their distance +is zero, and large distances indicate dissimilarity. Each path metric is a +function of the individual points (e.g., coordinate snapshots) that comprise +each path and, loosely speaking, identify the two points, one per path of a +pair of paths, where the paths deviate the most. The distance between these +points of maximal deviation is measured by the root mean square deviation +(RMSD), i.e., to compute structural similarity.

+

One typically computes the pairwise similarity for an ensemble of paths to +produce a symmetric distance matrix, which can be clustered to, at a glance, +identify patterns in the trajectory data. To properly analyze a path ensemble, +one must select a suitable reference structure to which all paths (each +conformer in each path) will be universally aligned using the rotations +determined by the best-fit rmsds. Distances between paths and their structures +are then computed directly with no further alignment. This pre-processing step +is necessary to preserve the metric properties of the Hausdorff and Fréchet +metrics; using the best-fit rmsd on a pairwise basis does not generally +preserve the triangle inequality.

+
+

Note

+

The PSAnalysisTutorial outlines a typical application of PSA to +a set of trajectories, including doing proper alignment, +performing distance comparisons, and generating heat +map-dendrogram plots from hierarchical clustering.

+
+
+

Helper functions and variables

+

The following convenience functions are used by other functions in this module.

+
+
+pathsimanalysis.psa.sqnorm(v, axis=None)[source]
+

Compute the sum of squares of elements along specified axes.

+
+
Parameters:
+
    +
  • v (numpy.ndarray) – coordinates

  • +
  • axes (None / int / tuple (optional)) – Axes or axes along which a sum is performed. The default +(axes = None) performs a sum over all the dimensions of +the input array. The value of axes may be negative, in +which case it counts from the last axis to the zeroth axis.

  • +
+
+
Returns:
+

the sum of the squares of the elements of v along axes

+
+
Return type:
+

float

+
+
+
+ +
+
+pathsimanalysis.psa.get_msd_matrix(P, Q, axis=None)[source]
+

Generate the matrix of pairwise mean-squared deviations between paths.

+

The MSDs between all pairs of points in P and Q are +calculated, each pair having a point from P and a point from +Q.

+

P (Q) is a numpy.ndarray of \(N_p\) (\(N_q\)) time +steps, \(N\) atoms, and \(3N\) coordinates (e.g., +MDAnalysis.core.groups.AtomGroup.positions). The pairwise MSD +matrix has dimensions \(N_p\) by \(N_q\).

+
+
Parameters:
+
    +
  • P (numpy.ndarray) – the points in the first path

  • +
  • Q (numpy.ndarray) – the points in the second path

  • +
+
+
Returns:
+

msd_matrix – matrix of pairwise MSDs between points in P and points +in Q

+
+
Return type:
+

numpy.ndarray

+
+
+

Notes

+

We calculate the MSD matrix

+
+\[M_{ij} = ||p_i - q_j||^2\]
+

where \(p_i \in P\) and \(q_j \in Q\).

+
+ +
+
+pathsimanalysis.psa.get_coord_axes(path)[source]
+

Return the number of atoms and the axes corresponding to atoms +and coordinates for a given path.

+

The path is assumed to be a numpy.ndarray where the 0th axis +corresponds to a frame (a snapshot of coordinates). The \(3N\) +(Cartesian) coordinates are assumed to be either:

+
    +
  1. all in the 1st axis, starting with the x,y,z coordinates of the +first atom, followed by the x,*y*,*z* coordinates of the 2nd, etc.

  2. +
  3. in the 1st and 2nd axis, where the 1st axis indexes the atom +number and the 2nd axis contains the x,*y*,*z* coordinates of +each atom.

  4. +
+
+
Parameters:
+

path (numpy.ndarray) – representing a path

+
+
Returns:
+

the number of atoms and the axes containing coordinates

+
+
Return type:
+

(int, (int, …))

+
+
+
+ +
+
+

Classes, methods, and functions

+
+
+pathsimanalysis.psa.get_path_metric_func(name)[source]
+

Selects a path metric function by name.

+
+
Parameters:
+

name (str) – name of path metric

+
+
Returns:
+

path_metric – The path metric function specified by name (if found).

+
+
Return type:
+

function

+
+
+
+ +
+
+pathsimanalysis.psa.hausdorff(P, Q)[source]
+

Calculate the symmetric Hausdorff distance between two paths.

+

The metric used is RMSD, as opposed to the more conventional L2 +(Euclidean) norm, because this is convenient for i.e., comparing +protein configurations.

+

P (Q) is a numpy.ndarray of \(N_p\) (\(N_q\)) time +steps, \(N\) atoms, and \(3N\) coordinates (e.g., +MDAnalysis.core.groups.AtomGroup.positions). P (Q) has +either shape \(N_p \times N \times 3\) (\(N_q \times N \times 3\)), or \(N_p \times (3N)\) (\(N_q \times (3N)\)) in flattened form.

+

Note that reversing the path does not change the Hausdorff distance.

+
+
Parameters:
+
    +
  • P (numpy.ndarray) – the points in the first path

  • +
  • Q (numpy.ndarray) – the points in the second path

  • +
+
+
Returns:
+

the Hausdorff distance between paths P and Q

+
+
Return type:
+

float

+
+
+

Example

+

Calculate the Hausdorff distance between two halves of a trajectory:

+
>>> import MDAnalysis as mda
+>>> import numpy
+>>> from MDAnalysis.tests.datafiles import PSF, DCD
+>>> import pathsimanalysis as psa
+>>> u = mda.Universe(PSF,DCD)
+>>> mid = int(len(u.trajectory)/2)
+>>> ca = u.select_atoms('name CA')
+>>> P = numpy.array([
+...                ca.positions for _ in u.trajectory[:mid:]
+...              ]) # first half of trajectory
+>>> Q = numpy.array([
+...                ca.positions for _ in u.trajectory[mid::]
+...              ]) # second half of trajectory
+>>> psa.hausdorff(P,Q)
+4.778663899862152
+>>> psa.hausdorff(P,Q[::-1]) # hausdorff distance w/ reversed 2nd trajectory
+4.778663899862152
+
+
+

Notes

+

scipy.spatial.distance.directed_hausdorff() is an optimized +implementation of the early break algorithm of [2]; the +latter code is used here to calculate the symmetric Hausdorff +distance with an RMSD metric

+
+ +
+
+pathsimanalysis.psa.hausdorff_wavg(P, Q)[source]
+

Calculate the weighted average Hausdorff distance between two paths.

+

P (Q) is a numpy.ndarray of \(N_p\) (\(N_q\)) time +steps, \(N\) atoms, and \(3N\) coordinates (e.g., +MDAnalysis.core.groups.AtomGroup.positions). P (Q) has +either shape \(N_p \times N \times 3\) (\(N_q \times N \times 3\)), or \(N_p \times (3N)\) (\(N_q \times (3N)\)) in flattened form. The nearest +neighbor distances for P (to Q) and those of Q (to P) are averaged +individually to get the average nearest neighbor distance for P and +likewise for Q. These averages are then summed and divided by 2 to get a +measure that gives equal weight to P and Q.

+
+
Parameters:
+
    +
  • P (numpy.ndarray) – the points in the first path

  • +
  • Q (numpy.ndarray) – the points in the second path

  • +
+
+
Returns:
+

the weighted average Hausdorff distance between paths P and Q

+
+
Return type:
+

float

+
+
+

Example

+
>>> import MDAnalysis as mda
+>>> from MDAnalysis import Universe
+>>> from MDAnalysis.tests.datafiles import PSF, DCD
+>>> import pathsimanalysis as psa
+>>> u = mda.Universe(PSF,DCD)
+>>> mid = int(len(u.trajectory)/2)
+>>> ca = u.select_atoms('name CA')
+>>> P = numpy.array([
+...                ca.positions for _ in u.trajectory[:mid:]
+...              ]) # first half of trajectory
+>>> Q = numpy.array([
+...                ca.positions for _ in u.trajectory[mid::]
+...              ]) # second half of trajectory
+>>> psa.hausdorff_wavg(P,Q)
+2.5669644353703447
+>>> psa.hausdorff_wavg(P,Q[::-1]) # weighted avg hausdorff dist w/ Q reversed
+2.5669644353703447
+
+
+

Notes

+

The weighted average Hausdorff distance is not a true metric (it does not +obey the triangle inequality); see [1] for further +details.

+
+ +
+
+pathsimanalysis.psa.hausdorff_avg(P, Q)[source]
+

Calculate the average Hausdorff distance between two paths.

+

P (Q) is a numpy.ndarray of \(N_p\) (\(N_q\)) time +steps, \(N\) atoms, and \(3N\) coordinates (e.g., +MDAnalysis.core.groups.AtomGroup.positions). P (Q) has +either shape \(N_p \times N \times 3\) (\(N_q \times N \times 3\)), or \(N_p \times (3N)\) (\(N_q \times (3N)\)) in flattened form. The nearest +neighbor distances for P (to Q) and those of Q (to P) are all +averaged together to get a mean nearest neighbor distance. This measure +biases the average toward the path that has more snapshots, whereas weighted +average Hausdorff gives equal weight to both paths.

+
+
Parameters:
+
    +
  • P (numpy.ndarray) – the points in the first path

  • +
  • Q (numpy.ndarray) – the points in the second path

  • +
+
+
Returns:
+

the average Hausdorff distance between paths P and Q

+
+
Return type:
+

float

+
+
+

Example

+
>>> import MDAnalysis as mda
+>>> from MDAnalysis.tests.datafiles import PSF, DCD
+>>> import pathsimanalysis as psa
+>>> u = mda.Universe(PSF,DCD)
+>>> mid = int(len(u.trajectory)/2)
+>>> ca = u.select_atoms('name CA')
+>>> P = numpy.array([
+...                ca.positions for _ in u.trajectory[:mid:]
+...              ]) # first half of trajectory
+>>> Q = numpy.array([
+...                ca.positions for _ in u.trajectory[mid::]
+...              ]) # second half of trajectory
+>>> psa.hausdorff_avg(P,Q)
+2.5669646575869005
+>>> psa.hausdorff_avg(P,Q[::-1]) # hausdorff distance w/ reversed 2nd trajectory
+2.5669646575869005
+
+
+

Notes

+

The average Hausdorff distance is not a true metric (it does not obey the +triangle inequality); see [1] for further details.

+
+ +
+
+pathsimanalysis.psa.hausdorff_neighbors(P, Q)[source]
+

Find the Hausdorff neighbors of two paths.

+

P (Q) is a numpy.ndarray of \(N_p\) (\(N_q\)) time +steps, \(N\) atoms, and \(3N\) coordinates (e.g., +MDAnalysis.core.groups.AtomGroup.positions). P (Q) has +either shape \(N_p \times N \times 3\) (\(N_q \times N \times 3\)), or \(N_p \times (3N)\) (\(N_q \times (3N)\)) in flattened form.

+
+
Parameters:
+
    +
  • P (numpy.ndarray) – the points in the first path

  • +
  • Q (numpy.ndarray) – the points in the second path

  • +
+
+
Returns:
+

dictionary of two pairs of numpy arrays, the first pair (key +“frames”) containing the indices of (Hausdorff) nearest +neighbors for P and Q, respectively, the second (key +“distances”) containing (corresponding) nearest neighbor +distances for P and Q, respectively

+
+
Return type:
+

dict

+
+
+

Notes

+
    +
  • Hausdorff neighbors are those points on the two paths that are separated by +the Hausdorff distance. They are the farthest nearest neighbors and are +maximally different in the sense of the Hausdorff distance +[1].

  • +
  • scipy.spatial.distance.directed_hausdorff() can also provide the +hausdorff neighbors.

  • +
+
+ +
+
+pathsimanalysis.psa.discrete_frechet(P, Q)[source]
+

Calculate the discrete Fréchet distance between two paths.

+

P (Q) is a numpy.ndarray of \(N_p\) (\(N_q\)) time +steps, \(N\) atoms, and \(3N\) coordinates (e.g., +MDAnalysis.core.groups.AtomGroup.positions). P (Q) has +either shape \(N_p \times N \times 3\) (\(N_q \times N \times 3\)), or :\(N_p \times (3N)\) (\(N_q \times (3N)\)) in flattened form.

+
+
Parameters:
+
    +
  • P (numpy.ndarray) – the points in the first path

  • +
  • Q (numpy.ndarray) – the points in the second path

  • +
+
+
Returns:
+

the discrete Fréchet distance between paths P and Q

+
+
Return type:
+

float

+
+
+

Example

+

Calculate the discrete Fréchet distance between two halves of a +trajectory.

+
>>> import MDAnalysis as mda
+>>> import numpy as np
+>>> from MDAnalysis.tests.datafiles import PSF, DCD
+>>> import pathsimanalysis as psa
+>>> u = mda.Universe(PSF,DCD)
+>>> mid = int(len(u.trajectory)/2)
+>>> ca = u.select_atoms('name CA')
+>>> P = np.array([
+...                ca.positions for _ in u.trajectory[:mid:]
+...              ]) # first half of trajectory
+>>> Q = np.array([
+...                ca.positions for _ in u.trajectory[mid::]
+...              ]) # second half of trajectory
+>>> psa.discrete_frechet(P,Q)
+4.778663984013591
+>>> psa.discrete_frechet(P,Q[::-1]) # frechet distance w/ 2nd trj reversed 2nd
+6.842901117711383
+
+
+

Note that reversing the direction increased the Fréchet distance: +it is sensitive to the direction of the path.

+

Notes

+

The discrete Fréchet metric is an approximation to the continuous Fréchet +metric [3][4]. The calculation of the continuous +Fréchet distance is implemented with the dynamic programming algorithm of +[5][6].

+
+ +
+
+pathsimanalysis.psa.dist_mat_to_vec(N, i, j)[source]
+

Convert distance matrix indices (in the upper triangle) to the index of +the corresponding distance vector.

+

This is a convenience function to locate distance matrix elements (and the +pair generating it) in the corresponding distance vector. The row index j +should be greater than i+1, corresponding to the upper triangle of the +distance matrix.

+
+
Parameters:
+
    +
  • N (int) – size of the distance matrix (of shape N-by-N)

  • +
  • i (int) – row index (starting at 0) of the distance matrix

  • +
  • j (int) – column index (starting at 0) of the distance matrix

  • +
+
+
Returns:
+

index (of the matrix element) in the corresponding distance vector

+
+
Return type:
+

int

+
+
+
+ +
+
+class pathsimanalysis.psa.Path(universe, reference, select='name CA', path_select='all', ref_frame=0)[source]
+

Represent a path based on a Universe.

+

Pre-process a Universe object: (1) fit the trajectory to a +reference structure, (2) convert fitted time series to a +numpy.ndarray representation of Path.path.

+

The analysis is performed with PSAnalysis.run() and stores the result +in the numpy.ndarray distance matrix PSAnalysis.D. +PSAnalysis.run() also generates a fitted trajectory and path from +alignment of the original trajectories to a reference structure.

+
+

New in version 0.9.1.

+
+
+
+u_original
+

Universe object with a trajectory

+
+ +
+
+u_reference
+

Universe object containing a reference structure

+
+ +
+
+select
+

string, selection for +select_atoms() to select frame +from Path.u_reference

+
+ +
+
+path_select
+

string, selection for +select_atoms() to select atoms +to compose Path.path

+
+ +
+
+ref_frame
+

int, frame index to select frame from Path.u_reference

+
+ +
+
+u_fitted
+

Universe object with the fitted trajectory

+
+ +
+
+path
+

numpy.ndarray object representation of the fitted trajectory

+
+ +
+
+fit_to_reference(filename=None, prefix='', postfix='_fit', rmsdfile=None, targetdir='.', weights=None, tol_mass=0.1)[source]
+

Align each trajectory frame to the reference structure

+
+
Parameters:
+
    +
  • filename (str (optional)) – file name for the RMS-fitted trajectory or pdb; defaults to the +original trajectory filename (from Path.u_original) with +prefix prepended

  • +
  • prefix (str (optional)) – prefix for auto-generating the new output filename

  • +
  • rmsdfile (str (optional)) – file name for writing the RMSD time series [None]

  • +
  • weights ({“mass”, None} or array_like (optional)) – choose weights. With "mass" uses masses as weights; with +None weigh each atom equally. If a float array of the same +length as the selected AtomGroup is provided, use each element of +the array_like as a weight for the corresponding atom in the +AtomGroup.

  • +
  • tol_mass (float (optional)) – Reject match if the atomic masses for matched atoms differ by more +than tol_mass [0.1]

  • +
+
+
Returns:
+

MDAnalysis.Universe object containing a fitted trajectory

+
+
Return type:
+

Universe

+
+
+

Notes

+

Uses MDAnalysis.analysis.align.AlignTraj for the fitting.

+
+

Deprecated since version 0.16.1: Instead of mass_weighted=True use new weights='mass'; +refactored to fit with AnalysisBase API

+
+
+

Changed in version 0.17.0: Deprecated keyword mass_weighted was removed.

+
+
+ +
+
+get_num_atoms()[source]
+

Return the number of atoms used to construct the Path.

+

Must run Path.to_path() prior to calling this method.

+
+
Returns:
+

the number of atoms in the Path

+
+
Return type:
+

int

+
+
+
+ +
+
+run(align=False, filename=None, postfix='_fit', rmsdfile=None, targetdir='.', weights=None, tol_mass=0.1, flat=False)[source]
+

Generate a path from a trajectory and reference structure.

+

As part of the path generation, the trajectory can be superimposed +(“aligned”) to a reference structure if specified.

+

This is a convenience method to generate a fitted trajectory from an +inputted universe (Path.u_original) and reference structure +(Path.u_reference). Path.fit_to_reference() and +Path.to_path() are used consecutively to generate a new universe +(Path.u_fitted) containing the fitted trajectory along with the +corresponding Path.path represented as an +numpy.ndarray. The method returns a tuple of the topology name +and new trajectory name, which can be fed directly into an +MDAnalysis.Universe object after unpacking the tuple using the +* operator, as in +MDAnalysis.Universe(*(top_name, newtraj_name)).

+
+
Parameters:
+
    +
  • align (bool (optional)) – Align trajectory to atom selection Path.select of +Path.u_reference. If True, a universe containing an +aligned trajectory is produced with Path.fit_to_reference() +[False]

  • +
  • filename (str (optional)) – filename for the RMS-fitted trajectory or pdb; defaults to the +original trajectory filename (from Path.u_original) with +prefix prepended

  • +
  • postfix (str (optional)) – prefix for auto-generating the new output filename

  • +
  • rmsdfile (str (optional)) – file name for writing the RMSD time series [None]

  • +
  • weights ({“mass”, None} or array_like (optional)) – choose weights. With "mass" uses masses as weights; with +None weigh each atom equally. If a float array of the same +length as the selected AtomGroup is provided, use each element of +the array_like as a weight for the corresponding atom in the +AtomGroup.

  • +
  • tol_mass (float (optional)) – Reject match if the atomic masses for matched atoms differ by more +than tol_mass [0.1]

  • +
  • flat (bool (optional)) – represent Path.path with 2D (\(N_p\times 3N\)) numpy.ndarray; +if False then Path.path is a 3D (\(N_p\times N\times 3\)) +numpy.ndarray [False]

  • +
+
+
Returns:
+

topology_trajectory – A tuple of the topology name and new trajectory name.

+
+
Return type:
+

tuple

+
+
+
+

Deprecated since version 0.16.1: Instead of mass_weighted=True use new weights='mass'; +refactored to fit with AnalysisBase API

+
+
+

Changed in version 0.17.0: Deprecated keyword mass_weighted was removed.

+
+
+ +
+
+to_path(fitted=False, select=None, flat=False)[source]
+

Generates a coordinate time series from the fitted universe +trajectory.

+

Given a selection of N atoms from select, the atomic positions for +each frame in the fitted universe (Path.u_fitted) trajectory +(with \(N_p\) total frames) are appended sequentially to form a 3D or 2D +(if flat is True) numpy.ndarray representation of the +fitted trajectory (with dimensions \(N_p\times N\times 3\) or \(N_p\times 3N\), respectively).

+
+
Parameters:
+
    +
  • fitted (bool (optional)) – construct a Path.path from the Path.u_fitted +trajectory; if False then Path.path is generated with +the trajectory from Path.u_original [False]

  • +
  • select (str (optional)) – the selection for constructing the coordinates of each frame in +Path.path; if None then Path.path_select +is used, else it is overridden by select [None]

  • +
  • flat (bool (optional)) – represent Path.path as a 2D (\(N_p\times 3N\)) numpy.ndarray; +if False then Path.path is a 3D (\(N_p\times N\times 3\)) +numpy.ndarray [False]

  • +
+
+
Returns:
+

representing a time series of atomic positions of an +MDAnalysis.core.groups.AtomGroup selection from +Path.u_fitted.trajectory

+
+
Return type:
+

numpy.ndarray

+
+
+
+ +
+ +
+
+class pathsimanalysis.psa.PSAPair(npaths, i, j)[source]
+

Generate nearest neighbor and Hausdorff pair information between a pair +of paths from an all-pairs comparison generated by PSA.

+

The nearest neighbors for each path of a pair of paths is generated by +PSAPair.compute_nearest_neighbors() and stores the result +in a dictionary (nearest_neighbors): each path has a +numpy.ndarray of the frames of its nearest neighbors, and a +numpy.ndarray of its nearest neighbor distances +PSAnalysis.D. For example, nearest_neighbors[‘frames’] is a pair +of numpy.ndarray, the first being the frames of the nearest +neighbors of the first path, i, the second being those of the second path, +j.

+

The Hausdorff pair for the pair of paths is found by calling +find_hausdorff_pair() (locates the nearest neighbor pair having the +largest overall distance separating them), which stores the result in a +dictionary (hausdorff_pair) containing the frames (indices) of the +pair along with the corresponding (Hausdorff) distance. +hausdorff_pair[‘frame’] contains a pair of frames in the first path, i, +and the second path, j, respectively, that correspond to the Hausdorff +distance between them.

+
+

New in version 0.11.

+
+
+
+npaths
+

int, total number of paths in the comparison in which this +PSAPair was generated

+
+ +
+
+matrix_id
+

(int, int), (row, column) indices of the location of this +PSAPair in the corresponding pairwise distance matrix

+
+ +
+
+pair_id
+

int, ID of this PSAPair (the pair_id:math:^text{th} +comparison) in the distance vector corresponding to the pairwise distance +matrix

+
+ +
+
+nearest_neighbors
+

dict, contains the nearest neighbors by frame index and the +nearest neighbor distances for each path in this PSAPair

+
+ +
+
+hausdorff_pair
+

dict, contains the frame indices of the Hausdorff pair for each path in +this PSAPair and the corresponding (Hausdorff) distance

+
+ +
+ +
+
+class pathsimanalysis.psa.PSAnalysis(universes, reference=None, select='name CA', ref_frame=0, path_select=None, labels=None, targetdir='.')[source]
+

Perform Path Similarity Analysis (PSA) on a set of trajectories.

+

The analysis is performed with PSAnalysis.run() and stores the result +in the numpy.ndarray distance matrix PSAnalysis.D. +PSAnalysis.run() also generates a fitted trajectory and path from +alignment of the original trajectories to a reference structure.

+
+

New in version 0.8.

+
+
+

Changed in version 1.0.0: save_result() method has been removed. You can use np.save() on +PSAnalysis.D instead.

+
+
+
+universes
+

list of MDAnalysis.Universe objects containing trajectories

+
+ +
+
+u_reference
+

MDAnalysis.Universe object containing a reference structure

+
+ +
+
+select
+

string, selection for +select_atoms() to select frame +from PSAnalysis.u_reference

+
+ +
+
+path_select
+

string, selection for +select_atoms() to select atoms +to compose Path.path

+
+ +
+
+ref_frame
+

int, frame index to select frame from Path.u_reference

+
+ +
+
+paths
+

list of numpy.ndarray objects representing the set/ensemble of +fitted trajectories

+
+ +
+
+D
+

numpy.ndarray which stores the calculated distance matrix

+
+ +
+
+cluster(dist_mat=None, method='ward', count_sort=False, distance_sort=False, no_plot=False, no_labels=True, color_threshold=4)[source]
+

Cluster trajectories and optionally plot the dendrogram.

+

This method is used by PSAnalysis.plot() to generate a heatmap- +dendrogram combination plot. By default, the distance matrix, +PSAnalysis.D, is assumed to exist, converted to +distance-vector form, and inputted to cluster.hierarchy.linkage() +to generate a clustering. For convenience in plotting arbitrary +distance matrices, one can also be specify dist_mat, which will be +checked for proper distance matrix form by +spatial.distance.squareform()

+
+
Parameters:
+
    +
  • dist_mat (numpy.ndarray) – user-specified distance matrix to be clustered [None]

  • +
  • method (str) – name of linkage criterion for clustering ['ward']

  • +
  • no_plot (bool) – if True, do not render the dendrogram [False]

  • +
  • no_labels (bool) – if True then do not label dendrogram [True]

  • +
  • color_threshold (float) – For brevity, let t be the color_threshold. Colors all the +descendent links below a cluster node k the same color if k is +the first node below the cut threshold t. All links connecting +nodes with distances greater than or equal to the threshold are +colored blue. If t is less than or equal to zero, all nodes are +colored blue. If color_threshold is None or ‘default’, +corresponding with MATLAB(TM) behavior, the threshold is set to +0.7*max(Z[:,2]). [4]]

  • +
+
+
Returns:
+

    +
  • Z – output from scipy.cluster.hierarchy.linkage(); +list of indices representing the row-wise order of the objects +after clustering

  • +
  • dgram – output from scipy.cluster.hierarchy.dendrogram()

  • +
+

+
+
+
+ +
+
+generate_paths(align=False, filename=None, infix='', weights=None, tol_mass=False, ref_frame=None, flat=False, save=True, store=False)[source]
+

Generate paths, aligning each to reference structure if necessary.

+
+
Parameters:
+
    +
  • align (bool) – Align trajectories to atom selection PSAnalysis.select +of PSAnalysis.u_reference [False]

  • +
  • filename (str) – strings representing base filename for fitted trajectories and +paths [None]

  • +
  • infix (str) – additional tag string that is inserted into the output filename of +the fitted trajectory files [‘’]

  • +
  • weights ({“mass”, None} or array_like (optional)) – choose weights. With "mass" uses masses as weights; with +None weigh each atom equally. If a float array of the same +length as the selected AtomGroup is provided, use each element of +the array_like as a weight for the corresponding atom in the +AtomGroup [None]

  • +
  • tol_mass (float) – Reject match if the atomic masses for matched atoms differ by more +than tol_mass [False]

  • +
  • ref_frame (int) – frame index to select frame from reference [None]

  • +
  • flat (bool) – represent Path.path as a 2D (\(N_p\times 3N\)) numpy.ndarray; +if False then Path.path is a 3D (\(N_p\times N\times 3\)) +numpy.ndarray [False]

  • +
  • save (bool) – if True, pickle list of names for fitted trajectories +[True]

  • +
  • store (bool) – if True then writes each path (numpy.ndarray) +in PSAnalysis.paths to compressed npz (numpy) files +[False]

  • +
+
+
+

The fitted trajectories are written to new files in the +“/trj_fit” subdirectory in PSAnalysis.targetdir named +“filename(trajectory)XXX*infix*_psa”, where “XXX” is a number between +000 and 999; the extension of each file is the same as its original. +Optionally, the trajectories can also be saved in numpy compressed npz +format in the “/paths” subdirectory in PSAnalysis.targetdir for +persistence and can be accessed as the attribute +PSAnalysis.paths.

+
+

Deprecated since version 0.16.1: Instead of mass_weighted=True use new weights='mass'; +refactored to fit with AnalysisBase API

+
+
+

Changed in version 0.17.0: Deprecated keyword mass_weighted was removed.

+
+
+

Changed in version 1.0.0: Defaults for the store and filename keywords have been changed +from True and fitted to False and None respectively. These +now match the docstring documented defaults.

+
+
+ +
+
+get_num_atoms()[source]
+

Return the number of atoms used to construct the Path instances in +PSA.

+
+
Returns:
+

the number of atoms in any path

+
+
Return type:
+

int

+
+
+
+

Note

+

Must run PSAnalysis.generate_paths() prior to calling this +method.

+
+
+ +
+
+get_num_paths()[source]
+

Return the number of paths in PSA.

+
+

Note

+

Must run PSAnalysis.generate_paths() prior to calling this method.

+
+
+
Returns:
+

the number of paths in PSA

+
+
Return type:
+

int

+
+
+
+ +
+
+get_pairwise_distances(vectorform=False, checks=False)[source]
+

Return the distance matrix (or vector) of pairwise path distances.

+
+

Note

+

Must run PSAnalysis.run() prior to calling this method.

+
+
+
Parameters:
+
    +
  • vectorform (bool) – if True, return the distance vector instead [False]

  • +
  • checks (bool) – if True, check that PSAnalysis.D is a proper distance +matrix [False]

  • +
+
+
Returns:
+

representation of the distance matrix (or vector)

+
+
Return type:
+

numpy.ndarray

+
+
+
+ +
+
+get_paths()[source]
+

Return the paths in PSA.

+
+

Note

+

Must run PSAnalysis.generate_paths() prior to calling this +method.

+
+
+
Returns:
+

list of numpy.ndarray representations of paths in +PSA

+
+
Return type:
+

list

+
+
+
+ +
+
+property hausdorff_pairs
+

The Hausdorff pair for each (unique) pairs of paths.

+

This attribute contains a list of Hausdorff pair information (in +distance vector order), where each element is a dictionary containing +the pair of frames and the (Hausdorff) distance between a pair of +paths. See PSAnalysis.psa_pairs() and +PSAPair.hausdorff_pair for more information about accessing +Hausdorff pair data.

+
+

Note

+

Must run PSAnalysis.run_pairs_analysis() with +hausdorff_pairs=True prior to calling this method.

+
+
+ +
+
+load()[source]
+

Load fitted paths specified by ‘psa_path-names.pkl’ in +PSAnalysis.targetdir.

+

All filenames are determined by PSAnalysis.

+
+

See also

+

save_paths

+
+
+ +
+
+property nearest_neighbors
+

The nearest neighbors for each (unique) pair of paths.

+

This attribute contains a list of nearest neighbor information (in +distance vector order), where each element is a dictionary containing +the nearest neighbor frames and distances between a pair of paths. See +PSAnalysis.psa_pairs() and PSAPair.nearest_neighbors for +more information about accessing nearest neighbor data.

+
+

Note

+

Must run PSAnalysis.run_pairs_analysis() with +neighbors=True prior to calling this method.

+
+
+ +
+
+plot(filename=None, linkage='ward', count_sort=False, distance_sort=False, figsize=4.5, labelsize=12)[source]
+

Plot a clustered distance matrix.

+

Usese method linkage and plots the corresponding dendrogram. Rows +(and columns) are identified using the list of strings specified by +PSAnalysis.labels.

+

If filename is supplied then the figure is also written to file (the +suffix determines the file type, e.g. pdf, png, eps, …). All other +keyword arguments are passed on to matplotlib.pyplot.matshow().

+
+
Parameters:
+
    +
  • filename (str) – save figure to filename [None]

  • +
  • linkage (str) – name of linkage criterion for clustering ['ward']

  • +
  • count_sort (bool) – see scipy.cluster.hierarchy.dendrogram() [False]

  • +
  • distance_sort (bool) – see scipy.cluster.hierarchy.dendrogram() [False]

  • +
  • figsize (float) – set the vertical size of plot in inches [4.5]

  • +
  • labelsize (float) – set the font size for colorbar labels; font size for path labels on +dendrogram default to 3 points smaller [12]

  • +
+
+
Returns:
+

    +
  • ZZ from cluster()

  • +
  • dgramdgram from cluster()

  • +
  • dist_matrix_clus – clustered distance matrix (reordered)

  • +
  • .. versionchanged:: 1.0.0tick1On, tick2On, label1On and label2On +changed to tick1line, tick2line, label1 and +label2 due to upstream deprecation (see #2493)

  • +
+

+
+
+
+ +
+
+plot_annotated_heatmap(filename=None, linkage='ward', count_sort=False, distance_sort=False, figsize=8, annot_size=6.5)[source]
+

Plot a clustered distance matrix.

+

Uses method linkage and plots annotated distances in the matrix. Rows +(and columns) are identified using the list of strings specified by +PSAnalysis.labels.

+

If filename is supplied then the figure is also written to file (the +suffix determines the file type, e.g. pdf, png, eps, …). All other +keyword arguments are passed on to matplotlib.pyplot.imshow().

+
+
Parameters:
+
    +
  • filename (str) – save figure to filename [None]

  • +
  • linkage (str) – name of linkage criterion for clustering ['ward']

  • +
  • count_sort (bool) – see scipy.cluster.hierarchy.dendrogram() [False]

  • +
  • distance_sort (bool) – see scipy.cluster.hierarchy.dendrogram() [False]

  • +
  • figsize (float) – set the vertical size of plot in inches [4.5]

  • +
  • annot_size (float) – font size of annotation labels on heat map [6.5]

  • +
+
+
Returns:
+

    +
  • ZZ from cluster()

  • +
  • dgramdgram from cluster()

  • +
  • dist_matrix_clus – clustered distance matrix (reordered)

  • +
+

+
+
+
+

Note

+

This function requires the seaborn package, which can be installed +with pip install seaborn or conda install seaborn.

+
+

Changed in version 1.0.0: tick1On, tick2On, label1On and label2On +changed to tick1line, tick2line, label1 and +label2 due to upstream deprecation (see #2493)

+
+
+
+ +
+
+plot_nearest_neighbors(filename=None, idx=0, labels=('Path 1', 'Path 2'), figsize=4.5, multiplot=False, aspect_ratio=1.75, labelsize=12)[source]
+

Plot nearest neighbor distances as a function of normalized frame +number.

+

The frame number is mapped to the interval [0, 1].

+

If filename is supplied then the figure is also written to file (the +suffix determines the file type, e.g. pdf, png, eps, …). All other +keyword arguments are passed on to matplotlib.pyplot.imshow().

+
+
Parameters:
+
    +
  • filename (str) – save figure to filename [None]

  • +
  • idx (int) – index of path (pair) comparison to plot [0]

  • +
  • labels ((str, str)) – pair of names to label nearest neighbor distance +curves [('Path 1', 'Path 2')]

  • +
  • figsize (float) – set the vertical size of plot in inches [4.5]

  • +
  • multiplot (bool) – set to True to enable plotting multiple nearest +neighbor distances on the same figure [False]

  • +
  • aspect_ratio (float) – set the ratio of width to height of the plot [1.75]

  • +
  • labelsize (float) – set the font size for colorbar labels; font size for path labels on +dendrogram default to 3 points smaller [12]

  • +
+
+
Returns:
+

ax

+
+
Return type:
+

axes

+
+
+
+

Note

+

This function requires the seaborn package, which can be installed +with pip install seaborn or conda install seaborn.

+
+
+ +
+
+property psa_pairs
+

The list of PSAPair instances for each pair of paths.

+

psa_pairs is a list of all PSAPair objects (in +distance vector order). The elements of a PSAPair are pairs of +paths that have been compared using +PSAnalysis.run_pairs_analysis(). Each PSAPair contains +nearest neighbor and Hausdorff pair information specific to a pair of +paths. The nearest neighbor frames and distances for a PSAPair +can be accessed in the nearest neighbor dictionary using the keys +‘frames’ and ‘distances’, respectively. E.g., +PSAPair.nearest_neighbors['distances'] returns a pair of +numpy.ndarray corresponding to the nearest neighbor distances +for each path. Similarly, Hausdorff pair information can be accessed +using PSAPair.hausdorff_pair with the keys ‘frames’ and +‘distance’.

+
+

Note

+

Must run PSAnalysis.run_pairs_analysis() prior to calling this +method.

+
+
+ +
+
+run(**kwargs)[source]
+

Perform path similarity analysis on the trajectories to compute +the distance matrix.

+

A number of parameters can be changed from the defaults. The +result is stored as the array PSAnalysis.D.

+
+
Parameters:
+
    +
  • metric (str or callable) – selection string specifying the path metric to measure pairwise +distances among PSAnalysis.paths or a callable with the +same call signature as hausdorff() +['hausdorff']

  • +
  • start (int) – start and stop frame index with step size: analyze +trajectory[start:stop:step] [None]

  • +
  • stop (int)

  • +
  • step (int)

  • +
  • .. versionchanged:: 1.0.0store and filename have been removed.

  • +
+
+
+
+ +
+
+run_pairs_analysis(**kwargs)[source]
+

Perform PSA Hausdorff (nearest neighbor) pairs analysis on all unique +pairs of paths in PSAnalysis.paths.

+

Partial results can be stored in separate lists, where each list is +indexed according to distance vector convention (i.e., element (i,j) +in distance matrix representation corresponds to element +\(s=N*i+j-(i+1)*(i+2)\) in distance vector representation, which is +the \(s\)th comparison). For each unique pair of paths, the +nearest neighbors for that pair can be stored in NN and the +Hausdorff pair in HP. PP stores the full information +of Hausdorff pairs analysis that is available for each pair of path, +including nearest neighbors lists and the Hausdorff pairs.

+

The pairwise distances are stored as the array PSAnalysis.D.

+
+
Parameters:
+
    +
  • start (int) – start and stop frame index with step size: analyze +trajectory[start:stop:step] [None]

  • +
  • stop (int)

  • +
  • step (int)

  • +
  • neighbors (bool) – if True, then stores dictionary of nearest neighbor +frames/distances in PSAnalysis.NN [False]

  • +
  • hausdorff_pairs (bool) – if True, then stores dictionary of Hausdorff pair +frames/distances in PSAnalysis.HP [False]

  • +
+
+
+
+ +
+
+save_paths(filename=None)[source]
+

Save fitted PSAnalysis.paths to numpy compressed npz files.

+

The data are saved with numpy.savez_compressed() in the directory +specified by PSAnalysis.targetdir.

+
+
Parameters:
+

filename (str) – specifies filename [None]

+
+
Returns:
+

filename

+
+
Return type:
+

str

+
+
+
+

See also

+

load

+
+
+ +
+ +

References

+
+ + + + + + + +
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2023, MDAnalysis. Project structure based on the MDAnalysis Cookiecutter version 0.1.

+
+ + + + + + + +
+
+
+
+
+ + +
+ + + + + + +
+
+
Other Versions
+
+ +
+
+ + + \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 0000000..5a8f4aa --- /dev/null +++ b/genindex.html @@ -0,0 +1,407 @@ + + + + + + + + + + + + + + + + + + + + + + Index — PathSimAnalysis documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Index

+ +
+ C + | D + | F + | G + | H + | L + | M + | N + | P + | R + | S + | T + | U + +
+

C

+ + +
+ +

D

+ + + +
+ +

F

+ + +
+ +

G

+ + + +
+ +

H

+ + + +
+ +

L

+ + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

P

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + +
+ +

U

+ + + +
+ + + +
+
+
+ +
+ +
+

© Copyright 2023, MDAnalysis. Project structure based on the MDAnalysis Cookiecutter version 0.1.

+
+ + + + + + + +
+
+
+
+
+ + +
+ + + + + + +
+
+
Other Versions
+
+ +
+
+ + + \ No newline at end of file diff --git a/getting_started.html b/getting_started.html new file mode 100644 index 0000000..27810a9 --- /dev/null +++ b/getting_started.html @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + Getting Started — PathSimAnalysis documentation + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Getting Started

+

This page details how to get started with PathSimAnalysis.

+
+

Installation

+

PathSimAnalysis is currently only installable from source.

+
git clone --depth=1 https://github.com/MDAnalysis/PathSimAnalysis
+cd PathSimAnalysis
+pip install .
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2023, MDAnalysis. Project structure based on the MDAnalysis Cookiecutter version 0.1.

+
+ + + + + + + +
+
+
+
+
+ + +
+ + + + + + +
+
+
Other Versions
+
+ +
+
+ + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..15089ac --- /dev/null +++ b/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + Welcome to PathSimAnalysis’s documentation! — PathSimAnalysis documentation + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Welcome to PathSimAnalysis’s documentation!

+

PathSimAnalysis is an MDAnalysis based analysis package for calculating the similarity between molecular dynamics trajectories.

+ +
+
+

Indices and tables

+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2023, MDAnalysis. Project structure based on the MDAnalysis Cookiecutter version 0.1.

+
+ + + + + + + +
+
+
+
+
+ + +
+ + + + + + +
+
+
Other Versions
+
+ +
+
+ + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000..66d7fab Binary files /dev/null and b/objects.inv differ diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 0000000..b9c76d5 --- /dev/null +++ b/py-modindex.html @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + Python Module Index — PathSimAnalysis documentation + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Python Module Index

+ +
+ p +
+ + + + + + + + + + +
 
+ p
+ pathsimanalysis +
    + pathsimanalysis.psa +
+ + +
+
+
+ +
+ +
+

© Copyright 2023, MDAnalysis. Project structure based on the MDAnalysis Cookiecutter version 0.1.

+
+ + + + + + + +
+
+
+
+
+ + +
+ + + + + + +
+
+
Other Versions
+
+ +
+
+ + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 0000000..654c343 --- /dev/null +++ b/search.html @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + Search — PathSimAnalysis documentation + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + + +
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2023, MDAnalysis. Project structure based on the MDAnalysis Cookiecutter version 0.1.

+
+ + + + + + + +
+
+
+
+
+ + +
+ + + + + + +
+
+
Other Versions
+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 0000000..64db3fe --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["api", "getting_started", "index"], "filenames": ["api.rst", "getting_started.rst", "index.rst"], "titles": ["API Documentation", "Getting Started", "Welcome to PathSimAnalysis\u2019s documentation!"], "terms": {"new": 0, "version": 0, "0": 0, "10": 0, "The": 0, "modul": [0, 2], "contain": 0, "code": 0, "geometr": 0, "trajectori": [0, 2], "us": 0, "metric": 0, "hausdorff": 0, "fr\u00e9chet": 0, "distanc": 0, "1": [0, 1], "ar": 0, "two": 0, "return": 0, "nonneg": 0, "number": 0, "i": [0, 1, 2], "e": 0, "ident": 0, "zero": 0, "larg": 0, "indic": 0, "dissimilar": 0, "each": 0, "individu": 0, "point": 0, "g": 0, "coordin": 0, "snapshot": 0, "compris": 0, "loos": 0, "speak": 0, "identifi": 0, "one": 0, "per": 0, "pair": 0, "where": 0, "deviat": 0, "most": 0, "between": [0, 2], "maxim": 0, "measur": 0, "root": 0, "mean": 0, "squar": 0, "rmsd": 0, "comput": 0, "structur": 0, "One": 0, "typic": 0, "pairwis": 0, "an": [0, 2], "ensembl": 0, "produc": 0, "symmetr": 0, "matrix": 0, "which": 0, "can": 0, "cluster": 0, "glanc": 0, "pattern": 0, "data": 0, "To": 0, "properli": 0, "analyz": 0, "must": 0, "select": 0, "suitabl": 0, "refer": 0, "all": 0, "conform": 0, "univers": 0, "align": 0, "rotat": 0, "determin": 0, "best": 0, "fit": 0, "directli": 0, "further": 0, "thi": [0, 1], "pre": 0, "process": 0, "step": 0, "necessari": 0, "preserv": 0, "properti": 0, "basi": 0, "doe": 0, "gener": 0, "triangl": 0, "inequ": 0, "psanalysistutori": 0, "outlin": 0, "applic": 0, "set": 0, "includ": 0, "do": 0, "proper": 0, "perform": 0, "comparison": 0, "heat": 0, "map": 0, "dendrogram": 0, "plot": 0, "from": [0, 1], "hierarch": 0, "follow": 0, "conveni": 0, "other": 0, "sqnorm": 0, "v": 0, "axi": 0, "none": 0, "sourc": [0, 1], "sum": 0, "element": 0, "along": 0, "specifi": 0, "ax": 0, "paramet": 0, "numpi": 0, "ndarrai": 0, "int": 0, "tupl": 0, "option": 0, "default": 0, "over": 0, "dimens": 0, "input": 0, "arrai": 0, "valu": 0, "mai": 0, "neg": 0, "case": 0, "count": 0, "last": 0, "zeroth": 0, "type": 0, "float": 0, "get_msd_matrix": 0, "p": 0, "q": 0, "msd": 0, "have": 0, "n_p": 0, "n_q": 0, "time": 0, "n": 0, "atom": 0, "3n": 0, "mdanalysi": [0, 1, 2], "core": 0, "group": 0, "atomgroup": 0, "posit": 0, "ha": 0, "first": 0, "second": 0, "msd_matrix": 0, "note": 0, "we": 0, "m_": 0, "ij": 0, "p_i": 0, "q_j": 0, "2": 0, "get_coord_ax": 0, "correspond": 0, "given": 0, "assum": 0, "0th": 0, "frame": 0, "cartesian": 0, "either": 0, "1st": 0, "start": [0, 2], "x": 0, "y": 0, "z": 0, "2nd": 0, "etc": 0, "index": [0, 2], "repres": 0, "get_path_metric_func": 0, "name": 0, "str": 0, "path_metr": 0, "found": 0, "oppos": 0, "more": 0, "convent": 0, "l2": 0, "euclidean": 0, "norm": 0, "becaus": 0, "compar": 0, "protein": 0, "configur": 0, "shape": 0, "3": 0, "flatten": 0, "form": 0, "revers": 0, "chang": 0, "exampl": 0, "halv": 0, "import": 0, "mda": 0, "test": 0, "datafil": 0, "psf": 0, "dcd": 0, "u": 0, "mid": 0, "len": 0, "ca": 0, "select_atom": 0, "_": 0, "half": 0, "4": 0, "778663899862152": 0, "w": 0, "scipi": 0, "spatial": 0, "directed_hausdorff": 0, "optim": 0, "implement": 0, "earli": 0, "break": 0, "algorithm": 0, "latter": 0, "here": 0, "hausdorff_wavg": 0, "weight": 0, "averag": 0, "nearest": 0, "neighbor": 0, "those": 0, "get": [0, 2], "likewis": 0, "These": 0, "divid": 0, "give": 0, "equal": 0, "5669644353703447": 0, "avg": 0, "dist": 0, "true": 0, "obei": 0, "see": 0, "detail": [0, 1], "hausdorff_avg": 0, "togeth": 0, "bias": 0, "toward": 0, "wherea": 0, "both": 0, "5669646575869005": 0, "hausdorff_neighbor": 0, "find": 0, "dictionari": 0, "kei": 0, "respect": 0, "dict": 0, "separ": 0, "thei": 0, "farthest": 0, "differ": 0, "sens": 0, "also": 0, "provid": 0, "discrete_frechet": 0, "discret": 0, "np": 0, "778663984013591": 0, "frechet": 0, "trj": 0, "6": 0, "842901117711383": 0, "direct": 0, "increas": 0, "sensit": 0, "approxim": 0, "continu": 0, "dynam": [0, 2], "program": 0, "5": 0, "dist_mat_to_vec": 0, "j": 0, "convert": 0, "upper": 0, "vector": 0, "locat": 0, "row": 0, "should": 0, "greater": 0, "than": 0, "size": 0, "column": 0, "path_select": 0, "ref_fram": 0, "base": [0, 2], "object": 0, "seri": 0, "represent": 0, "analysi": [0, 2], "psanalysi": 0, "run": 0, "store": 0, "result": 0, "d": 0, "origin": 0, "9": 0, "u_origin": 0, "u_refer": 0, "string": 0, "compos": 0, "u_fit": 0, "fit_to_refer": 0, "filenam": 0, "prefix": 0, "postfix": 0, "_fit": 0, "rmsdfile": 0, "targetdir": 0, "tol_mass": 0, "file": 0, "rm": 0, "pdb": 0, "prepend": 0, "auto": 0, "output": 0, "write": 0, "mass": 0, "array_lik": 0, "choos": 0, "With": 0, "weigh": 0, "If": 0, "same": 0, "length": 0, "reject": 0, "match": 0, "aligntraj": 0, "deprec": 0, "sinc": 0, "16": 0, "instead": 0, "mass_weight": 0, "refactor": 0, "analysisbas": 0, "17": 0, "keyword": 0, "wa": 0, "remov": 0, "get_num_atom": 0, "construct": 0, "to_path": 0, "prior": 0, "call": 0, "fals": 0, "flat": 0, "As": 0, "part": 0, "superimpos": 0, "consecut": 0, "topologi": 0, "fed": 0, "after": 0, "unpack": 0, "oper": 0, "top_nam": 0, "newtraj_nam": 0, "bool": 0, "2d": 0, "3d": 0, "topology_trajectori": 0, "A": 0, "total": 0, "append": 0, "sequenti": 0, "els": 0, "overridden": 0, "psapair": 0, "npath": 0, "inform": 0, "compute_nearest_neighbor": 0, "nearest_neighbor": 0, "its": 0, "For": 0, "being": 0, "find_hausdorff_pair": 0, "largest": 0, "overal": 0, "them": 0, "hausdorff_pair": 0, "11": 0, "matrix_id": 0, "pair_id": 0, "id": 0, "math": 0, "text": 0, "th": 0, "label": 0, "8": 0, "save_result": 0, "been": 0, "you": 0, "save": 0, "list": 0, "dist_mat": 0, "ward": 0, "count_sort": 0, "distance_sort": 0, "no_plot": 0, "no_label": 0, "color_threshold": 0, "heatmap": 0, "combin": 0, "By": 0, "exist": 0, "hierarchi": 0, "linkag": 0, "arbitrari": 0, "matric": 0, "check": 0, "squareform": 0, "user": 0, "criterion": 0, "render": 0, "breviti": 0, "let": 0, "t": 0, "color": 0, "descend": 0, "link": 0, "below": 0, "node": 0, "k": 0, "cut": 0, "threshold": 0, "connect": 0, "blue": 0, "less": 0, "matlab": 0, "tm": 0, "behavior": 0, "7": 0, "max": 0, "wise": 0, "order": 0, "dgram": 0, "generate_path": 0, "infix": 0, "addit": 0, "tag": 0, "insert": 0, "pickl": 0, "compress": 0, "npz": 0, "written": 0, "trj_fit": 0, "subdirectori": 0, "xxx": 0, "_psa": 0, "000": 0, "999": 0, "extens": 0, "format": 0, "persist": 0, "access": 0, "attribut": 0, "now": 0, "docstr": 0, "instanc": 0, "ani": 0, "get_num_path": 0, "get_pairwise_dist": 0, "vectorform": 0, "get_path": 0, "uniqu": 0, "psa_pair": 0, "about": 0, "run_pairs_analysi": 0, "load": 0, "psa_path": 0, "pkl": 0, "save_path": 0, "figsiz": 0, "labels": 0, "12": 0, "uses": 0, "suppli": 0, "figur": 0, "suffix": 0, "pdf": 0, "png": 0, "ep": 0, "argument": 0, "pass": 0, "matplotlib": 0, "pyplot": 0, "matshow": 0, "vertic": 0, "inch": 0, "font": 0, "colorbar": 0, "smaller": 0, "dist_matrix_clu": 0, "reorder": 0, "versionchang": 0, "tick1on": 0, "tick2on": 0, "label1on": 0, "label2on": 0, "tick1lin": 0, "tick2lin": 0, "label1": 0, "label2": 0, "due": 0, "upstream": 0, "2493": 0, "plot_annotated_heatmap": 0, "annot_s": 0, "annot": 0, "imshow": 0, "requir": 0, "seaborn": 0, "packag": [0, 2], "instal": [0, 2], "pip": [0, 1], "conda": 0, "plot_nearest_neighbor": 0, "idx": 0, "multiplot": 0, "aspect_ratio": 0, "75": 0, "normal": 0, "interv": 0, "curv": 0, "enabl": 0, "multipl": 0, "ratio": 0, "width": 0, "height": 0, "specif": 0, "similarli": 0, "kwarg": 0, "callabl": 0, "among": 0, "signatur": 0, "stop": 0, "partial": 0, "accord": 0, "": 0, "nn": 0, "hp": 0, "pp": 0, "full": 0, "avail": 0, "savez_compress": 0, "directori": 0, "sean": 0, "l": 0, "seyler": 0, "avishek": 0, "kumar": 0, "m": 0, "f": 0, "thorp": 0, "oliv": 0, "beckstein": 0, "quantifi": 0, "macromolecular": 0, "pathwai": 0, "plo": 0, "biologi": 0, "37": 0, "2015": 0, "doi": 0, "1371": 0, "journal": 0, "pcbi": 0, "1004568": 0, "abdel": 0, "aziz": 0, "taha": 0, "allan": 0, "hanburi": 0, "effici": 0, "exact": 0, "ieee": 0, "transact": 0, "machin": 0, "intellig": 0, "2153": 0, "2163": 0, "1109": 0, "tpami": 0, "2408351": 0, "mauric": 0, "fr\u00e8chet": 0, "sur": 0, "quelqu": 0, "du": 0, "fonctionnel": 0, "rendiconti": 0, "del": 0, "circolo": 0, "matematico": 0, "di": 0, "palermo": 0, "1884": 0, "1940": 0, "22": 0, "72": 0, "1906": 0, "1007": 0, "bf03018603": 0, "helmut": 0, "alt": 0, "michael": 0, "godau": 0, "polygon": 0, "intern": 0, "geometri": 0, "05": 0, "01n02": 0, "91": 0, "1995": 0, "1142": 0, "s0218195995000064": 0, "thoma": 0, "eiter": 0, "heikki": 0, "mannila": 0, "1994": 0, "acta": 0, "informatica": 0, "34": 0, "109": 0, "133": 0, "1997": 0, "s002360050075": 0, "page": [1, 2], "how": 1, "pathsimanalysi": 1, "current": 1, "onli": 1, "git": 1, "clone": 1, "depth": 1, "http": 1, "github": 1, "com": 1, "cd": 1, "calcul": 2, "similar": 2, "molecular": 2, "api": 2, "path": 2, "psa": 2, "search": 2}, "objects": {"pathsimanalysis": [[0, 0, 0, "-", "psa"]], "pathsimanalysis.psa": [[0, 1, 1, "", "PSAPair"], [0, 1, 1, "", "PSAnalysis"], [0, 1, 1, "", "Path"], [0, 5, 1, "", "discrete_frechet"], [0, 5, 1, "", "dist_mat_to_vec"], [0, 5, 1, "", "get_coord_axes"], [0, 5, 1, "", "get_msd_matrix"], [0, 5, 1, "", "get_path_metric_func"], [0, 5, 1, "", "hausdorff"], [0, 5, 1, "", "hausdorff_avg"], [0, 5, 1, "", "hausdorff_neighbors"], [0, 5, 1, "", "hausdorff_wavg"], [0, 5, 1, "", "sqnorm"]], "pathsimanalysis.psa.PSAPair": [[0, 2, 1, "", "hausdorff_pair"], [0, 2, 1, "", "matrix_id"], [0, 2, 1, "", "nearest_neighbors"], [0, 2, 1, "", "npaths"], [0, 2, 1, "", "pair_id"]], "pathsimanalysis.psa.PSAnalysis": [[0, 2, 1, "", "D"], [0, 3, 1, "", "cluster"], [0, 3, 1, "", "generate_paths"], [0, 3, 1, "", "get_num_atoms"], [0, 3, 1, "", "get_num_paths"], [0, 3, 1, "", "get_pairwise_distances"], [0, 3, 1, "", "get_paths"], [0, 4, 1, "", "hausdorff_pairs"], [0, 3, 1, "", "load"], [0, 4, 1, "", "nearest_neighbors"], [0, 2, 1, "", "path_select"], [0, 2, 1, "", "paths"], [0, 3, 1, "", "plot"], [0, 3, 1, "", "plot_annotated_heatmap"], [0, 3, 1, "", "plot_nearest_neighbors"], [0, 4, 1, "", "psa_pairs"], [0, 2, 1, "", "ref_frame"], [0, 3, 1, "", "run"], [0, 3, 1, "", "run_pairs_analysis"], [0, 3, 1, "", "save_paths"], [0, 2, 1, "", "select"], [0, 2, 1, "", "u_reference"], [0, 2, 1, "", "universes"]], "pathsimanalysis.psa.Path": [[0, 3, 1, "", "fit_to_reference"], [0, 3, 1, "", "get_num_atoms"], [0, 2, 1, "", "path"], [0, 2, 1, "", "path_select"], [0, 2, 1, "", "ref_frame"], [0, 3, 1, "", "run"], [0, 2, 1, "", "select"], [0, 3, 1, "", "to_path"], [0, 2, 1, "", "u_fitted"], [0, 2, 1, "", "u_original"], [0, 2, 1, "", "u_reference"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:property", "5": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "property", "Python property"], "5": ["py", "function", "Python function"]}, "titleterms": {"api": 0, "document": [0, 2], "calcul": 0, "path": 0, "similar": 0, "pathsimanalysi": [0, 2], "psa": 0, "helper": 0, "function": 0, "variabl": 0, "class": 0, "method": 0, "get": 1, "start": 1, "instal": 1, "welcom": 2, "": 2, "content": 2, "indic": 2, "tabl": 2}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 57}, "alltitles": {"API Documentation": [[0, "module-pathsimanalysis.psa"]], "Calculating path similarity \u2014 pathsimanalysis.psa": [[0, "calculating-path-similarity-pathsimanalysis-psa"]], "Helper functions and variables": [[0, "helper-functions-and-variables"]], "Classes, methods, and functions": [[0, "classes-methods-and-functions"]], "Getting Started": [[1, "getting-started"]], "Installation": [[1, "installation"]], "Welcome to PathSimAnalysis\u2019s documentation!": [[2, "welcome-to-pathsimanalysis-s-documentation"]], "Contents:": [[2, null]], "Indices and tables": [[2, "indices-and-tables"]]}, "indexentries": {"d (pathsimanalysis.psa.psanalysis attribute)": [[0, "pathsimanalysis.psa.PSAnalysis.D"]], "psapair (class in pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.PSAPair"]], "psanalysis (class in pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.PSAnalysis"]], "path (class in pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.Path"]], "cluster() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.cluster"]], "discrete_frechet() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.discrete_frechet"]], "dist_mat_to_vec() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.dist_mat_to_vec"]], "fit_to_reference() (pathsimanalysis.psa.path method)": [[0, "pathsimanalysis.psa.Path.fit_to_reference"]], "generate_paths() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.generate_paths"]], "get_coord_axes() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.get_coord_axes"]], "get_msd_matrix() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.get_msd_matrix"]], "get_num_atoms() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.get_num_atoms"]], "get_num_atoms() (pathsimanalysis.psa.path method)": [[0, "pathsimanalysis.psa.Path.get_num_atoms"]], "get_num_paths() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.get_num_paths"]], "get_pairwise_distances() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.get_pairwise_distances"]], "get_path_metric_func() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.get_path_metric_func"]], "get_paths() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.get_paths"]], "hausdorff() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.hausdorff"]], "hausdorff_avg() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.hausdorff_avg"]], "hausdorff_neighbors() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.hausdorff_neighbors"]], "hausdorff_pair (pathsimanalysis.psa.psapair attribute)": [[0, "pathsimanalysis.psa.PSAPair.hausdorff_pair"]], "hausdorff_pairs (pathsimanalysis.psa.psanalysis property)": [[0, "pathsimanalysis.psa.PSAnalysis.hausdorff_pairs"]], "hausdorff_wavg() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.hausdorff_wavg"]], "load() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.load"]], "matrix_id (pathsimanalysis.psa.psapair attribute)": [[0, "pathsimanalysis.psa.PSAPair.matrix_id"]], "module": [[0, "module-pathsimanalysis.psa"]], "nearest_neighbors (pathsimanalysis.psa.psapair attribute)": [[0, "pathsimanalysis.psa.PSAPair.nearest_neighbors"]], "nearest_neighbors (pathsimanalysis.psa.psanalysis property)": [[0, "pathsimanalysis.psa.PSAnalysis.nearest_neighbors"]], "npaths (pathsimanalysis.psa.psapair attribute)": [[0, "pathsimanalysis.psa.PSAPair.npaths"]], "pair_id (pathsimanalysis.psa.psapair attribute)": [[0, "pathsimanalysis.psa.PSAPair.pair_id"]], "path (pathsimanalysis.psa.path attribute)": [[0, "pathsimanalysis.psa.Path.path"]], "path_select (pathsimanalysis.psa.psanalysis attribute)": [[0, "pathsimanalysis.psa.PSAnalysis.path_select"]], "path_select (pathsimanalysis.psa.path attribute)": [[0, "pathsimanalysis.psa.Path.path_select"]], "paths (pathsimanalysis.psa.psanalysis attribute)": [[0, "pathsimanalysis.psa.PSAnalysis.paths"]], "pathsimanalysis.psa": [[0, "module-pathsimanalysis.psa"]], "plot() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.plot"]], "plot_annotated_heatmap() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.plot_annotated_heatmap"]], "plot_nearest_neighbors() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.plot_nearest_neighbors"]], "psa_pairs (pathsimanalysis.psa.psanalysis property)": [[0, "pathsimanalysis.psa.PSAnalysis.psa_pairs"]], "ref_frame (pathsimanalysis.psa.psanalysis attribute)": [[0, "pathsimanalysis.psa.PSAnalysis.ref_frame"]], "ref_frame (pathsimanalysis.psa.path attribute)": [[0, "pathsimanalysis.psa.Path.ref_frame"]], "run() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.run"]], "run() (pathsimanalysis.psa.path method)": [[0, "pathsimanalysis.psa.Path.run"]], "run_pairs_analysis() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.run_pairs_analysis"]], "save_paths() (pathsimanalysis.psa.psanalysis method)": [[0, "pathsimanalysis.psa.PSAnalysis.save_paths"]], "select (pathsimanalysis.psa.psanalysis attribute)": [[0, "pathsimanalysis.psa.PSAnalysis.select"]], "select (pathsimanalysis.psa.path attribute)": [[0, "pathsimanalysis.psa.Path.select"]], "sqnorm() (in module pathsimanalysis.psa)": [[0, "pathsimanalysis.psa.sqnorm"]], "to_path() (pathsimanalysis.psa.path method)": [[0, "pathsimanalysis.psa.Path.to_path"]], "u_fitted (pathsimanalysis.psa.path attribute)": [[0, "pathsimanalysis.psa.Path.u_fitted"]], "u_original (pathsimanalysis.psa.path attribute)": [[0, "pathsimanalysis.psa.Path.u_original"]], "u_reference (pathsimanalysis.psa.psanalysis attribute)": [[0, "pathsimanalysis.psa.PSAnalysis.u_reference"]], "u_reference (pathsimanalysis.psa.path attribute)": [[0, "pathsimanalysis.psa.Path.u_reference"]], "universes (pathsimanalysis.psa.psanalysis attribute)": [[0, "pathsimanalysis.psa.PSAnalysis.universes"]]}}) \ No newline at end of file