diff --git a/doc/source/developers_guide.rst b/doc/source/developers_guide.rst
index 1417ce96f240f17f714eb515cabb410fa1a559b8..71b039aa993a424601bf42ec5bb4f17086c5ee3f 100644
--- a/doc/source/developers_guide.rst
+++ b/doc/source/developers_guide.rst
@@ -1,1320 +1,1208 @@
-Developer's guide
+Developer's Guide
 =================
 
-Introduction and disclaimer
----------------------------
+.. admonition:: Disclaimer
 
-This guide intends to work as an introduction into kmos3s internal
-structure, including both the automatically generated Fortran code, as
-well as the code generation procedure. As the name suggest, the intended
-audience are those who want to contribute to kmos3 as developers. This
-guide will assume that you are familiar with the way in which kmos3 is
-used. If that is not the case, you should start reading the sections of
-the `documentation <http://kmos3.readthedocs.io>`__ intended for users
-and/or go through the `Intro to
-kmos3 <http://github.com/jmlorenzi/intro2kmcos>`__ tutorial.
+  The information in this guide is provided with the hope that it will ease your way into the
+  codebase kmos3, but it may contain errors. In the end, only the interpretation of the code
+  itself can really let you effectively add functionality to kmos3.
 
-**DISCLAIMER**: This is information is provided with the hopes that it
-will ease your way into kmos3s codebase, but it may contain errors. In
-the end only the interpretation of the code itself can really let you
-effectively add functionality to kmos3.
+Introduction
+------------
 
-For developers of the project, branch management will follow
-`this flowchart <https://github.com/kmos3/kmos3/tree/master/doc/source/topic_guides/GithubGuideKmcos.pptx>`__
+This guide intends to work as an introduction into the internal structure of kmos3, including both
+the automatically generated Fortran code as well as the code generation procedure. As the name
+suggest, the intended audience are those who want to contribute to kmos3 as developers. This guide
+will assume that you are familiar with the way in which kmos3 is used. If that is not the case,
+you should start reading the sections of the :ref:`tutorials` and :ref:`topic-guides` intended for
+users and/or go through the `intro2kmos3 <https://gitlab.mpcdf.mpg.de/fhi-theory/intro2kmos3>`_
+tutorial.
 
-How to edit, install, and test your changes locally
----------------------------------------------------
-
-First, install kmos3, then you must locate your kmos3 installation. Typically it will be in a directory similar to: ~/VENV/kmos3/lib/python3/site-packages/ 
-If you have difficulty finding it, use | python3 -c"import sys; print(sys.path)" |  Then, inside tthe site-packages directory, if kmos3 has an "egg" file, you must copy the kmos3 directory out of the egg file directly into the site_packages directory. After that, delete any other kmos3 egg files or directories so that there is a single kmos3 directory inside of site_packages.
+For developers of the project, repository and branch management will follow this flow chart:
 
-OPTION 1 (recommended): Edit the source code directly inside site_packages, or edit the code elsewhere and then paste over the files in site_packages.  Usually, this will be sufficient.
+.. figure:: img/gitlab_guide.svg
+  :width: 75%
+  :align: center
 
-OPTION 2: Edit the source code elsewhere (such as in a shared folder) and reinstall using the setup.py::
+How to Edit, Install, and Test Your Changes Locally
+---------------------------------------------------
 
-   source ~/VENV/kmos3/bin/activate #this is the command to enter the python virtual environment
-   pip install .
+If you want to make changes to the source code, you can edit the respective file(s) in the cloned
+repository. After that, be sure to have activated the virtual environment and reinstall kmos3 ::
 
-This will reinstall kmos3.
+  source $HOME/kmos3_venv/bin/activate
+  pip install .
 
-Before pushing to github, you should enter the the tests directory and run the unit tests.
+Before pushing to GitLab, you should enter the the tests directory and run the unit tests.
 
-Some nomenclature
+Some Nomenclature
 -----------------
 
-For some terms used frequently in this guide, there might exist some
-ambiguity on exact meaning. Here we present some definitions to try to
-alleviate this. Probably some ambiguity will remain, but hopefully not
-anything that cannot be discerned from context.
-
-**site**: In kmos3, this can have two different interpretations: either a
-specific node of the lattice or a type of site, e.g. a crystallographic
-site (top, fcc, hollow…). In this guide we use the former meaning: an
-specific position on the simulation lattice. When we need to indicate
-the second meaning, we will use **site type**.
-
-**coordinate**: indicates the relative position of a site in the lattice
-with respect to some other site. In general, a coordinate will be given
-as a pair of site pair and an offset representing the relative positions
-of the unit cells (in units of the unit cell vector). The site used as
-reference will depend on the context.
-
-**process**: a set of elementary changes that can occur on the lattice
-state on a single kMC step. A process is defined by a list of conditions
-and actions, and a rate constant expression.
-
-**executing coordinate**: A coordinate associated to each process to be
-used as a reference for the relative positions of conditions and actions
-when defining the Fortran routines. In ``local_smart`` and ``lat_int``
-the executing coordinate is found with the help of the
-``kmos3.types.Process.executing_coord`` method. In ``otf`` the concept of
-executing coordinate is not used, the reference position in the lattice
-is the central position implied by the user during model definition,
-i.e. the position in which coordinates have ``offset = (0, 0, 0)``.
-
-**event**: a process for which an specific site has been selected.
-
-**active event**: An event that can be executed given the current state
-of the lattice, i.e. an event for which all associated conditions are
-fulfilled.
-
-**lateral interactions**: For kmos3 models built for the ``local_smart``
-or ``lat_int``, we will say that such model includes *lateral
-interactions* if there is one or more groups of processes with the
-following characteristics:
-
-a. their actions are all identical
-b. the conditions occurring on the same sites as the actions are identical
-c. there is a group of additional sites in which these processes have conditions, but these conditions are different for each process in the group
-
-These processes represent the same change in the lattice, but under a
-difference state of the rest of the sites. These groups of processes are
-typically used to account for the effect of surrounding species on the
-values of the rate constants, i.e. the lateral interactions.
-
-**lateral interaction group**: The group of processes defined by items
-a, b, c above.
-
-**bystander** (``local_smart`` or ``lat_int`` backends) The set of
-conditions of item c above, i.e. conditions of a process in a lateral
-interaction groups that do not have an action associated to it.
-
-**bystander site/coordinate**: A site/coordinate associated with a
-bystanders.
-
-**participating sites**: Sites associated with actions from item a and
-conditions from item b of the definition of a lateral interaction group.
-
-**lateral interaction event group**: a collection of events occurring on
-the same lattice site and whose associated processes belong to the same
-lateral interaction group. Due to the nature of lateral interaction
-groups, only one of such events can be possible in a lattice at any
-given time.
-
-**bystander** (``otf`` backend): In the ``otf`` backend, the concept of
-bystander is explicitly included in the model definition, i.e. it is a
-new class ``kmos3.types.Bystander`` exclusive to this backend. An ``otf``
-model is said to include lateral interactions if one of its processes
-includes such bystanders. Note that models *without* lateral
-interactions should not be built using the ``otf`` backend, as
-``local_smart`` will definitely be more efficient.
-
-The three *backends*
---------------------
-
-While most kmos3 users will only need to worry about the Python interface
-to build and run the model, developers will also need to familiarize
-with the FORTRAN core code. The exact structure of this code depends on
-the *backend* that one selects. Which backend is most appropriate
-depends on the nature of the kMC model being implemented. Below we
-present a qualitative description of each backend.
+For some terms used frequently in this guide, there might exist some ambiguity on exact meaning.
+Here we present some definitions to try to alleviate this. Probably some ambiguity will remain,
+but hopefully not anything that cannot be discerned from context.
+
+site
+  In kmos3, this can have two different interpretations: either a specific node of the lattice or
+  a type of site, e.g., a crystallographic site (top, fcc, hollow…). In this guide we use the
+  former meaning: a specific position on the simulation lattice. When we need to indicate the
+  second meaning, we will use **site type**.
+
+coordinate
+  Indicates the relative position of a site in the lattice with respect to some other site. In
+  general, a coordinate will be given as a pair of a site and an offset representing the relative
+  positions of the unit cells (in units of the unit cell vector). The site used as reference will
+  depend on the context.
+
+process
+  A set of elementary changes that can occur on the lattice state on a single KMC step. A process
+  is defined by a list of conditions and actions, and a rate constant expression.
+
+executing coordinate
+  A coordinate associated to each process to be used as a reference for the relative positions of
+  conditions and actions when defining the Fortran routines. In ``local_smart`` and ``lat_int``
+  the executing coordinate is found with the help of the ``kmos3.types.Process.executing_coord``
+  method. In ``otf`` the concept of executing coordinate is not used. The reference position in
+  the lattice is the central position implied by the user during model definition, i.e., the
+  position in which coordinates have ``offset = (0, 0, 0)``.
+
+event
+  A process for which a specific site has been selected.
+
+active event
+  An event that can be executed given the current state of the lattice, i.e., an event for which
+  all associated conditions are fulfilled.
+
+lateral interactions
+  For kmos3 models built for the ``local_smart`` or ``lat_int``, we will say that such model
+  includes *lateral interactions* if there is one or more groups of processes with the following
+  characteristics:
+
+  a. Their actions are all identical.
+  b. The conditions occurring on the same sites as the actions are identical.
+  c. There is a group of additional sites in which these processes have conditions, but these
+     conditions are different for each process in the group.
+
+  These processes represent the same change in the lattice, but under a difference state of the
+  rest of the sites. These groups of processes are typically used to account for the effect of
+  surrounding species on the values of the rate constants, i.e., lateral interactions.
+
+lateral interaction group
+  The group of processes defined by items a, b, and c above.
+
+bystander (``local_smart`` or ``lat_int`` backends)
+  The set of conditions of item c above, i.e., conditions of a process in a lateral interaction
+  group that does not have an action associated to it.
+
+bystander site/coordinate
+  A site/coordinate associated with a bystander.
+
+participating sites
+  Sites associated with actions from item a and conditions from item b of the definition of a
+  **lateral interaction group**.
+
+lateral interaction event group
+  A collection of events occurring on the same lattice site and whose associated processes belong
+  to the same lateral interaction group. Due to the nature of lateral interaction groups, only
+  one of such events can be possible in a lattice at any given time.
+
+bystander (``otf`` backend)
+  In the ``otf`` backend, the concept of bystander is explicitly included in the model
+  definition, i.e., it is a new class ``kmos3.types.Bystander`` exclusive to this backend. An
+  ``otf`` model is said to include lateral interactions if one of its processes includes such
+  bystanders. Note that models *without* lateral interactions should not be built using the
+  ``otf`` backend, as ``local_smart`` will definitely be more efficient.
+
+The Three Backends
+------------------
+
+While most kmos3 users will only need to worry about the Python interface to build and run a
+model, developers will also need to familiarize with the Fortran core code. The exact structure of
+this code depends on the *backend* that one selects. Which backend is most appropriate depends on
+the nature of the KMC model being implemented. Below we present a qualitative description of each
+backend.
 
 ``local_smart``
 ~~~~~~~~~~~~~~~
 
-This is the original kmos3 backend and has been used as a basis and
-inspiration for the rest of the backends. It was built with the implicit
-objective of offering the best run time performance at the expense of
-memory usage. For this reason, a key element in this backend is a
-precalculated list of rate constants, stored in the ``base/rates``
-array.
+This is the original kmos3 backend and has been used as a basis and inspiration for the other
+backends. It was built with the implicit objective of offering the best run time performance at
+the expense of memory usage. For this reason, a key element in this backend is a precalculated
+list of rate constants, stored in the ``base/rates`` array.
 
-This is the most efficient backend when the number of different rate
-constants list is reasonable small.
+This is the most efficient backend if the number of different rate constants is reasonably small.
 
-For models with very large number of different processes ``nproc`` (such
-as cases in which large lateral interaction groups exist) some
-undesirable effects can occur:
+For models with a very large number of different processes ``nproc`` (such as cases in which large
+lateral interaction groups exist) some undesirable effects can occur:
 
--  The time needed to run a kMC step can become large, as it scales as
-   :math:`\mathcal{O}(\texttt{nproc})`.
--  The bookkeeping data structures, which scale in size with the total
-   number of processes, can become too big for available memory.
--  The size of individual source code files can become very large,
-   making compilation very slow or even impossible due to memory
-   requirements.
+- The time needed to run a KMC step can become large, as it scales as
+  :math:`\mathcal{O}(`\ ``nproc``\ :math:`)`.
+- The bookkeeping data structures, which scale in size with the total number of processes, can
+  become too big for available memory.
+- The size of individual source code files can become very large, making compilation very slow or
+  even impossible due to memory requirements.
 
 ``lat_int``
 ~~~~~~~~~~~
 
-The ``lat_int`` backend is the first attempt to alleviate the problems
-of ``local_smart`` for models with lateral interaction groups of
-moderate size. The main differences between them is that ``lat_int``
-structures the generated code around the different lateral interaction
-groups and splits the source files accordingly. This way compilation is
-faster and requires less memory. A necessary consequence of this is that
-the logic for the lattice update needs to be different.
+The ``lat_int`` backend is the first attempt to alleviate the problems of ``local_smart`` for
+models with lateral interaction groups of moderate size. The main differences between them is that
+``lat_int`` structures the generated code around the different lateral interaction groups and
+splits the source files accordingly. This way compilation is faster and requires less memory. A
+necessary consequence of this is that the logic for the lattice update needs to be different.
 
-TODO: I seem to recall that there are models for which ``lat_int``
-outperforms ``local_smart``, even when ``local_smart`` can eventually
-compile and run. This should be verified and interpreted (i.e. is
-``lat_int`` smarter than ``local_smart`` some times? If so, why?).
+.. todo::
+  I (who?) seem to recall that there are models for which ``lat_int`` outperforms ``local_smart``,
+  even when ``local_smart`` can eventually compile and run. This should be verified and
+  interpreted (i.e., is ``lat_int`` smarter than ``local_smart`` some times? If so, why?).
 
 ``otf``
 ~~~~~~~
 
-For processes with lots of lateral interactions, i.e. very large lateral
-interaction groups, keeping a list of precalculated rate constants (and
-the proportionally large bookkeeping arrays) is unfeasible. The
-alternative is to evaluate rate constants during runtime, i.e. *on the
-fly*. kMC models built using the ``otf`` array do just that. To
-accommodate for this, the concept of a process in ``otf`` is different
-to that in the other backends. In ``otf``, all members of a lateral
-interaction group are represented by a single process. Therefore, the
-total number of processes and, consequently, the size of bookkeeping
-arrays is much smaller. The counterpart from this improvement is that
-now a kMC step scales linearly with the system size (instead of being
+For processes with lots of lateral interactions, i.e., very large lateral interaction groups,
+keeping a list of precalculated rate constants (and the proportionally large bookkeeping arrays)
+is unfeasible. The alternative is to evaluate rate constants during runtime, i.e., *on the fly*.
+KMC models built using the ``otf`` backend do just that. To accommodate for this, the concept of a
+process in ``otf`` is different to that in the other backends. In ``otf``, all members of a
+lateral interaction group are represented by a single process. Therefore, the total number of
+processes and, consequently, the size of bookkeeping arrays is much smaller. The counterpart from
+this improvement is that now a KMC step scales linearly with the system size (instead of being
 constant time).
 
-The structure of the FORTRAN code.
-----------------------------------
+The Fortran Code Files
+----------------------
 
-Here we present a description of the different files in which the source
-code is split. We use the ``local_smart`` backend as a basis for this
-description, as it is the original backend and contains
-the fewest files. For the other backends, we will only explain
-the differences with ``local_smart``.
+Here, we present a description of the different files in which the source code is split. We use
+the ``local_smart`` backend as a basis for this description, as it is the original backend and
+contains the fewest files. For the other backends, we will only explain the differences to
+``local_smart``.
 
-All kmos3 models contain train main source files: ``base.f90``,
-``lattice.f90`` and ``proclist.f90``. Each of these source files defines
-a module of the same name. These modules are exposed to Python
-interface.
+All kmos3 models contain three main source files: ``base.f90``, ``lattice.f90``, and
+``proclist.f90``. Each of these source files defines a module of the same name. These modules are
+exposed to the Python interface.
 
-It is important to know that some of the fortran code
-comes from the directory \kmos3\fortran_src\
-and some of the fortran code comes from the file
-\kmos3\io.py , so io.py should be checked 
-as well, if needed, when looking for fortran source code.
+It is important to know that some of the Fortran code comes from the ``fortran_src`` directory and
+some comes from the file ``io.py``, so both locations should be checked, when dealing with the
+Fortran source code.
 
-Files for the ``local_smart`` backend
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+``local_smart``
+~~~~~~~~~~~~~~~
 
 ``base.f90``
 ^^^^^^^^^^^^
 
-As it name suggests, ``base.f90`` contains the lowest-level elements of the model. It implements the kMC method in a 1D lattice. The ``base`` module contains all the bookkeeping arrays described in :ref:`Key data-structures <data-structs>` and the routines used to
-
--  allocate and deallocate memory
--  update of the bookkeeping arrays for lattice configuration and
-   available processes
--  using such arrays to determine the next process to be executed
--  keep track of kMC time and total number of steps
--  keep track of the number of executions of each individual process
-   (``procstat``)
--  saving an reloading the system's state
+As its name suggests, ``base.f90`` contains the lowest-level elements of the model. It implements
+the KMC method in a 1D representation of the lattice (i.e., the ND lattice of the problem,
+flattened). The ``base`` module contains all the bookkeeping arrays described in
+:ref:`data-structs` and the routines to
 
-Many routines in base take a variable ``site`` as input. This is an
-index (integer value) that identifies a site on the 1D representation of
-the lattice (i.e. the ND lattice of the problem, flattened).
+- allocate and deallocate memory
+- update the bookkeeping arrays for the lattice configuration and available processes
+- using these arrays to determine the next process to be executed
+- keep track of KMC time and total number of steps
+- keep track of the number of executions of each individual process (``procstat``)
+- save an reload the system's state
 
-The contents of ``base.f90`` are (mostly) fixed, i.e. it is (almost) the
-same file for all kmos3 models (as long as they use the same backend).
+Many routines in ``base`` take a variable ``site`` as input. This is an index (integer value) that
+identifies a site in the 1D representation. The contents of ``base.f90`` are (mostly) fixed, i.e.,
+it is (almost) the same file for all kmos3 models (as long as they use the same backend).
 
 .. _lattice:
 
 ``lattice.f90``
 ^^^^^^^^^^^^^^^
 
-The role of the ``lattice.f90`` is to generate the map from the ND
-lattice (N=1, 2, 3) to the 1D lattice that is handled by ``base.f90``.
-The ``lattice`` module imports subroutines from the ``base`` module.
-Beside the look-up arrays ``lattice2nr`` and ``nr2lattice``, used to map
-to and from the 1D lattice, this module also implements wrappers to many
-of the basic functions defined in ``base.f90``. Such wrappers take now a
-4D array ``lsite`` variable, designating the site on a 3D lattice,
-instead of the single integer ``site`` used by ``base``. The first three
-elements of this array indicate the ( (x, y, z) ) position of the
-corresponding unit cell (in unit cell vector units), while the fourth
-indicates the site type. In cases of lower dimensional lattices, some
-elements of the ``site`` array simply stay always at a value of 0.
-
-The ``lattice.f90`` file needs to be generated especially for each
-model, but only changes if the lattice used changes (e.g. if the number
-of site types or the dimension of the model).
+The role of the ``lattice.f90`` is to generate the map from the ND lattice (N=1, 2, 3) to the 1D
+lattice that is handled by ``base.f90``. The ``lattice`` module imports subroutines from the
+``base`` module. Besides the look-up arrays ``lattice2nr`` and ``nr2lattice``, used to map to and
+from the 1D lattice, this module also implements wrappers to many of the basic functions defined
+in ``base.f90``. Such wrappers take now a 4D array ``lsite`` variable, designating the site on a
+3D lattice, instead of the single integer ``site`` used by ``base``. The first three elements of
+this array indicate the ``(x, y, z)`` position of the corresponding unit cell (in unit cell vector
+units), while the fourth indicates the site type. In cases of lower dimensional lattices, some
+elements of the ``site`` array simply always stay at a value of 0.
+
+The ``lattice.f90`` file needs to be generated especially for each model, but only changes if the
+lattice used changes (e.g., the number of site types or the dimension of the model).
 
 ``proclist.f90``
 ^^^^^^^^^^^^^^^^
 
-``proclist.f90`` includes the routines called by the Python interface
-while running the model. In addition, it encodes the logic necessary to
-update the list of active events (i.e. the main bookkeeping arrays,
-``avail_procs`` and ``nr_of_sites``), given that a specific process has
-been selected for execution. The module imports methods and variables
-from both the ``base`` and ``lattice`` modules.
+``proclist.f90`` includes the routines called by the Python interface while running the model. In
+addition, it encodes the logic necessary to update the list of active events (i.e., the main
+bookkeeping arrays, ``avail_procs`` and ``nr_of_sites``), given that a specific process has been
+selected for execution. The module imports methods and variables from both the ``base`` and
+``lattice`` modules.
 
-The ``proclist.f90`` files needs to be generated specially for each
-model, and is the file that changes most often during model development,
-as it is updated every time a process changes.
+The ``proclist.f90`` files needs to be generated specially for each model and is the file that
+changes most often during model development, as it is updated every time a process changes.
 
-Files for the ``lat_int`` backend
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+``lat_int``
+~~~~~~~~~~~
 
 ``proclist.f90``
 ^^^^^^^^^^^^^^^^
 
-Some of the functionality that existed here in ``local_smart`` has been
-moved to different source files. While the functions called by the
-Python interface during execution remain here, the logic to update the
-list of active events is moved to ``nli_*.f90`` and ``run_proc_*.f90``
-files. In addition, constants are also defined in an independent module
-on the separate file ``proclist_constants.f90``.
+Some of the functionality of ``local_smart`` has been moved to different source files. While the
+functions called by the Python interface during execution remain here, the logic to update the
+list of active events is moved to the ``nli_*.f90`` and ``run_proc_*.f90`` files. In addition,
+constants are also defined in an independent module in the separate file
+``proclist_constants.f90``.
 
 ``proclist_constants.f90``
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Defines a module declaring several constants used by ``proclist``,
-``nli_*`` and ``run_proc_*`` modules.
+Defines a module declaring several constants used by the ``proclist``, ``nli_*`` and
+``run_proc_*`` modules.
 
 ``nli_<lat_int_nr>.f90``
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
-There is one of such file for each lateral interaction group. These
-source files are enumerated starting from zero. Each of them implements
-a module called ``nli_<lat_int_nr>`` which contains a single function
-``nli_<lat_int_group>``. ``<lat_int_group>`` is the name of the lateral
-interaction group, which coincides with the name of the first (lowest
-index) process in the group. These functions implement logic to decide
-which process from the group can occur on a given site, if any.
+There is one of such file for each lateral interaction group. These source files are enumerated
+starting from zero. Each of them implements a module called ``nli_<lat_int_nr>``, which contains a
+single function ``nli_<lat_int_group>``. ``<lat_int_group>`` is the name of the lateral
+interaction group, which coincides with the name of the first (lowest index) process in the group.
+These functions implement the logic to decide which process from the group can occur on a given
+site, if any.
 
 ``run_proc_<lat_int_nr>.f90``
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-There is one of such file for each lateral interaction group. These
-source files are enumerated starting from zero. Each of them implements
-a module called ``run_proc_<lat_int_nr>`` that contains a single
-subroutine ``run_proc_<lat_int_group>``. ``<lat_int_group>`` is the name
-of the lateral interaction group, which coincides with the name of the
-first (lowest index) process in the group. This routine is responsible
-of calling ``lattice/add_proc`` and ``lattice/del_proc`` for each
-lateral interaction group that should potentially be added or deleted.
-For this, it passes results of the ``nli_<lat_int_group>`` functions as
-argument, to ensure correct update of the list of active events.
+There is one of such file for each lateral interaction group. These source files are enumerated
+starting from zero. Each of them implements a module called ``run_proc_<lat_int_nr>``, which
+contains a single subroutine ``run_proc_<lat_int_group>``. ``<lat_int_group>`` is the name of the
+lateral interaction group, which coincides with the name of the first (lowest index) process in
+the group. This routine is responsible for calling ``lattice/add_proc`` and ``lattice/del_proc``
+for each lateral interaction group that should potentially be added or deleted. For this, it
+passes results of the ``nli_<lat_int_group>`` functions as arguments, to ensure correct updates
+of the list of active events.
 
-Files for the ``otf`` backend
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+``otf``
+~~~~~~~
 
 ``proclist.f90``
 ^^^^^^^^^^^^^^^^
 
-Similar to ``lat_int``, this file contains the functions called by the
-Python interface at runtime. Contrary to ``local_smart``, the logic for
-the update of the active event list is in the ``run_proc_<proc_nr>.f90``
-files and constants shared among different modules are defined on
+Similar to ``lat_int``, this file contains the functions called by the Python interface at
+runtime. Contrary to ``local_smart``, the logic for the updates of the active event list is in the
+``run_proc_<proc_nr>.f90`` files and constants shared among different modules are defined in
 ``proclist_constants.f90``.
 
 ``proclist_constants.f90``
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Defines constant values to be shared between the ``proclist``,
-``proclist_pars`` and ``run_proc_*``.
+Defines a module declaring several constants used by the ``proclist``, ``proclist_pars`` and
+``run_proc_*`` modules.
 
 ``proclist_pars.f90``
 ^^^^^^^^^^^^^^^^^^^^^
 
-This file implements the modules ``proclist_pars`` ("process list
-parameters") and takes care of providing functionality that that only
-existed at the Python level in the earlier backends. More importantly,
-it implements the functions used to evaluate rate constants during
-execution. In more detail it:
+This file implements the modules ``proclist_pars`` (process list parameters) and takes care of
+providing functionality that only existed at the Python level in the earlier backends. More
+importantly, it implements the functions used to evaluate rate constants during execution. In more
+detail it
 
--  Implements the Fortran array ``userpar`` to access user-defined
-   parameters at FORTRAN level, and functionality to update them from
-   Python.
--  When necessary, it implements a ``chempots`` array for accessing the
-   chemical potentials in FORTRAN.
--  It includes the routines ``gr_<proc_name>`` and ``rate_<proc_name>``,
-   which are used to evaluate the rate constants on the fly.
+- implements the Fortran array ``userpar`` to access user-defined parameters at Fortran level and
+  functionality to update them from Python.
+- implements a ``chempots`` array for accessing the chemical potentials in Fortran, when
+  necessary.
+- includes the routines ``gr_<proc_name>`` and ``rate_<proc_name>``, which are used to evaluate
+  the rate constants on the fly.
 
 ``run_proc_<proc_nr>.f90``
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-There is one of such file for each process in the model. They implement
-modules ``run_proc_<proc_nr>`` containing a ``run_proc_<proc_name>``
-subroutine each. These routines contain the decision trees that figure
-out which events need to be activated or deactivated and call the
-corresponding functions from ``base`` (``add_proc`` and ``del_proc``).
+There is one of such file for each process in the model. They implement the modules
+``run_proc_<proc_nr>``, each containing a ``run_proc_<proc_name>`` subroutine. These routines
+contain the decision trees that figure out which events need to be activated or deactivated and
+call the corresponding functions from ``base`` (``add_proc`` and ``del_proc``).
 
 .. _data-structs:
 
-Key data-structures
+Key Data Structures
 -------------------
 
-Here we describe the most important arrays required for bookkeeping in
-kmos3. Understanding what information these arrays contain is crucial to
-understand how kmos3 selects the next kMC process to be executed. This is
-explained in :ref:`One kmc step in kmos3 <kmc-step>`. All these data
-structures are declared in the ``base`` module and their dimensions are
-based on the "flattened" representation of the lattice in 1 dimension.
+Here, we describe the most important arrays required for bookkeeping in kmos3. Understanding what
+information these arrays contain is crucial to understand how kmos3 selects the next KMC process
+to be executed. This procedure is explained in more detail in :ref:`kmc-step`. All these data
+structures are declared in the ``base`` module and their dimensions are based on the `flattened`
+representation of the lattice in 1 dimension.
 
-Important scalar variables
+Important Scalar Variables
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
--  ``nr_of_proc`` (int): The total number of processes in the model
--  ``volume`` (int): The total number of sites in the lattice
+- ``nr_of_proc`` (int): The total number of processes in the model.
+- ``volume`` (int): The total number of sites in the lattice.
 
-Important arrays
+Important Arrays
 ~~~~~~~~~~~~~~~~
 
 ``rates``
 ^^^^^^^^^
 
--  Dimension: 1
--  Type: float
--  Size: ``nr_of_proc``
+- Dimension: 1
+- Type: float
+- Size: ``nr_of_proc``
 
-Contains the rate constants for each process. This array is kept fixed
-during the execution of the kMC algorithm, and is only to be changed
-through the Python interface.
+Contains the rate constants for each process. This array is kept fixed during the execution of the
+KMC algorithm, and is only to be changed through the Python interface.
 
-In the ``otf`` backend, rate constants are obtained on-the-fly during
-the execution of the kMC algorithm and stored in the ``rates_matrix`` array and the ``rates`` arrays
-contains simply a set of "default" rate constant values. These values
-can optionally (but not necessarily) be used to help with the
-calculation of the rates.
+In the ``otf`` backend, rate constants are obtained on-the-fly during the execution of the KMC
+algorithm. They are stored in the ``rates_matrix`` array and the ``rates`` array contains simply a
+set of `default` rate constant values. These values can optionally (but not necessarily) be used
+to help with the calculation of the rates.
 
 ``lattice``
 ^^^^^^^^^^^
 
--  Dimension: 1
--  Type: int
--  Size : ``volume``
+- Dimension: 1
+- Type: int
+- Size : ``volume``
 
-This array contains the state of the lattice, i.e. which species sits on
-each site.
+This array contains the state of the lattice, i.e., which species sits on each site.
 
 ``nr_of_sites``
 ^^^^^^^^^^^^^^^
 
--  Dimensions: 1
--  Type: int
--  Size: ``nr_of_proc``
+- Dimension: 1
+- Type: int
+- Size: ``nr_of_proc``
 
-This array keeps track of the number of currently active events
-associated to each process, i.e. it holds the number of different sites
-in which a given process can be executed.
+This array keeps track of the number of currently active events associated to each process, i.e.,
+it holds the number of different sites in which a given process can be executed.
 
 ``accum_rates``
 ^^^^^^^^^^^^^^^
 
--  Dimensions: 1
--  Type: float
--  Size: ``nr_of_proc``
+- Dimension: 1
+- Type: float
+- Size: ``nr_of_proc``
 
-This array is used to store partial sums of rate constants, ordered
-according to process index. In ``local_smart`` and ``lat_int``, thanks
-to the fact that all copies of a process have an equal rate constant,
-the values of this array can be calculated according to
-
-.. math:: \text{\texttt{accum\_rates(i)}} = \sum_{j=1}^{\text{\texttt{i}}} \text{\texttt{rates(j)}} \, * \, \text{\texttt{nr\_of\_sites(j)}}
-   :label: accum-rates-summation
-
-In ``otf`` rate constants for a given process are different for a given
-site. Therefore, evaluation is more involved, namely
+This array is used to store partial sums of rate constants ordered according to process index. In
+``local_smart`` and ``lat_int``, thanks to the fact that all copies of a process have an equal
+rate constant, the values of this array can be calculated according to
 
 .. math::
+  \mathrm{accum\_rates}(i) = \sum_{j=1}^{i} \mathrm{rates}(j) \cdot \mathrm{nr\_of\_sites}(j)
+  :name: accum-rates-summation
 
+In ``otf`` rate constants for a given process can be different for a given site. Therefore,
+evaluation is more involved, namely
 
-   \text{\texttt{accum\_rates(i)}} = \sum_{j=1}^{\text{\texttt{i}}} \sum_{k=1}^{
-   \texttt{nr\_of\_sites(j)}}   \text{\texttt{rates\_matrix(j, k)}}
+.. math::
+  \mathrm{accum\_rates}(i) = \sum_{j=1}^{i} \sum_{k=1}^{\mathrm{nr\_of\_sites}(j)}
+  \mathrm{rates\_matrix}(j, k)
 
-In all backends, the contents of ``accum_rates`` are reevaluated every
-kMC step.
+In all backends, the contents of ``accum_rates`` are re-evaluated in every KMC step.
 
 ``avail_sites``
 ^^^^^^^^^^^^^^^
 
--  Dimensions: 3
--  Type: int
--  Size: ``nr_of_proc * volume * 2``
-
-This is arguably the most important bookkeeping array for kmos3, which
-keeps track of which processes can be executed each sites on the
-lattice, i.e. keeps track of all active events. To accelerate the update
-time of these arrays (see :ref:`here <updating-avail-sites>`), the
-information this array contains is duplicated. In practice,
-``avail_sites`` can be considered as two 2D arrays of size
-``nr_of_proc * volume``.
-
-Each row in ``avail_sites(:, :, 1)`` correspond to a process, and
-contains a list of the indices for the sites in which said process can
-occur according to the current state of the lattice, i.e. a list of the
-sites with active events associated to this process. Each site index
-appears at most once on each row. This array is filled from the right.
-This means that the first ``nr_of_sites(i)`` elements of row ``i`` will
-be larger than zero and smaller or equal than ``volume``, while the last
-``( volume - nr_of_sites(i) )`` elements will all be equal to zero. The
-elements of the rows of ``avail_sites( :, :, 1)`` are **not** sorted,
-and their order depends on the (stochastic) trajectory the system has
-taken.
-
-The rows on ``avail_sites( :, :, 2)`` function as an index for the rows
-of ``avail_sites( :, :, 1)``. Given ``1 <= i <= nr_of_proc`` and
-``1 <= j <= volume``, if process ``i`` can occur on site ``j``, then
-``avail_sites(i, j, 2) = k``, with ``k >= 1`` and such that
-``avail_sites(i, k, 1) = j``. Conversely, if process ``i`` cannot occur
-on site ``j``, then ``avail_sites(i, j, 2) = 0`` and no element in
-``avail_sites(i, :, 1)`` will be equal to ``j``.
-
-
-.. figure:: ../img/avail_sites_example.png
-   :width: 50%
-   :align: center
-
-   A example of an `avail_sites` array for a model with 5 processes and 10 sites.
+- Dimension: 3
+- Type: int
+- Size: ``nr_of_proc ⋅ volume ⋅ 2``
+
+This is arguably the most important bookkeeping array for kmos3, which keeps track of which
+processes can be executed at each site on the lattice, i.e., it keeps track of all active events.
+To accelerate the update time of this array (see :ref:`updating-avail-sites`), its information is
+duplicated. In practice, ``avail_sites`` can be considered as two 2D arrays of size
+``nr_of_proc ⋅ volume``.
+
+Each row in ``avail_sites( :, :, 1)`` correspond to a process, and contains a list of the indices
+for the sites in which said process can occur according to the current state of the lattice, i.e.,
+a list of the sites with active events associated to this process. Each site index appears at most
+once in each row. This array is filled from the right. This means that the first
+``nr_of_sites(i)`` elements of row ``i`` will be larger than zero and smaller or equal than
+``volume``, while the last ``(volume - nr_of_sites(i))`` elements will all be equal to zero. The
+elements of the rows of ``avail_sites( :, :, 1)`` are **not** sorted and their order depends on
+the (stochastic) trajectory the system has taken.
+
+The rows on ``avail_sites( :, :, 2)`` function as an index for the rows of
+``avail_sites( :, :, 1)``. Given ``1 <= i <= nr_of_proc`` and ``1 <= j <= volume``, if process
+``i`` can occur on site ``j``, then ``avail_sites( i, j, 2) = k``, with ``k >= 1`` and such that
+``avail_sites( i, k, 1) = j``. Conversely, if process ``i`` cannot occur on site ``j``, then
+``avail_sites( i, j, 2) = 0`` and no element in ``avail_sites( i, :, 1)`` will be equal to ``j``.
+
+.. figure:: img/avail_sites.svg
+  :width: 100%
+  :align: center
+
+  An example of ``avail_sites( :, :, 1)`` (left) and ``avail_sites( :, :, 2)`` (right) arrays for
+  a model with 4 processes and 10 sites.
 
 ``procstat``
 ^^^^^^^^^^^^
 
--  Dimensions: 1
--  Type: long int
--  Size Total number of processes (``nr_of_proc``)
+- Dimension: 1
+- Type: long int
+- Size: ``nr_of_proc``
 
-This array is used to keep track of how many times each process is
-executed, i.e. the fundamental result of the kMC simulation. This array
-is used by the Python interface to evaluate the turnover frequencies
-(TOFs).
+This array is used to keep track of how many times each process is executed, i.e., the fundamental
+result of the KMC simulation. It is used by the Python interface to evaluate the turnover
+frequencies (TOFs).
 
-Additional arrays for the ``otf`` backend
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+``otf``-Specific Arrays
+~~~~~~~~~~~~~~~~~~~~~~~
 
-The ``otf`` backend uses all the bookkeeping arrays from the other two
-backends, but needs in addition the following
+The ``otf`` backend uses all the bookkeeping arrays from the other two backends, but additionally
+requires the following arrays.
 
 ``accum_rates_proc``
 ^^^^^^^^^^^^^^^^^^^^
 
--  Dimension: 1
--  Type: float
--  Size: ``volume``
+- Dimension: 1
+- Type: float
+- Size: ``volume``
 
-This array is updated in every kMC step with the accumulated rate for
-the process selected for execution. This is necessary because the site
-cannot be selected uniformly random from ``avail_sites``, but needs to
-be picked with a binary search on this array.
+This array is updated in every KMC step with the accumulated rate for the process selected for
+execution. This is necessary because the site cannot be selected uniformly random from
+``avail_sites``, but needs to be picked with a binary search on this array.
 
 ``rates_matrix``
 ^^^^^^^^^^^^^^^^
 
--  Dimension: 2
--  Type: float
--  Size: ``nr_of_proc * volume``
+- Dimension: 2
+- Type: float
+- Size: ``nr_of_proc ⋅ volume``
 
-This matrix stores the rate for each current active event. The entries
-of this matrix are sorted in the same order as the elements of
-``avail_sites(:, :, 1)`` and used to update the ``accum_rates`` array.
+This matrix stores the rate for each current active event. The entries of this matrix are sorted
+in the same order as the elements of ``avail_sites( :, :, 1)`` and used to update the
+``accum_rates`` array.
 
 .. _kmc-step:
 
-One kmc step in kmos3
+One KMC Step in kmos3
 ---------------------
 
-.. figure:: ../img/step_local_smart.png
-   :width: 100%
-   :align: center
-
-   A kMC step using kmos3s ``local_smart`` backend. Subroutines are represented by labeled boxes. The content of a given box summarizes the operations performed by the subroutine or the subroutines called by it. Variables (scalar or arrays) are indicated by gray boxes. An arrow pointing to a variable indicates that a subroutine updates it (or defines it). Arrows pointing to a subroutine indicate that the routine uses the variable. In kmos3, the passing of information occurs both through subroutine arguments and through module-wide shared variables; this distinction is not present in the diagram.
-
-The main role of the bookkeeping arrays from last section, specially
-``avail_sites`` and ``nr_of_sites``, is to make kMC steps execute fast
-and without the need to query the full lattice state. The routines
-``do_kmc_step`` and ``do_kmc_steps`` from the ``proclist`` module
-execute such steps. The diagram above represents the functions called by these
-routines.
-
-During system initialization, the current state of the system is written
-into the ``lattice`` array and the ``avail_sites`` and ``nr_of_sites``
-arrays are initialized according to this. With these arrays in sync, it
-is possible to evaluate ``accum_rates`` according to eq. :eq:`accum-rates-summation`. With this information, and using two random
-numbers :math:`0 < \texttt{ran\_proc}, \texttt{ran\_site} < 1`, the
-routine ``base/determine_procsite`` can select the next event to
-execute. This subroutine first selects a process according to the
-probabilities given by ``accum_rates``. This is achieved by multiplying
-the total accumulated rate, i.e. the last element of ``accum_rates``,
-times ``ran_proc``. The subroutine ``base/interval_search_real``
-implements a `binary
-search <http://en.wikipedia.org/wiki/Binary_search_algorithm>`__ to find
-the index ``proc`` such that
+``local_smart``
+~~~~~~~~~~~~~~~
+
+.. figure:: img/step_local_smart.png
+  :width: 100%
+  :align: center
+
+  A KMC step using the ``local_smart`` backend. Subroutines are represented by labeled boxes.
+  The content of a given box summarizes the operations performed by the subroutine or the
+  subroutines called by it. Variables (scalar or arrays) are indicated by gray boxes. An arrow
+  pointing to a variable indicates that a subroutine updates it (or defines it). Arrows pointing
+  to a subroutine indicate that the routine uses the variable. In kmos3, the passing of
+  information occurs both through subroutine arguments and through module-wide shared variables;
+  this distinction is not present in the diagram.
+
+The main role of the bookkeeping arrays from the last section, specially ``avail_sites`` and
+``nr_of_sites``, is to make KMC steps execute fast and without the need to query the full lattice
+state. The routines ``do_kmc_step`` and ``do_kmc_steps`` from the ``proclist`` module execute such
+steps. The diagram above represents the functions called by these routines.
+
+During system initialization, the current state of the system is written into the ``lattice``
+array and the ``avail_sites`` and ``nr_of_sites`` arrays are initialized according to this. With
+these arrays in sync, it is possible to evaluate ``accum_rates`` according to eq.
+:eq:`accum-rates-summation`. With this information, and using two random numbers
+:math:`0 < \mathrm{ran\_proc}, \mathrm{ran\_site} < 1`, the routine ``base/determine_procsite``
+can select the next event to execute. This subroutine first selects a process according to the
+probabilities given by ``accum_rates``. This is achieved by multiplying the total accumulated
+rate, i.e., the last element of ``accum_rates`` times ``ran_proc``. The subroutine
+``base/interval_search_real`` implements a `binary search
+<https://en.wikipedia.org/wiki/Binary_search#Algorithm>`_ to find the index ``proc`` such that
 
 .. math::
-   
-   \texttt{accum\_rates(proc -1)} \le \\
-   \texttt{ran\_proc \* accum\_rates(nr\_of\_proc)} \le \\
-   \texttt{accum\_rates(proc)}.
-
-This step scales O(\ :math:`\log` (``nr_of_proc``)). Then, a site is
-selected with uniform probability from the (non-zero) items of
-``avail_sites(proc,:,1)``. This is valid because all individual events
-associated to a given processes share the same rate constant. This way,
-we avoid searching through the whole lattice, and we are able to select
-a ``site`` at constant time.
-
-After this, the ``proclist/run_proc_nr`` subroutine is called with
-``proc`` and ``site`` as arguments. This function first calls
-``base/increment_procstat`` with ``proc`` as argument to keep track of
-the times each process is executed. Next, it uses the ``nr2lattice``
-look-up table to transform the *scalar* ``site`` variable into the 4D
-representation (see :ref:`lattice.f90 <lattice>`). Finally, this
-function calls the methods which actually update the the lattice state
-and, consistent with this, the bookkeeping arrays. These are the
-``proclist/take_<species>_<layer>_<site>`` and
-``proclist/put_<species>_<layer>_<site>`` methods. Given a lattice site,
-``take`` methods replace the corresponding species sitting there with
-the default species. The put methods do the converse. The set of put and
-take routines that need to be executed by each process are directly
-obtained from the conditions and actions from the process definition.
-These are hard-coded into the ``proclist/run_proc_nr`` routine,
-organized in a case-select block for the ``proc`` variable.
-
-The ``proclist/take_<species>_<layer>_<site>`` and
-``proclist/put_<species>_<layer>_<site>`` subroutines are arguably the
-most complex of a ``local_smart`` kmos3 model. Their ultimate goal is to
-call ``lattice/add_proc`` and/or ``lattice/del_proc`` to update
-``avail_sites`` and ``nr_of_sites`` in correspondence with the change in
-the lattice they are effecting. To do this they need to query the
-current state of the lattice. The structure of these routines is
-described :ref:`below <put-take>`.
-
-The actual update of ``avail_sites`` and ``nr_of_proc`` is done by the
-``base/add_proc`` and ``base/del_proc`` functions. Under :ref:`Updating avail_sites <updating-avail-sites>` below, we explain how
-these functions make use of the structure of ``avail_sites`` to make
-updates take constant time. Once these arrays have been updated, the
-bookkeeping arrays are again in sync with the lattice state. Therefore,
-it is possible to reevaluate ``accum_rates`` using eq.  :eq:`accum-rates-summation` and start the process for the selection of the next step.
+  \mathrm{accum\_rates}(\mathrm{proc} - 1) \le \\
+  \mathrm{ran\_proc} \cdot \mathrm{accum\_rates}(\mathrm{nr\_of\_proc}) \le \\
+  \mathrm{accum\_rates}(\mathrm{proc}).
+
+This step scales \ :math:`\mathcal{O}(\log(`\ ``nr_of_proc``\ :math:`))`. Then, a site is selected
+with uniform probability from the (non-zero) items of ``avail_sites( proc, :, 1)``. This is valid
+because all individual events associated to a given processes share the same rate constant. This
+way, we avoid searching through the whole lattice, and we are able to select a ``site`` at
+constant time.
+
+After this, the ``proclist/run_proc_nr`` subroutine is called with ``proc`` and ``site`` as
+arguments. This function first calls ``base/increment_procstat`` with ``proc`` as argument to keep
+track of the times each process is executed. Next, it uses the ``nr2lattice`` look-up table to
+transform the *scalar* ``site`` variable into the 4D representation (see :ref:`lattice`). Finally,
+this function calls the methods which actually update the the lattice state and, consistent with
+this, the bookkeeping arrays. These are the ``proclist/take_<species>_<layer>_<site>`` and
+``proclist/put_<species>_<layer>_<site>`` methods. Given a lattice site, ``take`` methods replace
+the corresponding species sitting there with the default species. The put methods do the converse.
+The set of put and take routines that need to be executed by each process are directly obtained
+from the conditions and actions from the process definition. These are hard-coded into the
+``proclist/run_proc_nr`` routine, organized in a case-select block for the ``proc`` variable.
+
+The ``proclist/take_<species>_<layer>_<site>`` and ``proclist/put_<species>_<layer>_<site>``
+subroutines are arguably the most complex of a ``local_smart`` kmos3 model. Their ultimate goal is
+to call ``lattice/add_proc`` and/or ``lattice/del_proc`` to update ``avail_sites`` and
+``nr_of_sites`` in correspondence with the change in the lattice they are effecting. To do this
+they need to query the current state of the lattice. The structure of these routines is described
+:ref:`below <put-take>`.
+
+The actual update of ``avail_sites`` and ``nr_of_proc`` is done by the ``base/add_proc`` and
+``base/del_proc`` functions. Under :ref:`updating-avail-sites` below, we explain how these
+functions make use of the structure of ``avail_sites`` to make updates take constant time. Once
+these arrays have been updated, the bookkeeping arrays are again in sync with the lattice state.
+Therefore, it is possible to reevaluate ``accum_rates`` using eq. :eq:`accum-rates-summation` and
+start the process for the selection of the next step.
 
 .. _put-take:
 
-The ``put`` and ``take`` routines
+The ``put`` and ``take`` Routines
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-These subroutines take care of updating the lattice and keeping the
-bookkeeping arrays in sync with it. When the occupation of a given site
-changes, some formerly active events need to be deactivated, while some
-formerly inactive events need to be activated. Figuring out which those
+These subroutines take care of updating the lattice and keeping the bookkeeping arrays in sync
+with it. When the occupation of a given site changes, some formerly active events need to be
+deactivated, while some formerly inactive events need to be activated. Figuring out which those
 events are is the main role of the ``put`` and ``take`` routines.
 
-In kmos3, processes are represented by a list of conditions and a list of
-actions. An event is active if and only if all the conditions of its
-associated process are satisfied. As the put and take routines only look
-at the change of an individual site in the lattice, determining which
-events need to be turned-off is straightforward: All active events which
-have a condition that gets unfulfilled on the site affected by the
-put/take routine will be deactivated. This is the first thing put/take
-routines do after updating the lattice.
-
-Deciding which processes need to be activated is more involved. All
-inactive events with a condition that gets fulfilled by the effect of
-the put/take routine are candidates for activation. However, in this
-case, it is necessary to check the lattice state to find out whether or
-not such events have all other conditions fulfilled. A straightforward
-of accomplishing this is to sequentially look at each event, i.e.:
-
-::
+In kmos3, processes are represented by a list of conditions and a list of actions. An event is
+active if and only if all the conditions of its associated process are satisfied. As the put and
+take routines only look at the change of an individual site in the lattice, determining which
+events need to be turned off is straightforward: All active events which have a condition that
+gets unfulfilled on the site affected by the put/take routine will be deactivated. This is the
+first thing put/take routines do after updating the lattice.
+
+Deciding which processes need to be activated is more involved. All inactive events with a
+condition that gets fulfilled by the effect of the put/take routine are candidates for activation.
+However, in this case, it is necessary to check the lattice state to find out whether or not such
+events have all other conditions fulfilled. A straightforward of accomplishing this is to
+sequentially look at each event, i.e.,::
    
-   FOR each candidate event E
-       TurnOn = True
-       FOR each condition C of E
-       IF C is unfulfilled:
-           TurnOn = False
-           break
-       ENDIF
-       ENDFOR
-       IF TurnOn is True:
-       Activate E
-       ENDIF
-   ENDFOR
-
-However, chances are that many of the candidate events will have
-conditions on the same site. Therefore, a routine like the above would
-query a given lattice site many times for each execution of a put/take
-routine. For complex models with many conditions in the processes, this
-could become quickly the main computational bottleneck of the
-simulation.
-
-The alternative to this naive approach, is to try to build a decision
-tree that queries the lattice state more efficiently. kmos3 generates
-such a decision tree using an heuristic algorithm. The main idea behind
-it is to group all the sites that would need to be queried and to sort
-them by the number of candidate events with conditions on them. A
-decision tree is built such that sites are queried on that order, thus
-prioritizing the sites that are more likely to reduce the number of
-processes that need activation. Such decision trees are implemented as
-select-case trees in the put/take routines and typically occupy the bulk
-of the code of ``proclist.f90``. A more detailed description on how this
-is done is discussed :ref:`below <write-put-take>`.
+  FOR each candidate event E
+      TurnOn = True
+      FOR each condition C of E
+      IF C is unfulfilled:
+          TurnOn = False
+          break
+      ENDIF
+      ENDFOR
+      IF TurnOn is True:
+      Activate E
+      ENDIF
+  ENDFOR
+
+However, chances are that many of the candidate events will have conditions on the same site.
+Therefore, a routine like the above would query a given lattice site many times for each execution
+of a put/take routine. For complex models with many conditions in the processes, this could become
+quickly the main computational bottleneck of the simulation.
+
+The alternative to this naive approach, is to try to build a decision tree that queries the
+lattice state more efficiently. kmos3 generates such a decision tree using an heuristic algorithm.
+The main idea behind it is to group all the sites that would need to be queried and to sort them
+by the number of candidate events with conditions on them. A decision tree is built such that
+sites are queried on that order, thus prioritizing the sites that are more likely to reduce the
+number of processes that need activation. Such decision trees are implemented as select-case trees
+in the put/take routines and typically occupy the bulk of the code of ``proclist.f90``. A more
+detailed description on how this is done is discussed :ref:`below <write-put-take>`.
 
 .. _updating-avail-sites:
 
 Updating ``avail_sites``
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. figure:: ../img/add_proc.png
-   :width: 100%
-   :align: center
-
-   Adding an process to the =avail_sites= array. Pseudocode for the addition of a process is also indicated.
-
-The ``avail_sites`` and ``nr_of_sites`` arrays are only updated through
-the ``base/add_proc`` and ``base/del_proc`` subroutines, which take a
-process index ``proc`` and a site index ``site`` as input arguments.
-Adding events is programmatically easier. As the rows of
-``avail_sites( :, :, 1)`` are filled from the left, the new event can be
-added by changing the first zero item of the corresponding row, i.e.
-``avail_sites(proc, nr_of_sites(proc) + 1, 1)``, to ``site`` and
-updating ``avail_sites( :, :, 2)`` and ``nr_of_procs`` accordingly. An
-example of this procedure is presented in the figure above.
-
-.. figure:: ../img/del_proc.png
-   :width: 100%
-   :align: center
-
-   Deleting an process from =avail_sites= array. Pseudocode for the deletion of a process is also indicated.
-
-
-Deleting an event is slightly more involved, as non-zero elements in
-``avail_sites(:, :, 1)`` rows need to remain contiguous and on the left
-side of the array. To ensure this, the element that would be deleted
-(somewhere in the middle of the array) is updated to the value of the
-last non-zero element of the row, which is later deleted. To keep the
-arrays in sync, ``avail_sites(. , . , 2)`` is also updated, by updating
-the index of the moved site to reflect its new position. Finally,
-``avail_sites(site, proc, 2)`` is set to zero. The figure
-above shows an example and presents pseudocode for such an update.
-Having the information in ``avail_sites(:,:,1)`` duplicated (but
-restructures) in ``avail_sites(:,:,2)`` allows these update operations
-to be performed in constant time, instead of needing to perform updates
-that scale with the system size.
-
-A kmc step with the ``lat_int`` backend
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. figure:: ../img/step_lat_int.png
-    :width: 100%
-    :align: center
-
-    A kMC step using kmos3s ``lat_int`` backend. Subroutines are represented by labeled boxes. The content of a given box summarizes the operations performed by the subroutine or the subroutines called by it. Variables (scalar or arrays) are indicated by gray boxes. An arrow pointing to a variable indicates that a subroutine updates it (or defines it). Arrows pointing to a subroutine indicate that the routine uses the variable. In kmos3, the passing of information occurs both through subroutine arguments and through module-wide shared variables; this distinction is not present in the diagram.
-
-The process of executing a kMC step with the ``lat_int`` backend is very
-similar as that of the ``local_smart`` backend. In particular, the way
-``avail_sites``, ``nr_of_procs`` and ``accum_rates`` are updated, as
-well as the selection of process and site indices ``proc`` and ``site``
-that will be executed is identical. The only difference exists withing
-the call of the ``proclist/run_proc_nr`` routine, as the routines for
-finding which events need to be (de)activated are implemented
-differently.
-
-In ``lat_int``, ``proclist/proc_run_nr`` does not call ``put`` and
-``take`` subroutines (which do not exist in the ``lat_int`` code-base),
-but calls subroutines specific to each lateral interaction group
-``run_proc_<lat_int_nr>/run_proc_<lat_int_group>``. They do not directly
-implement a decision tree, but rely on the
-``nli_<lat_int_nr>/nli_<lat_int_group>`` functions.
-
-The ``nli_<lat_int_nr>/nli_<lat_int_group>`` perform the analysis of the
-lattice state. They take a site on the lattice and look at the
-conditions of the elements of the corresponding lateral interaction
-event group. Using this information, they return the index of the
-process (within the lateral interaction group) which can currently be
-executed. If none can, it returns 0.
-
-A ``proclist/run_proc_<lat_int_group>`` routine first calls ``del_proc``
-for each lateral interaction event group which has a condition
-(including bystanders) affected by the changes in the lattice. The
-argument for ``del_proc`` will be the output of the corresponding
-``nli_*`` functions, which will figure out which of the events is
-currently active (and can thus be deleted). After deleting processes,
-the lattice is updated according to the actions of the lateral
-interaction group. Once the new system state is set, ``add_proc`` is
-called for the same processes that ``del_proc`` was called, again using
-``nli_*`` as argument. This way, the correct processes associated to the
-new state of the lattice will be activated.
-
-This method works because of a slight, but important, difference in
-``base/add_proc`` and ``base/del_proc`` between ``lat_int`` and
-``local_smart``. In ``local_smart``, calling one of these functions with
-an argument ``proc=0`` would lead to a program failure. In ``lat_int``,
-this leads to the functions simply not adding or deleting any process to
-``avail_sites``.
-
-A kmc step with the ``otf`` backend
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. figure:: ../img/step_otf.png
-   :width: 100%
-   :align: center
-
-   A kMC step in with the ``otf`` backend. Subroutines are represented by labeled boxed, located inside the box corresponding to the calling function. Variables (scalar or arrays) are indicated by gray boxes. An arrow pointing to a variable indicates that a subroutine updates it (or defines it). An arrows pointing to a subroutine indicates that the routine uses the variable or the output of the function. The passing of information occurs both through subroutine arguments and through module-wide shared variables; this distinction is not present in the diagram.
+.. figure:: img/add_proc.svg
+  :width: 100%
+  :align: center
 
-   
-As expected, the algorithm for running a kMC step with ``otf`` differs
-considerably from ``local_smart`` and ``lat_int``. Firstly, the update
-of the ``accum_rates`` is more involved, as different copies of the
-processes do not share a single rate constant. For this reason, it is
-necessary to use the ``rates_matrix`` array, which contains the current
-rate constants for all active events. The ``accum_rates`` array is
-updated according to
+  Adding site 6 to process 1 in the ``avail_sites( :, :, 1)`` (left) and ``avail_sites( :, :, 2)``
+  (right) arrays.
+
+The corresponding pseudocode looks like this:
 
 .. math::
+  \mathrm{nr\_of\_sites}(\mathrm{proc}) \leftarrow \mathrm{nr\_of\_sites}(\mathrm{proc}) \\
+  \mathrm{avail\_sites}(\mathrm{proc}, \mathrm{nr\_of\_sites}(\mathrm{proc}), 1) \leftarrow
+  \mathrm{site} \\
+  \mathrm{avail\_sites}(\mathrm{proc}, \mathrm{site}, 2) \leftarrow
+  \mathrm{nr\_of\_sites}(\mathrm{proc})
 
-   \text{\texttt{accum\_rates(i)}} = \sum_{j=1}^{\text{\texttt{i}}} \sum_{k=1}^{
-   \texttt{nr\_of\_sites(j)}}   \text{\texttt{rates\_matrix(j, k)}}
+The ``avail_sites`` and ``nr_of_sites`` arrays are only updated through the ``base/add_proc`` and
+``base/del_proc`` subroutines, which take a process index ``proc`` and a site index ``site`` as
+input arguments. Adding events is programmatically easier. As the rows of
+``avail_sites( :, :, 1)`` are filled from the left, the new event can be added by changing the
+first zero item of the corresponding row, i.e., ``avail_sites(proc, nr_of_sites(proc) + 1, 1)``,
+to ``site`` and updating ``avail_sites( :, :, 2)`` and ``nr_of_procs`` accordingly. An example of
+this procedure is presented in the figure and pseudocode above.
 
-The computational time to perform this summation now scales as
-:math:`O \left( \texttt{nr\_of\_procs} \times \texttt{volume} \right)`,
-instead of the :math:`O \left( \texttt{nr\_of\_procs}\right)` for
-``local_smart``. Though this might seem like a disadvantage, it is
-important to notice that the value of ``nr_of_procs`` in ``otf`` can be
-smaller (potentially by several orders of magnitude) than in
-``local_smart``, and thus ``otf`` can outperform ``local_small`` for
-complex models (many lateral interactions) when using sufficiently small
-simulation sizes (small ``volume``).
-
-Once ``accum_rates`` is evaluated, ``base/determine_procsite`` proceeds
-to find the process index ``proc`` of the event to be executed. This is
-achieved by performing a binary search on ``accum_rates``, exactly like
-in ``local_smart`` or ``lat_int``. To select the ``site`` index, it is
-first necessary to evaluate
+.. figure:: img/del_proc.svg
+  :width: 100%
+  :align: center
+
+  Deleting site 5 from process 3 in the ``avail_sites( :, :, 1)`` (left) and
+  ``avail_sites( :, :, 2)`` (right) arrays.
+
+The corresponding pseudocode looks like this:
 
 .. math::
+  \mathrm{del\_index} = \mathrm{avail\_sites}(\mathrm{proc}, \mathrm{site}, 2) \\
+  \mathrm{move\_site} = \mathrm{avail\_sites}(\mathrm{proc},
+  \mathrm{nr\_of\_sites}(\mathrm{proc}), 1) \\
+  \mathrm{avail\_sites}(\mathrm{proc}, \mathrm{del\_index}, 1) \leftarrow \mathrm{move\_site} \\
+  \mathrm{avail\_sites}(\mathrm{proc}, \mathrm{nr\_of\_sites}(\mathrm{proc}), 1) \leftarrow 0 \\
+  \mathrm{avail\_sites}(\mathrm{proc}, \mathrm{move\_site}, 2) \leftarrow \mathrm{del\_index} \\
+  \mathrm{avail\_sites}(\mathrm{proc}, \mathrm{site}, 2) \leftarrow 0 \\
+  \mathrm{nr\_of\_sites}(\mathrm{proc}) \leftarrow \mathrm{nr\_of\_sites}(\mathrm{proc}) - 1
+
+Deleting an event is slightly more involved, as non-zero elements in ``avail_sites( :, :, 1)``
+rows need to remain contiguous and on the left side of the array. To ensure this, the element that
+would be deleted (somewhere in the middle of the array) is updated to the value of the last
+non-zero element of the row, which is later deleted. To keep the arrays in sync,
+``avail_sites( :, :, 2)`` is also updated, by updating the index of the moved site to reflect its
+new position. Finally, ``avail_sites( site, proc, 2)`` is set to zero. The figure and pseudocode
+above shows an example for such an update. Having the information in ``avail_sites( :, :, 1)``
+duplicated (but restructured) in ``avail_sites( :, :, 2)`` allows these update operations to be
+performed in constant time, instead of needing to perform updates that scale with the system size.
 
-   \texttt{accum\_rates\_proc}(i) = \sum_{k=1}^{
-   i}   \text{\texttt{rates\_matrix(proc, k)}},
+``lat_int``
+~~~~~~~~~~~
 
-i.e. the partial sums of rates for the different events associated to
-process ``proc``. Then a second binary search can be performed on
-``accum_rates_proc`` to find ``s`` such that
+.. figure:: img/step_lat_int.png
+  :width: 100%
+  :align: center
+
+  A KMC step using the ``lat_int`` backend. Subroutines are represented by labeled boxes. The
+  content of a given box summarizes the operations performed by the subroutine or the subroutines
+  called by it. Variables (scalar or arrays) are indicated by gray boxes. An arrow pointing to a
+  variable indicates that a subroutine updates it (or defines it). Arrows pointing to a subroutine
+  indicate that the routine uses the variable. In kmos3, the passing of information occurs both
+  through subroutine arguments and through module-wide shared variables; this distinction is not
+  present in the diagram.
+
+The process of executing a KMC step with the ``lat_int`` backend is very similar as that of the
+``local_smart`` backend. In particular, the way ``avail_sites``, ``nr_of_procs`` and
+``accum_rates`` are updated, as well as the selection of process and site indices ``proc`` and
+``site`` that will be executed is identical. The only difference is the call of the
+``proclist/run_proc_nr`` routine, as the routines for finding which events need to be
+(de)activated are implemented differently.
+
+In ``lat_int``, ``proclist/proc_run_nr`` does not call ``put`` and ``take`` subroutines (which do
+not exist in the ``lat_int`` code-base), but calls subroutines specific to each lateral
+interaction group ``run_proc_<lat_int_nr>/run_proc_<lat_int_group>``. They do not directly
+implement a decision tree, but rely on the ``nli_<lat_int_nr>/nli_<lat_int_group>`` functions.
+
+The ``nli_<lat_int_nr>/nli_<lat_int_group>`` perform the analysis of the lattice state. They take
+a site on the lattice and look at the conditions of the elements of the corresponding lateral
+interaction event group. Using this information, they return the index of the process (within the
+lateral interaction group), which can currently be executed. If none can, it returns 0.
+
+A ``proclist/run_proc_<lat_int_group>`` routine first calls ``del_proc`` for each lateral
+interaction event group, which has a condition (including bystanders) affected by the changes in
+the lattice. The argument for ``del_proc`` will be the output of the corresponding ``nli_*``
+functions, which will figure out which of the events is currently active (and can thus be
+deleted). After deleting processes, the lattice is updated according to the actions of the lateral
+interaction group. Once the new system state is set, ``add_proc`` is called for the same processes
+that ``del_proc`` was called, again using ``nli_*`` as argument. This way, the correct processes
+associated to the new state of the lattice will be activated.
+
+This method works because of a slight, but important, difference in ``base/add_proc`` and
+``base/del_proc`` between ``lat_int`` and ``local_smart``. In ``local_smart``, calling one of
+these functions with an argument ``proc=0`` would lead to a program failure. In ``lat_int``, this
+leads to the functions simply not adding or deleting any process to ``avail_sites``.
+
+``otf``
+~~~~~~~
+
+.. figure:: img/step_otf.png
+  :width: 100%
+  :align: center
+
+  A KMC step using the ``otf`` backend. Subroutines are represented by labeled boxed, located
+  inside the box corresponding to the calling function. Variables (scalar or arrays) are indicated
+  by gray boxes. An arrow pointing to a variable indicates that a subroutine updates it (or
+  defines it). An arrows pointing to a subroutine indicates that the routine uses the variable or
+  the output of the function. The passing of information occurs both through subroutine arguments
+  and through module-wide shared variables; this distinction is not present in the diagram.
+ 
+As expected, the algorithm for running a KMC step with ``otf`` differs considerably from
+``local_smart`` and ``lat_int``. Firstly, the update of the ``accum_rates`` is more involved, as
+different copies of the processes do not share a single rate constant. For this reason, it is
+necessary to use the ``rates_matrix`` array, which contains the current rate constants for all
+active events. The ``accum_rates`` array is updated according to
 
 .. math::
+  \mathrm{accum\_rates}(i) = \sum_{j=1}^{i} \sum_{k=1}^{\mathrm{nr\_of\_sites}(j)}
+  \mathrm{rates\_matrix}(j, k).
 
-   \texttt{accum\_rates\_proc(s -1)} \le \\
-   \texttt{ran\_site \* accum\_rates\_proc(nr\_of\_sites(proc))} \le \\
-   \texttt{accum\_rates\_proc(s)}.
-
-Therefore, ``s`` corresponds to the index of the selected site according to
-the current order of the ``avail_sites(:, :, 1)`` array. The site index
-as ``site = avail_sites(proc, s, 1)``.
-
-The process of updating the lattice and the bookkeeping arrays is also
-rather different. As in the other backends, first
-``proclist/run_proc_nr`` is called with ``proc`` and ``site`` as
-arguments. Besides calling ``base/increment_procstat``, it is
-responsible for calling the adequate
-``run_proc_<proc_nr>/run_proc_<proc_name>`` routine. There is one of
-such routine for each process and they play the same role as the ``put``
-and ``take`` routines in ``local_smart``. The main difference is that
-these routines are built for executing full processes instead of
-elemental changes to individual sites. These functions need to look into
-the state of lattice and determine:
-
-a) which events get one or more of their conditions unfulfilled by the executed event
-b) which events get one or more of their condition fulfilled by the executed event and also have all other conditions fulfilled
-c) which events are affected by a change in one of their bystanders
-   
-For events in (a), ``run_proc_<proc_nr>/run_proc_<proc_name>`` run
-``lattice/del_proc``. For events in (b) and (c), rate constants are
-needed. This is done using functions from ``proclist_pars`` module, as
-described below. With the know rate constants,
-``run_proc_<proc_nr>/run_proc_<proc_name>`` calls ``lattice/add_proc``
-for each event in (b) and ``lattice/update_rates_matrix`` for each event
-in (c). In ``otf``, ``lattice/add_proc`` and ``base/add_proc`` take a
-floating point argument for the rate constant in addition to the usual
-``site`` and ``proc`` arguments. More details on the structure of these
-routines will be given in the section on the translation algorithm.
-
-Rate constants are evaluated using the
-``proclist_params/gr_<proc_name>``. These functions look at the current
-state of the lattice to evaluate a integer array ``nr_vars`` which
-encodes the number of the different types of interactions that are
-present. This is used as input for the corresponding
-``proclist_pars/rate_<proc_name>`` which implements the user defined
-rate expression. These can include user-defined parameters, which are
-encoded in FORTRAN with the ``userpar`` array in the ``proclist_pars``
-module.
-
-After ``proclist/run_proc_nr`` executes, the ``lattice``,
-``avail_sites``, ``nr_of_sites`` and ``rates_matrix`` are in sync again,
-and the next kMC step can start with the evaluation of ``accum_rates``.
-
-The code generation routines
-----------------------------
+The computational time to perform this summation now scales as
+:math:`\mathcal{O}(\mathrm{nr\_of\_procs} \cdot \mathrm{volume})`, instead of the
+:math:`\mathcal{O}(\mathrm{nr\_of\_procs})` for ``local_smart``. Though this might seem like a
+disadvantage, it is important to notice that the value of ``nr_of_procs`` in ``otf`` can be
+smaller (potentially by several orders of magnitude) than in ``local_smart`` and thus ``otf`` can
+outperform ``local_smart`` for complex models (many lateral interactions) when using sufficiently
+small simulation sizes (small ``volume``).
+
+Once ``accum_rates`` is evaluated, ``base/determine_procsite`` proceeds to find the process index
+``proc`` of the event to be executed. This is achieved by performing a binary search on
+``accum_rates``, exactly like in ``local_smart`` or ``lat_int``. To select the ``site`` index, it
+is first necessary to evaluate
 
-.. _fig-export-proc:
+.. math::
+  \mathrm{accum\_rates\_proc}(i) = \sum_{k=1}^{i} \mathrm{rates\_matrix}(\mathrm{proc}, k),
 
-.. figure:: ../img/export_procedure.png
-   :width: 60%
-   :align: center
+i.e., the partial sums of rates for the different events associated to process ``proc``. Then, a
+second binary search can be performed on ``accum_rates_proc`` to find ``s`` such that
 
-   Routines called during the export of a kmos3 model
+.. math::
+  \mathrm{accum\_rates\_proc}(s-1) \le \\
+  \mathrm{ran\_site} \cdot \mathrm{accum\_rates\_proc}(\mathrm{nr\_of\_sites}(\mathrm{proc}))
+  \le \\
+  \mathrm{accum\_rates\_proc}(s).
+
+Therefore, ``s`` corresponds to the index of the selected site according to the current order of
+the ``avail_sites( :, :, 1)`` array. The site index as ``site = avail_sites( proc, s, 1)``.
+
+The process of updating the lattice and the bookkeeping arrays is also rather different. As in the
+other backends, first ``proclist/run_proc_nr`` is called with ``proc`` and ``site`` as arguments.
+Besides calling ``base/increment_procstat``, it is responsible for calling the adequate
+``run_proc_<proc_nr>/run_proc_<proc_name>`` routine. There is one of such routine for each process
+and they play the same role as the ``put`` and ``take`` routines in ``local_smart``. The main
+difference is that these routines are built for executing full processes instead of elemental
+changes to individual sites. These functions need to look into the state of lattice and determine
+
+a) which events get one or more of their conditions unfulfilled by the executed event,
+b) which events get one or more of their conditions fulfilled by the executed event and also have
+   all other conditions fulfilled,
+c) which events are affected by a change in one of their bystanders.
    
+For events in a., ``run_proc_<proc_nr>/run_proc_<proc_name>`` run ``lattice/del_proc``. For events
+in b. and c., rate constants are needed. This is done using functions from the ``proclist_pars``
+module, as described below. With the known rate constants,
+``run_proc_<proc_nr>/run_proc_<proc_name>`` calls ``lattice/add_proc`` for each event in b. and
+``lattice/update_rates_matrix`` for each event in c. In ``otf``, ``lattice/add_proc`` and
+``base/add_proc`` take a floating point argument for the rate constant in addition to the usual
+``site`` and ``proc`` arguments. More details on the structure of these routines will be given in
+the section on the translation algorithm.
+
+Rate constants are evaluated using the ``proclist_params/gr_<proc_name>``. These functions look at
+the current state of the lattice to evaluate a integer array ``nr_vars``, which encodes the number
+of the different types of interactions that are present. This is used as input for the
+corresponding ``proclist_pars/rate_<proc_name>``, which implements the user defined rate
+expressions. These can include user-defined parameters, which are encoded in Fortran with the
+``userpar`` array in the ``proclist_pars`` module.
+
+After ``proclist/run_proc_nr`` executes, the ``lattice``, ``avail_sites``, ``nr_of_sites``, and
+``rates_matrix`` are in sync again, and the next KMC step can start with the evaluation of
+``accum_rates``.
+
+The Code Generation Routines
+----------------------------
 
-As most of the source code described in the previous sections is
-generated automatically, it is crucial to also understand how this
-works. Code generation are contained in the ``kmos3.io`` Python
-submodule. The normal way to use this module is through the command
-line, i.e. invoking the ``kmos3 export`` command. The figure :ref:`above <fig-export-proc>` shows the subroutines/functions which are called
-when this is done. The command line call itself is handled by the
-``kmos3.cli`` submodule. Furthermore, the export procedure relies on the
-classes from the ``kmos3.types`` submodule, which define the abstract
-representation of the kMC model. Specifically, a model definition from
-an ``xml`` or ``ini`` file into a ``kmos3.types.Project`` object. The
-rest is done with the help of an instance of the
-``kmos3.io.ProcListWriter`` class, which contains several methods that
-write source code. Specifically, Fortran source code is generated in one
-of three ways:
-
--  files are copied directly from kmos3s installation
--  code is generated with the help of a template file, which is
-   processed by the ``kmos3.io.ProcListWriter.write_template`` method
--  code is written from scratch by one of the several
-   ``kmos3.io.ProcListWriter.write_proclist_*`` methods.
-
-The format of the template files and how
-``kmos3.io.ProcListWriter.write_template`` works is explained in next
-section. The ``kmos3.io.ProcListWriter.write_proclist`` method calls
-several other methods in charge of building different parts of the
-source code, these methods are named according to the pattern
-``kmos3.io.ProcListWriter.write_proclist_*``. Exactly which of these
-methods are called depends on the backend being used. Some of such
-functions are specific to a certain backend, while other work for more
-than one backend. This is detailed under :ref:`The write_proclist method <sec-write-proclist>`.
-
-The source file template
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Template files are located in the ``kmos3/fortran_src/`` folder of the
-kmos3s source code and have the ``mpy`` extension. Each line of these
-files contains either
-
--  Python source code or
--  template text prefixed with ``#@``
-
-``kmos3.utils.evaluate_template`` processes these files to convert them
-into valid python code. The Python lines are left unchanged, while the
-template lines are replaced by code adding the content of the line (i.e.
-things after the ``#@``) to a string variable ``result``. Template lines
-can contain placeholders, included as a variable name enclosed in curly
-brackets ( ``{`` and ``}`` ). If those variable names are found within
-the local variables of the corresponding
-``kmos3.utils.evaluate_templates`` call, the placeholders are replaced by
-the variable values. The ``kmos3.utils.evaluate_template`` method accepts
-`arbitrary keyword
-arguments <https://docs.python.org/2/tutorial/controlflow.html#keyword-arguments>`__.
-In addition, the ``kmos3.io.ProcListWriter.write_template`` is passed the
-current instance of the ``ProcListWriter`` class as ``self``, the loaded
-kMC model information (i.e. the ``kmos3.types.Project``) instance as
-``data`` and an ``options`` dictionary with additional settings as
+.. code-block:: bash
+  :caption: Routines called during the export of a kmos3 model.
+  :name: export-proc
+
+  $ kmos3 export model.xml
+  ├── kmos3.cli.main
+  │   ├── kmos3.types.Project.import_file
+  │   └── kmos3.io.export_source
+  │       ├── kmos3.io.ProcListWriter.write_template
+  │       ├── kmos3.io.ProcListWriter.write_proclist
+  │       └── kmos3.io.ProcListWriter.write_settings
+  └── kmos3.utils.build
+      └── numpy.f2py.main
+
+As most of the source code described in the previous sections is generated automatically, it is
+crucial to also understand how this works. Code generation is contained in the ``kmos3.io`` Python
+submodule. The normal way to use this module is through the command line, i.e., invoking the
+``kmos3 export`` command. The scheme :ref:`above <export-proc>` shows the subroutines/functions,
+which are called when this is done. The command line call itself is handled by the ``kmos3.cli``
+submodule. Furthermore, the export procedure relies on the classes from the ``kmos3.types``
+submodule, which define the abstract representation of the KMC model. Specifically, a model
+definition from an ``xml`` or ``ini`` file into a ``kmos3.types.Project`` object. The rest is done
+with the help of an instance of the ``kmos3.io.ProcListWriter`` class, which contains several
+methods that write source code. Specifically, Fortran source code is generated in one of three
+ways:
+
+- iles are copied directly from the kmos3 installation
+- code is generated with the help of a template file, which is processed by the
+  ``kmos3.io.ProcListWriter.write_template`` method
+- code is written from scratch by one of the several ``kmos3.io.ProcListWriter.write_proclist_*``
+  methods
+
+The format of the template files and how ``kmos3.io.ProcListWriter.write_template`` works is
+explained in the next section. The ``kmos3.io.ProcListWriter.write_proclist`` method calls several
+other methods in charge of building different parts of the source code. These methods are named
+according to the pattern ``kmos3.io.ProcListWriter.write_proclist_*``. Which of these methods are
+called exactly depends on the backend being used. Some of such functions are specific to a certain
+backend, while others used for more than one backend. This is detailed in
+:ref:`sec-write-proclist`.
+
+Source File Templates
+~~~~~~~~~~~~~~~~~~~~~
+
+Template files are located in the ``kmos3/fortran_src/`` folder of the kmos3 source code and have
+the ``mpy`` extension. Each line of these files contains either
+
+- Python source code or
+- template text prefixed with ``#@``.
+
+``kmos3.utils.evaluate_template`` processes these files to convert them into valid Python code.
+The Python lines are left unchanged, while the template lines are replaced by code adding the
+content of the line (i.e., things after the ``#@``) to a string variable ``result``. Template
+lines can contain placeholders, included as a variable name enclosed in curly brackets ( ``{`` and
+``}`` ). If those variable names are found within the local variables of the corresponding
+``kmos3.utils.evaluate_templates`` call, the placeholders are replaced by the variable values. The
+``kmos3.utils.evaluate_template`` method accepts `arbitrary keyword arguments
+<https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments>`_. In addition, the
+``kmos3.io.ProcListWriter.write_template`` is passed the current instance of the
+``ProcListWriter`` class as ``self``, the loaded KMC model instance (i.e., the
+``kmos3.types.Project``) as ``data``, and an ``options`` dictionary with additional settings as
 ``options``.
 
-With such template files it is possible to include some programmatically
-dependence on the model characteristics and other settings to an
-otherwise mostly static file. For example, in the
-``proclist_constants.mpy`` template, the following text
-
-::
+With such template files it is possible to include some programmatically dependence on the model
+characteristics and other settings to an otherwise mostly static file. For example, in the
+``proclist_constants.mpy`` template, the following lines ::
 
-    for i, process in enumerate(self.data.process_list):
-        ip1 = i + 1
-        #@ integer(kind=iint), parameter, public :: {process.name} = {ip1}
+  for i, process in enumerate(self.data.process_list):
+      ip1 = i + 1
+      #@ integer(kind=iint), parameter, public :: {process.name} = {ip1}
 
-is used to hard-coded the name constants used throughout the code to
-reference a process' index.
+hard-code the names and corresponding assigned indices used to reference processes throughout the
+code.
 
 .. _sec-write-proclist:
 
-The ``write_proclist`` method
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. figure:: ../img/write_proclist.png
-   :width: 75%
-   :align: center
-
-   Routines used to write ``proclist`` and associated modules for the different backends.
+``write_proclist``
+~~~~~~~~~~~~~~~~~~
+
+.. code-block:: bash
+  :caption: Routines used to write ``proclist`` and associated modules for the different backends.
+
+  ProcListWriter.write_proclist
+  ├── if code_generator = 'local_smart'
+  │   ├── ProcListWriter.write_proclist_generic_part
+  │   |   ├── ProcListWriter.write_proclist_constants
+  │   |   └── ProcListWriter.write_proclist_generic_subroutines
+  │   ├── ProcListWriter.write_proclist_run_proc_nr_smart
+  │   ├── ProcListWriter.write_proclist_put_take
+  │   ├── ProcListWriter.write_proclist_touchup
+  │   ├── ProcListWriter.write_proclist_multilattice
+  │   └── ProcListWriter.write_proclist_end
+  ├── if code_generator = 'lat_int'
+  │   ├── ProcListWriter.write_proclist_constants
+  │   ├── ProcListWriter.write_proclist_lat_int
+  │   |   ├── ProcListWriter._get_lat_int_groups
+  │   |   ├── ProcListWriter.write_proclist_lat_int_run_proc_nr
+  │   |   ├── ProcListWriter.write_proclist_lat_int_touchup
+  │   |   ├── ProcListWriter.write_proclist_generic_subroutines
+  │   |   ├── ProcListWriter.write_proclist_lat_int_run_proc
+  │   |   └── ProcListWriter.write_proclist_lat_int_run_nli_casetree
+  │   └── ProcListWriter.write_proclist_end
+  └── if code_generator = 'otf'
+      ├── ProcListWriter.write_proclist_pars_otf
+      ├── ProcListWriter.write_proclist_otf
+      |   ├── ProcListWriter.write_proclist_generic_subroutines
+      |   ├── ProcListWriter.write_proclist_touchup_otf
+      |   ├── ProcListWriter.write_proclist_run_proc_nr_otf
+      |   └── ProcListWriter.write_proclist_run_proc_name_otf
+      └── ProcListWriter.write_proclist_end
 	   
-The scheme above shows the methods called by
-``kmos3.io.ProcListWriter.write_proclist`` to write ``proclist.f90`` and,
-for ``lat_int`` and ``otf``, related files (``proclist_constants.f90``,
+The scheme above shows the methods called by ``kmos3.io.ProcListWriter.write_proclist`` to write
+``proclist.f90`` and, for ``lat_int`` and ``otf``, related files (``proclist_constants.f90``,
 ``proclist_pars.f90``, ``run_proc_*.f90``, ``nli_*.f90``). All these
-``kmos3.io.Proclist.write_proclist_*`` methods take an ``out`` argument
-which is a `file
-object <https://docs.python.org/2/library/stdtypes.html#file-objects>`__
-to which the code is to be written and most take a ``data`` argument
-which is an instance of ``kmos3.types.Project`` containing the abstract
-kMC model definition. Many of them also take a ``code_generator``
-keyword argument with the backend's name. In what follows we briefly
-describe each of the individual methods. For clarity, they have been
-categorized according to the backend by which they are used. In cases in
-which the same routine is called to more than one backend, the
-description is presented only once.
-
-Methods called to build ``local_smart`` source code
+``kmos3.io.Proclist.write_proclist_*`` methods take an ``out`` argument, which is a `file object
+<https://docs.python.org/3/library/stdtypes.html#file-objects>`_ to which the code is to be
+written and most take a ``data`` argument, which is an instance of ``kmos3.types.Project``
+containing the abstract KMC model definition. Many of them also take a ``code_generator`` keyword
+argument with the backend's name. In what follows, we briefly describe each of the individual
+methods. For clarity, they have been categorized according to the backend by which they are used.
+In cases for which the same routine is called in more than one backend, the description is
+presented only once.
+
+Methods Called to Build ``local_smart`` Source Code
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 ``write_proclist_generic_part``
 '''''''''''''''''''''''''''''''
 
-This routine is only used by the ``local_smart`` backend. "Generic part"
-refers to the auxiliary constants defined in ``proclist`` (which exist
-in a separate file in ``lat_int`` and ``otf``) and the functions whose
-code does not depend on the process details (e.g.
-``proclist/do_kmc_steps``).
+This routine is only used by the ``local_smart`` backend. `Generic part` refers to the auxiliary
+constants defined in ``proclist`` (which exist in a separate file in ``lat_int`` and ``otf``) and
+the functions whose code does not depend on the process details (e.g., ``proclist/do_kmc_steps``).
 
 ``write_proclist_constants``
 ''''''''''''''''''''''''''''
 
-Uses the ``proclist_constants.mpy`` template to generate code defining
-named constants for the indices of each process and each species on the
-model. In ``local_smart`` this is added at the top of the
-``proclist.f90`` file; in ``lat_int`` and ``otf`` this is included
-separately as the ``proclist_constants.f90`` file.
+Uses the ``proclist_constants.mpy`` template to generate code defining named constants for the
+indices of each process and each species on the model. In ``local_smart`` this is added at the top
+of the ``proclist.f90`` file; in ``lat_int`` and ``otf`` this is included separately as the
+``proclist_constants.f90`` file.
 
 ``write_proclist_generic_subroutines``
 ''''''''''''''''''''''''''''''''''''''
 
-Uses the ``proclist_generic_subroutines.mpy`` template to write several
-routines not directly related with the tree search of process update,
-namely: ``do_kmc_steps``, ``do_kmc_step``, ``get_next_kmc_step``,
-``get_occupation``, ``init``, ``initialize_state`` and (only for
-``otf``) ``recalculate_rates_matrix``.
+Uses the ``proclist_generic_subroutines.mpy`` template to write several routines not directly
+related with the tree search of process updates, namely: ``do_kmc_steps``, ``do_kmc_step``,
+``get_next_kmc_step``, ``get_occupation``, ``init``, ``initialize_state``, and (only for ``otf``)
+``recalculate_rates_matrix``.
 
 .. _sec-write-run-proc-nr-smart:
 
 ``write_proclist_run_proc_nr_smart``
 ''''''''''''''''''''''''''''''''''''
 
-Writes the ``proclist/run_proc_nr`` function, which calls ``put`` and
-``take`` routines according to the process selected by
-``base/determine_procsite``. This is basically a nested for-loop, first
-over the processes and then over the actions of such process. The only
-tricky part is to input correctly the relative coordinate for which the
-``take`` and ``put`` routines need to be called. This is done with the
-help of the ``kmos3.types.Coord.radd_ff`` method.
+Writes the ``proclist/run_proc_nr`` function, which calls ``put`` and ``take`` routines according
+to the process selected by ``base/determine_procsite``. This is basically a nested for-loop, first
+over the processes and then over the actions of such process. The only tricky part is to correctly
+input the relative coordinate for which the ``take`` and ``put`` routines need to be called. This
+is done with the help of the ``kmos3.types.Coord.radd_ff`` method.
 
 .. _write-put-take:
 
 ``write_proclist_put_take``
 '''''''''''''''''''''''''''
 
-This is the most complex part of the ``local_smart`` code generator, in
-charge of writing a ``put`` and a ``take`` routine for each combination
-of site type and species in the model (except for the default species).
-These routines need to decide which events to activate or deactivate
+This is the most complex part of the ``local_smart`` code generator, in charge of writing a
+``put`` and a ``take`` routine for each combination of site type and species in the model (except
+for the default species). These routines need to decide which events to activate or deactivate
 given an specific change in the lattice state.
 
-The ``write_proclist_put_take`` is organized as several nested ``for``
-loops. The outermost goes through each species in the model, the
-following through each layer and site type, and the next through the two
-possibilities, ``put`` and ``take``. At this point, a specific
-``put_<species>_<layer>_<site>`` or ``take_<species>_<layer>_<site>``
-subroutine is being written.
-
-For each of these routines, it is necessary to check which events
-(located relative to the affected site) can potentially be activated or
-deactivated by the operation being executed. This is done with further
-nested loops, going through each process and then through each condition
-of such process.
-
-If a fulfilling match is found (i.e. the species and site type of the
-condition matches the site and species of a ``put`` routine or there is
-a condition associated to the default species on the site affected by a
-``take`` routine) a *marker* to the corresponding process is stored in
-the ``enabled_procs`` list. This marker is a nested tuple with the
-following structure:
-
--  first a list of ``kmos3.types.ConditionAction`` objects (see below)
--  then a tuple containing
-
-   -  the name of the process
-   -  the relative executing coordinate of the process with respect to
-      the matching condition
-   -  a constant True value.
-
-The list of ``ConditionAction`` objects contain an entry for each of the
-conditions of the given process, **except** for the condition that
-matched. The species are the same, but the coordinates of the these new
-``ConditionAction`` objects are *relative* to the the coordinate of the
-matching condition. This way, we gain access to the position of the
-conditions of the events that can potentially be activated by the
-``put`` or ``take`` routine relative to the position that is being
-affected in the surface. Note that potentially more than one marker
-could be added to the list for a given process. This would correspond to
-the possibility of different events associated to the same process being
-activated.
-
-If an unfulfilling match is found, a tuple is added to the
-``disabled_procs`` list. This tuple contains
-
--  the process object and
--  the relative position of the process with respect to the matching
-   condition
-
-There is less information in this case because the logic for disabling
-processes is much simpler than that for enabling them.
-
-Once these ``enabled_procs`` and ``disabled_procs`` lists have been
-collected, a ``del_proc`` statement for each event in ``disabled_procs``
-is written. Finally, the routine needs to write the decision tree to
-figure out which events to activate. This is done by the
-``kmos3.io.ProcListWriter._write_optimal_iftree`` method, which calls
-itself recursively to build an optimized ``select-case`` tree.
-
-``_write_optimal_iftree`` expects an object with the same structure as
-the ``enabled_procs`` list as input. This is called ``items`` in the
-method's body. At the start, each entry of the list corresponds to an
-event that potentially needs to be activated. Associated to each of
-those, there is a list of all conditions *missing* for this events to be
-activated. If in the initial call to ``_write_optimal_iftree`` one of
-the events has no missing conditions (i.e. the corresponding list is
-empty), this means that their only condition was whatever the ``put`` or
-``take`` routine provided. Consequently, the first step this method
-takes is to write a call to ``add_proc`` for those events (if any). Such
-events are then be removed from the ``items`` list.
-
-Next the procedure that heuristically optimizes the if-tree starts. From
-``items``, it is possible to obtain the *most frequent coordinate*, i.e.
-that which appears most often within the lists of missing conditions.
-Such coordinate is selected to be queried first in the ``select-case``
-tree. The possible cases correspond to the different possible species
-adsorbed at this coordinate. The routine iterates through those. For
-each species, it writes first the ``case`` statement. Then, the
-processes in ``items`` whose condition in the *most frequent coordinate*
-matches the current species are added to a reduced items list called
-``nested_items``. Next, the condition in the *most frequent coordinate*
-will be removed from the ``nested_items``, creating the ``pruned_items``
-list. This reduced list is used as input for a successive call to
-``_write_optimal_iftree``. The events that where included in
-``nested_items`` are then removed from the ``items`` list.
-
-It is possible (likely) that not all events will be have conditions in
-the most frequent coordinate. If this is the case,
-``_write_optimal_iftree`` need to be called again to start an additional
+The ``write_proclist_put_take`` is organized as several nested ``for`` loops. The outermost goes
+through each species in the model, the following through each layer and site type, and the next
+through the two possibilities, ``put`` and ``take``. At this point, a specific
+``put_<species>_<layer>_<site>`` or ``take_<species>_<layer>_<site>`` subroutine is being written.
+
+For each of these routines, it is necessary to check which events (located relative to the
+affected site) can potentially be activated or deactivated by the operation being executed. This
+is done with further nested loops, going through each process and then through each condition of
+such process.
+
+If a fulfilling match is found (i.e., the species and site type of the condition matches the site
+and species of a ``put`` routine or there is a condition associated to the default species on the
+site affected by a ``take`` routine) a *marker* to the corresponding process is stored in the
+``enabled_procs`` list. This marker is a nested tuple with the following structure:
+
+- first a list of ``kmos3.types.ConditionAction`` objects (see below)
+- then a tuple containing
+
+  - the name of the process
+  - the relative executing coordinate of the process with respect to the matching condition
+  - a constant ``True`` value.
+
+The list of ``ConditionAction`` objects contain an entry for each of the conditions of the given
+process, **except** for the condition that matched. The species are the same, but the coordinates
+of the these new ``ConditionAction`` objects are *relative* to the the coordinate of the matching
+condition. This way, we gain access to the position of the conditions of the events that can
+potentially be activated by the ``put`` or ``take`` routine relative to the position that is being
+affected in the surface. Note that potentially more than one marker could be added to the list for
+a given process. This would correspond to the possibility of different events associated to the
+same process being activated.
+
+If an unfulfilling match is found, a tuple is added to the ``disabled_procs`` list. This tuple
+contains
+
+- the process object and
+- the relative position of the process with respect to the matching condition.
+
+There is less information in this case because the logic for disabling processes is much simpler
+than that for enabling them.
+
+Once these ``enabled_procs`` and ``disabled_procs`` lists have been collected, a ``del_proc``
+statement for each event in ``disabled_procs`` is written. Finally, the routine needs to write the
+decision tree to figure out which events to activate. This is done by the
+``kmos3.io.ProcListWriter._write_optimal_iftree`` method, which calls itself recursively to build
+an optimized ``select-case`` tree.
+
+``_write_optimal_iftree`` expects an object with the same structure as the ``enabled_procs`` list
+as input. This is called ``items`` in the method's body. At the start, each entry of the list
+corresponds to an event that potentially needs to be activated. Associated to each of those, there
+is a list of all conditions *missing* for this events to be activated. If in the initial call to
+``_write_optimal_iftree`` one of the events has no missing conditions (i.e., the corresponding
+list is empty), this means that their only condition was whatever the ``put`` or ``take`` routine
+provided. Consequently, the first step this method takes is to write a call to ``add_proc`` for
+those events (if any). Such events are then to be removed from the ``items`` list.
+
+Next, the procedure that heuristically optimizes the if-tree starts. From ``items``, it is
+possible to obtain the *most frequent coordinate*, i.e., that which appears most often within the
+lists of missing conditions. Such coordinate is selected to be queried first in the
+``select-case`` tree. The possible cases correspond to the different possible species adsorbed at
+this coordinate. The routine iterates through those. For each species, it writes first the
+``case`` statement. Then, the processes in ``items`` whose condition in the *most frequent
+coordinate* matches the current species are added to a reduced items list called ``nested_items``.
+Next, the condition in the *most frequent coordinate* will be removed from the ``nested_items``,
+creating the ``pruned_items`` list. This reduced list is used as input for a successive call to
+``_write_optimal_iftree``. The events that were included in ``nested_items`` are then removed from
+the ``items`` list.
+
+It is possible (likely) that not all events will have conditions in the most frequent coordinate.
+If this is the case, ``_write_optimal_iftree`` needs to be called again to start an additional
 top-level case-tree to explore those processes.
 
-In this way, further calls are made to ``_write_optimal_iftree``, each
-of which in which the ``items`` list is shorter, of the item themselves
-contain fewer conditions. These calls "branch out", but each branch
-eventually leads to calls with empty ``items`` list, which closes the
-corresponding branch. The decision tree finishes writing when all
-elements of ``enabled_procs`` have been exhausted.
+In this way, further calls are made to ``_write_optimal_iftree``, each of which in which the
+``items`` list is shorter, of the item themselves contain fewer conditions. These calls "branch
+out", but each branch eventually leads to calls with empty ``items`` list, which closes the
+corresponding branch. The decision tree finishes writing when all elements of ``enabled_procs``
+have been exhausted.
 
 ``write_proclist_touchup``
 ''''''''''''''''''''''''''
 
-This routine is in charge of writing the
-``proclist/touchup_<layer>_<site>``, one for each site type. These
-routines update the state of the lattice, one site at a time.
+This routine is in charge of writing the ``proclist/touchup_<layer>_<site>``, one for each site
+type. These routines update the state of the lattice, one site at a time.
 
-They first delete all possible events with executing coordinate in the
-current site. Then, they collect a list of all processes with executing
-coordinate matching the current site type. The list is built with the
-same structure as the ``enabled_procs`` list described in section (see
-:ref:`here <write-put-take>`). This is then fed to the
-``_write_optimal_subtree`` method, to build a decision tree that can
-decide which of those process are to be turned-on given the current
-state of the lattice.
+They first delete all possible events with executing coordinate in the current site. Then, they
+collect a list of all processes with executing coordinate matching the current site type. The list
+is built with the same structure as the ``enabled_procs`` list described in section (see
+:ref:`write-put-take`). This is then fed to the ``_write_optimal_subtree`` method, to build a
+decision tree that can decide which of those process are to be turned-on given the current state
+of the lattice.
 
-TODO ``write_proclist_multilattice``
-''''''''''''''''''''''''''''''''''''
+``write_proclist_multilattice``
+'''''''''''''''''''''''''''''''
+
+.. todo::
+  ``write_proclist_multilattice``
 
 ``write_proclist_end``
 ''''''''''''''''''''''
 
 This simply closes the proclist module with ``end module proclist``.
 
-Methods called to build ``lat_int`` source code
+Methods Called to Build ``lat_int`` Source Code
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 ``write_proclist_lat_int``
 ''''''''''''''''''''''''''
 
-This writes the header of the ``proclist.f90`` file for ``lat_int`` and
-then calls several ``write_proclist_lat_int_*`` functions in charge of
-writing the different routines of the module. Before it can do this, it
-needs to call ``_get_lat_int_groups``, a method that finds all lateral
-interaction groups and returns them as a dictionary. This dictionary has
-the names of the groups as keys and the corresponding lists of processes
-as values. The name of a group is the name of the process within it with
-the lowest index (this coincides with the first process in the group
-when sorted alphabetically).
+This writes the header of the ``proclist.f90`` file for ``lat_int`` and then calls several
+``write_proclist_lat_int_*`` functions in charge of writing the different routines of the module.
+Before it can do this, it needs to call ``_get_lat_int_groups``, a method that finds all lateral
+interaction groups and returns them as a dictionary. This dictionary has the names of the groups
+as keys and the corresponding lists of processes as values. The name of a group is the name of the
+process within it with the lowest index (this coincides with the first process in the group when
+sorted alphabetically).
 
 ``write_proclist_lat_int_run_proc_nr``
 ''''''''''''''''''''''''''''''''''''''
 
 This functions is similar to its ``local_smart`` counterpart (see
-:ref:`here <sec-write-run-proc-nr-smart>`). The only difference
-is that this routine needs to decide between lateral interaction groups
-instead of individual processes, as selecting the individual process
-within the group is done by the ``nli_*`` subroutines. For this reason,
-the indices of all processes of a group are included inside the
-``case( ... )`` statements.
+:ref:`sec-write-run-proc-nr-smart`). The only difference is that this routine needs to decide
+between lateral interaction groups instead of individual processes, as selecting the individual
+process within the group is done by the ``nli_*`` subroutines. For this reason, the indices of all
+processes of a group are included inside the ``case( ... )`` statements.
 
 ``write_proclist_lat_int_touchup``
 ''''''''''''''''''''''''''''''''''
 
-Writing the touchup functions is much simpler here than in
-``local_smart``, as here we can rely on the ``nli_*`` functions (see
-`here <#sec:nli>`__). As in ``local_smart``, all processes are deleted
-(just in case they were activated). Then ``add_proc`` is called for each
-lateral interaction group, using the result of the corresponding
-``nli_<lat_int_group>`` function as input. Thus, an event will be added
-only if that function returns non-zero.
+Writing the touchup functions is much simpler here than in ``local_smart``, as here we can rely on
+the ``nli_*`` functions (see :ref:`sec-write-proclist-lat-int-nli-casetree`). As in
+``local_smart``, all processes are deleted (just in case they were activated). Then ``add_proc``
+is called for each lateral interaction group, using the result of the corresponding
+``nli_<lat_int_group>`` function as input. Thus, an event will be added only if that function
+returns non-zero.
 
 ``write_proclist_lat_int_run_proc``
 '''''''''''''''''''''''''''''''''''
 
-This method writes a ``run_proc_<lat_int_nr>`` module for each lateral
-interaction group. Each of these modules is located in its own file. The
-first step for writing the modules consists of finding all lateral
-interaction event groups which are affected by the actions of the
-current lateral interaction group. These are included in the list
-``modified_procs``. Once the list is built, a ``del_proc`` call is
-written for each of them, using the results of the corresponding
-``nli_<lat_int_group>`` as argument. Then, it writes calls to
-``replace_species`` to update the lattice. Finally a call to
-``add_proc`` is added for each element of ``modified_procs``, using the
-corresponding ``nli_<lat_int_group>`` as argument.
+This method writes a ``run_proc_<lat_int_nr>`` module for each lateral interaction group. Each of
+these modules is located in its own file. The first step for writing the modules consists of
+finding all lateral interaction event groups which are affected by the actions of the current
+lateral interaction group. These are included in the list ``modified_procs``. Once the list is
+built, a ``del_proc`` call is written for each of them, using the results of the corresponding
+``nli_<lat_int_group>`` as argument. Then, it writes calls to ``replace_species`` to update the
+lattice. Finally, a call to ``add_proc`` is added for each element of ``modified_procs``, using
+the corresponding ``nli_<lat_int_group>`` as argument.
+
+.. _sec-write-proclist-lat-int-nli-casetree:
 
 ``write_proclist_lat_int_nli_casetree``
 '''''''''''''''''''''''''''''''''''''''
 
-This method writes the ``nli_*`` routines, which decide which, if any,
-of the processes in a lateral interaction group can be executed in a
-given site of the lattice. For this, the method builds a nested
-dictionary, ``case_tree``, which encodes the decision tree. This is then
-translated into a ``select-case`` Fortran block by the
-``kmos3.io._casetree_dict`` function.
+This method writes the ``nli_*`` routines, which decide which, if any, of the processes in a
+lateral interaction group can be executed in a given site of the lattice. For this, the method
+builds a nested dictionary, ``case_tree``, which encodes the decision tree. This is then
+translated into a ``select-case`` Fortran block by the ``kmos3.io._casetree_dict`` function.
 
-Methods called to build ``otf`` source code
+Methods Called to Build ``otf`` Source Code
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 ``write_proclist_pars_otf``
 '''''''''''''''''''''''''''
 
-This method is only used by the ``otf`` backend. It is in charge of
-writing the ``proclist_pars.f90`` file. This module has two main roles:
-the first is to provide access to the user-defined parameters and other
-physical parameters and constants at the Fortran level. The second, to
-provide the routines which evaluate the rate constants during execution.
-
-The routine first writes the declaration of the ``userpar`` array, used
-to store the value of the user-defined parameters. In addition,
-auxiliary integer constants (named as the parameters in the model) are
-declared to help with the indexing of this array. The
-``_otf_get_auxiliary_params`` method is used to collect lists of
-constants, including the definitions of physical units, atomic masses
-and chemical potentials used in the rate expressions in the model. The
-constants and atomic masses are declared as constants with their
-corresponding value (evaluated using ``kmos3.evaluate_rate_expression``).
-If needed, a ``chempot`` array is included, which is used to store the
-value of the chemical potentials used in the model (auxiliary indexing
-variables are also included for this array).
-
-In addition, this method writes a routine to update ``userpar`` from the
-Python interface, and another to read the values of such array. If
-needed, a routine to update ``chempots`` is also added.
-
-In addition, this routine writes the functions used to evaluate the rate
-constants during execution. For each process, a ``gr_<process_name>``
-and a ``rate_<process_name>`` are written. ``gr_<process_name>`` loops
-through all the bystanders to count how many neighbors of a given
-species there is for each "flag" associated to the process (see as
-determined by its
-`bystanders <http://kmos3.readthedocs.io/en/latest/topic_guides/otf_backend.html>`__).
-These counts are accumulated in the ``nr_vars`` array. This array is
-used as input to the corresponding ``rate_<process_name>`` routine. The
-content of this routine is directly obtained from the ``otf_rate``
-attribute of the the ``kmos3.types.Process`` object. This user-defined
-string is processed by the ``_parse_otf_rate`` method to replace the
-standard parameter and constant names with the names understood by this
-Fortran module.
+This method is only used by the ``otf`` backend. It is in charge of writing the
+``proclist_pars.f90`` file. This module has two main roles:
+
+- provide access to the user-defined parameters and other physical parameters and constants at the
+  Fortran level.
+- provide the routines, which evaluate the rate constants during execution.
+
+The routine first writes the declaration of the ``userpar`` array, used to store the value of the
+user-defined parameters. In addition, auxiliary integer constants (named as the parameters in the
+model) are declared to help with the indexing of this array. The ``_otf_get_auxiliary_params``
+method is used to collect lists of constants, including the definitions of physical units, atomic
+masses and chemical potentials used in the rate expressions in the model. The constants and atomic
+masses are declared as constants with their corresponding value (evaluated using
+``kmos3.evaluate_rate_expression``). If needed, a ``chempot`` array is included, which is used to
+store the value of the chemical potentials used in the model (auxiliary indexing variables are
+also included for this array).
+
+In addition, this method writes a routine to update ``userpar`` from the Python interface, and
+another to read the values of such array. If needed, a routine to update ``chempots`` is also
+added.
+
+This routine also writes the functions used to evaluate the rate constants during execution. For
+each process, a ``gr_<process_name>`` and a ``rate_<process_name>`` are written.
+``gr_<process_name>`` loops through all the bystanders to count how many neighbors of a given
+species there is for each "flag" associated to the process (see as determined by its
+:ref:`bystanders <otf_backend>`). These counts are accumulated in the ``nr_vars`` array. This
+array is used as input to the corresponding ``rate_<process_name>`` routine. The content of this
+routine is directly obtained from the ``otf_rate`` attribute of the the ``kmos3.types.Process``
+object. This user-defined string is processed by the ``_parse_otf_rate`` method to replace the
+standard parameter and constant names with the names understood by this Fortran module.
 
 ``write_proclist_touchup_otf``
 ''''''''''''''''''''''''''''''
 
-This method writes the subroutines used to initialize the state of the
-bookkeeping arrays at the start of a simulation. For this, it calls the
-``_write_optimal_iftree_otf`` with all possible events associated to the
-current site (i.e. with all processes). The routine
-``_write_optimal_iftree_otf`` is very similar to the
-``_write_optimal_iftree`` routine described used by ``local_smart``'s  ``write_proclist_run_proc_nr_smart`` (see :ref:`here <write-put-take>`).
-The most remarkable difference is that in otf the ``add_proc`` routine
-needs to be called with the result of a ``gr_<proc_name>`` routine as an
-argument (to evaluate the current value of the event's rate constant).
+This method writes the subroutines used to initialize the state of the bookkeeping arrays at the
+start of a simulation. For this, it calls the ``_write_optimal_iftree_otf`` with all possible
+events associated to the current site (i.e., with all processes). The routine
+``_write_optimal_iftree_otf`` is very similar to the ``_write_optimal_iftree`` routine, which is
+used by ``write_proclist_run_proc_nr_smart`` of the ``local_smart`` backend (see
+:ref:`write-put-take`). The most remarkable difference is that in otf the ``add_proc`` routine
+needs to be called with the result of a ``gr_<proc_name>`` routine as an argument (to evaluate the
+current value of the event's rate constant).
 
 ``write_proclist_run_proc_nr_otf``
 ''''''''''''''''''''''''''''''''''
 
-The subroutine written by this method is very similar to its counterpart
-in the ``lat_int`` backend, only needing to decide which specific
-``run_proc_<procname>`` function to call.
+The subroutine written by this method is very similar to its counterpart in the ``lat_int``
+backend, only needing to decide which specific ``run_proc_<procname>`` function to call.
 
 ``write_proclist_run_proc_name_otf``
 ''''''''''''''''''''''''''''''''''''
 
-The ``run_proc_<proc_name>`` routines are the ones in charge of updating
-the bookkeeping arrays once a given event has been selected for
-execution. They are similar to their counterpart in ``lat_int`` in that
-there is one for each lateral interaction group. In ``otf`` there is
-only one process per "lateral interaction group", so there is one such
-routine per process. They are also similar to the ``put_*`` and
-``take_*`` subroutines from ``local_smart`` because they use very
-similar logic to build the hardcoded decision trees. The main difference
-between these backends is that the ``run_proc_<proc_name>`` routines of
-``otf`` implement decision trees that take into account the changes in
-all sites affected by a process, while in ``local_smart`` ``put_*`` and
+The ``run_proc_<proc_name>`` routines are the ones in charge of updating the bookkeeping arrays
+once a given event has been selected for execution. They are similar to their counterpart in
+``lat_int`` in that there is one for each lateral interaction group. In ``otf`` there is only one
+process per lateral interaction group, so there is one such routine per process. They are also
+similar to the ``put_*`` and ``take_*`` subroutines from ``local_smart`` because they use very
+similar logic to build the hard-coded decision trees. The main difference between these backends
+is that the ``run_proc_<proc_name>`` routines of ``otf`` implement decision trees that take into
+account the changes in all sites affected by a process, while in ``local_smart`` ``put_*`` and
 ``take_*`` routines consider only an elementary change to a single site.
 
-The first thing that ``write_proclist_run_proc_name_otf`` does is to
-collect a list with all the events for which one of the actions of the
-executing process unfulfills a condition (``inh_procs``), a list with
-all the processes for which they fulfill a condition (``enh_procs``) and
-a list with all the processes for which they modify the state of one of
-the bystanders (``aff_procs``). The processes that are included in
-``inh_procs`` list are excluded from the other two lists.
-
-Once this is done, calls to ``del_proc`` are written for all processes
-in ``inh_procs``. Then, calls to the ``replace_species`` subroutine are
-added, so as to update the lattice according to the actions of the
-executing process. Afterwards, the subroutine ``update_rates_matrix`` is
-called for each process in ``aff_procs`` to update the corresponding
-rate constant.
-
-As in the case of ``local_smart`` the most complex operation is that of
-activating processes, as the state of the lattice needs to be queried
-efficiently. To do this, a new list, ``enabling_items``, is built based
-on the ``enh_procs`` list. ``enabling_items`` contains an entry for each
-process in ``enh_process``. These entries are tuples containing:
+The first thing that ``write_proclist_run_proc_name_otf`` does is to collect a list with all the
+events for which one of the actions of the executing process unfulfills a condition
+(``inh_procs``), a list with all the processes for which they fulfill a condition (``enh_procs``)
+and a list with all the processes for which they modify the state of one of the bystanders
+(``aff_procs``). The processes that are included in ``inh_procs`` list are excluded from the other
+two lists.
+
+Once this is done, calls to ``del_proc`` are written for all processes in ``inh_procs``. Then,
+calls to the ``replace_species`` subroutine are added, so as to update the lattice according to
+the actions of the executing process. Afterwards, the subroutine ``update_rates_matrix`` is called
+for each process in ``aff_procs`` to update the corresponding rate constant.
+
+As in the case of ``local_smart`` the most complex operation is that of activating processes, as
+the state of the lattice needs to be queried efficiently. To do this, a new list,
+``enabling_items``, is built based on the ``enh_procs`` list. ``enabling_items`` contains an entry
+for each process in ``enh_process``. These entries are tuples containing:
 
 -  a list of conditions which are not satisfied by the executing event
 -  a tuple containing:
 
    -  the name of the process
-   -  the relative position of the process with respect to the
-      coordinate of the executing process
+   -  the relative position of the process with respect to the coordinate of the executing process
    -  a constant ``True`` value.
 
-This list is analogous to the ``enabled_procs`` list used by the
-``write_proclist_put_take`` routine of the ``local_smart`` backend (see
-`here <#sec:write-proclist-put-take>`__). This list is used as input for
-the ``_write_optimal_iftree_otf`` method. This is very similar to the
-``_write_optimal_iftree``, with the only difference that calls to
-``add_proc`` also need to include the result of the ``gr_<proc_name>``
-functions as arguments.
+This list is analogous to the ``enabled_procs`` list used by the ``write_proclist_put_take``
+routine of the ``local_smart`` backend (see :ref:`write-put-take`). This list is used as input for
+the ``_write_optimal_iftree_otf`` method. This is very similar to the ``_write_optimal_iftree``,
+with the only difference that calls to ``add_proc`` also need to include the result of the
+``gr_<proc_name>`` functions as arguments.
diff --git a/doc/source/development.rst b/doc/source/development.rst
index b3e0150524d2af6a04b8806424805b3f006c6ef2..07e2a092566c17823d58f5dc9943b5f4051c6adf 100644
--- a/doc/source/development.rst
+++ b/doc/source/development.rst
@@ -1,4 +1,6 @@
+===========
 Development
-^^^^^^^^^^^
+===========
 
 .. include:: ../../CONTRIBUTING.rst
+.. include:: developers_guide.rst
diff --git a/doc/source/img/add_proc.svg b/doc/source/img/add_proc.svg
new file mode 100644
index 0000000000000000000000000000000000000000..9e48b8943c52950f09c74833c01287f47675742d
--- /dev/null
+++ b/doc/source/img/add_proc.svg
@@ -0,0 +1,1031 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="830.63641"
+   height="206.01691"
+   viewBox="0 0 219.77254 54.508639"
+   version="1.1"
+   id="svg1"
+   sodipodi:docname="add_proc.svg"
+   inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="1"
+     inkscape:cx="344.99999"
+     inkscape:cy="84.999998"
+     inkscape:current-layer="layer1"
+     showgrid="false" />
+  <defs
+     id="defs1">
+    <marker
+       style="overflow:visible"
+       id="ConcaveTriangle"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Concave triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.7)"
+         d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:none"
+         id="path7" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="ConcaveTriangle-0"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Concave triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.7)"
+         d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:none"
+         id="path7-9" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0.16536982,0.16536516)">
+    <g
+       id="g1">
+      <path
+         d="M 0,0 V 42.333332 M 10.583333,0 V 42.333332 M 21.166666,0 V 42.333332 M 31.749999,0 V 31.749999 42.333332 M 42.333332,0 V 10.583333 42.333332 M 52.916665,0 V 42.333332 M 63.499998,0 V 21.166666 31.749999 42.333332 M 74.083331,0 V 42.333332 M 84.666664,0 V 10.583333 21.166666 42.333332 M 95.249997,0 V 42.333332 M 105.83333,0 V 42.333332 M 0,0 H 105.83333 M 0,10.583333 H 105.83333 M 0,21.166666 H 105.83333 M 0,31.749999 H 105.83333 M 0,42.333332 h 105.83333"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.185208;stroke-dasharray:none"
+         id="path2"
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccc" />
+      <rect
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.997822"
+         id="rect1"
+         width="105.6349"
+         height="42.134895"
+         x="0.099213526"
+         y="0.099218339" />
+      <path
+         d="M 42.333332,0 V 10.583333 H 84.666664 V 21.166666 H 63.499998 V 31.749999 H 31.749999 v 10.583333"
+         style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-dasharray:none"
+         id="path1"
+         sodipodi:nodetypes="cccccccc" />
+      <g
+         id="g3"
+         style="stroke-width:0.185208;stroke-dasharray:none">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="3.6301694"
+           y="7.7111449"
+           id="text2"><tspan
+             sodipodi:role="line"
+             id="tspan2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="7.7111449">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="14.133544"
+           y="7.7111449"
+           id="text2-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="7.7111449">7</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="24.607182"
+           y="7.7111449"
+           id="text2-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="7.7111449">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="35.388016"
+           y="7.7111449"
+           id="text2-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="35.388016"
+             y="7.7111449">9</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="3.6301694"
+           y="18.205606"
+           id="text2-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-0"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="18.205606">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="14.133544"
+           y="18.205606"
+           id="text2-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="18.205606">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="24.607182"
+           y="18.205606"
+           id="text2-6"><tspan
+             sodipodi:role="line"
+             id="tspan2-1"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="18.205606">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="33.425346"
+           y="18.205606"
+           id="text2-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-65"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="33.425346"
+             y="18.205606">10</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="45.932007"
+           y="18.205606"
+           id="text2-74"><tspan
+             sodipodi:role="line"
+             id="tspan2-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.932007"
+             y="18.205606">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="56.511269"
+           y="18.205606"
+           id="text2-744"><tspan
+             sodipodi:role="line"
+             id="tspan2-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.511269"
+             y="18.205606">7</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="67.253304"
+           y="18.205606"
+           id="text2-68"><tspan
+             sodipodi:role="line"
+             id="tspan2-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.253304"
+             y="18.205606">9</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="77.774971"
+           y="18.205606"
+           id="text2-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-92"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.774971"
+             y="18.205606">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="3.6301694"
+           y="28.78894"
+           id="text2-92"><tspan
+             sodipodi:role="line"
+             id="tspan2-66"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="28.78894">6</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="14.133544"
+           y="28.78894"
+           id="text2-04"><tspan
+             sodipodi:role="line"
+             id="tspan2-87"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="28.78894">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="24.607182"
+           y="28.78894"
+           id="text2-72"><tspan
+             sodipodi:role="line"
+             id="tspan2-26"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="28.78894">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="35.414371"
+           y="28.78894"
+           id="text2-15"><tspan
+             sodipodi:role="line"
+             id="tspan2-94"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="35.414371"
+             y="28.78894">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="45.932007"
+           y="28.78894"
+           id="text2-17"><tspan
+             sodipodi:role="line"
+             id="tspan2-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.932007"
+             y="28.78894">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="56.511269"
+           y="28.78894"
+           id="text2-97"><tspan
+             sodipodi:role="line"
+             id="tspan2-76"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.511269"
+             y="28.78894">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="3.6301694"
+           y="39.107689"
+           id="text2-56"><tspan
+             sodipodi:role="line"
+             id="tspan2-39"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="39.107689">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="14.133544"
+           y="39.107689"
+           id="text2-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-93"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="39.107689">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="24.607182"
+           y="39.107689"
+           id="text2-85"><tspan
+             sodipodi:role="line"
+             id="tspan2-09"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="39.107689">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="45.876198"
+           y="7.7095947"
+           id="text2-561"><tspan
+             sodipodi:role="line"
+             id="tspan2-15"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.876198"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="56.45546"
+           y="7.7095947"
+           id="text2-561-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-1"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.45546"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="67.197495"
+           y="7.7095947"
+           id="text2-561-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.197495"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="77.719162"
+           y="7.7095947"
+           id="text2-561-6"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.719162"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="88.267693"
+           y="7.7095947"
+           id="text2-561-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="98.816223"
+           y="7.7095947"
+           id="text2-561-85"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="98.816223"
+           y="18.204056"
+           id="text2-561-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="18.204056">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="88.267693"
+           y="18.204056"
+           id="text2-561-88"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-31"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="18.204056">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="98.816223"
+           y="28.78739"
+           id="text2-561-43"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-33"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="88.267693"
+           y="28.78739"
+           id="text2-561-48"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="77.719162"
+           y="28.78739"
+           id="text2-561-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-64"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.719162"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="67.197495"
+           y="28.78739"
+           id="text2-561-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-92"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.197495"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="35.358559"
+           y="39.10614"
+           id="text2-561-59"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-46"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="35.358559"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="45.876198"
+           y="39.10614"
+           id="text2-561-47"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-75"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.876198"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="56.45546"
+           y="39.10614"
+           id="text2-561-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-89"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.45546"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="67.197495"
+           y="39.10614"
+           id="text2-561-02"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-10"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.197495"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="77.719162"
+           y="39.10614"
+           id="text2-561-08"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.719162"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="88.267693"
+           y="39.10614"
+           id="text2-561-62"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-58"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="98.816223"
+           y="39.10614"
+           id="text2-561-472"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-40"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="39.10614">0</tspan></text>
+      </g>
+    </g>
+    <g
+       id="g2">
+      <rect
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.997822"
+         id="rect1-3"
+         width="105.6349"
+         height="42.134895"
+         x="113.70769"
+         y="0.099218339"
+         inkscape:label="rect1-3" />
+      <g
+         id="g162">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="117.23864"
+           y="7.7111459"
+           id="text2-562"><tspan
+             sodipodi:role="line"
+             id="tspan2-91"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="117.23864"
+             y="7.7111459">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="127.74201"
+           y="7.7111459"
+           id="text2-8-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-9-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="127.74201"
+             y="7.7111459">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="138.21565"
+           y="7.7111459"
+           id="text2-1-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-2-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="138.21565"
+             y="7.7111459">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="148.99649"
+           y="7.7111459"
+           id="text2-9-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-4-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="148.99649"
+             y="7.7111459">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="117.23864"
+           y="18.205606"
+           id="text2-5-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-0-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="117.23864"
+             y="18.205606">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="127.74201"
+           y="18.205606"
+           id="text2-0-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-6-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="127.74201"
+             y="18.205606">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="138.21565"
+           y="18.205606"
+           id="text2-6-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-1-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="138.21565"
+             y="18.205606">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="149.00734"
+           y="18.205606"
+           id="text2-7-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-65-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="149.00734"
+             y="18.205606">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="159.54048"
+           y="18.205606"
+           id="text2-74-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-5-0"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="159.54048"
+             y="18.205606">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="170.11974"
+           y="18.205606"
+           id="text2-744-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-3-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="170.11974"
+             y="18.205606">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="180.86177"
+           y="18.205606"
+           id="text2-68-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-8-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="180.86177"
+             y="18.205606">6</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="191.38344"
+           y="18.205606"
+           id="text2-4-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-92-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="191.38344"
+             y="18.205606">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="117.23864"
+           y="28.78894"
+           id="text2-92-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-66-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="117.23864"
+             y="28.78894">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="127.74201"
+           y="28.78894"
+           id="text2-04-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-87-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="127.74201"
+             y="28.78894">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="138.21565"
+           y="28.78894"
+           id="text2-72-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-26-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="138.21565"
+             y="28.78894">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="149.02284"
+           y="28.78894"
+           id="text2-15-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-94-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="149.02284"
+             y="28.78894">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="159.54048"
+           y="28.78894"
+           id="text2-17-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-7-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="159.54048"
+             y="28.78894">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="170.11974"
+           y="28.78894"
+           id="text2-97-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-76-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="170.11974"
+             y="28.78894">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="117.23864"
+           y="39.107689"
+           id="text2-56-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-39-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="117.23864"
+             y="39.107689">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="127.74201"
+           y="39.107689"
+           id="text2-2-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-93-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="127.74201"
+             y="39.107689">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="138.21565"
+           y="39.107689"
+           id="text2-85-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-09-0"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="138.21565"
+             y="39.107689">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="159.48466"
+           y="7.7095962"
+           id="text2-561-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-61"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="159.48466"
+             y="7.7095962">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="170.06393"
+           y="7.7095962"
+           id="text2-561-8-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-1-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="170.06393"
+             y="7.7095962">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="180.80597"
+           y="7.7095962"
+           id="text2-561-4-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-4-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="180.80597"
+             y="7.7095962">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="191.32764"
+           y="7.7095962"
+           id="text2-561-6-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-3-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="191.32764"
+             y="7.7095962">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="201.87616"
+           y="7.7095962"
+           id="text2-561-9-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-6-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="201.87616"
+             y="7.7095962">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="212.4247"
+           y="7.7095962"
+           id="text2-561-85-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-7-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="212.4247"
+             y="7.7095962">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="212.4247"
+           y="18.204056"
+           id="text2-561-5-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-9-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="212.4247"
+             y="18.204056">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="201.87616"
+           y="18.204056"
+           id="text2-561-88-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-31-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="201.87616"
+             y="18.204056">7</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="212.4247"
+           y="28.78739"
+           id="text2-561-43-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-33-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="212.4247"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="201.87616"
+           y="28.78739"
+           id="text2-561-48-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-8-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="201.87616"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="191.32764"
+           y="28.78739"
+           id="text2-561-7-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-64-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="191.32764"
+             y="28.78739">6</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="180.80597"
+           y="28.78739"
+           id="text2-561-0-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-92-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="180.80597"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="148.96703"
+           y="39.10614"
+           id="text2-561-59-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-46-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="148.96703"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="159.48466"
+           y="39.10614"
+           id="text2-561-47-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-75-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="159.48466"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="170.06393"
+           y="39.10614"
+           id="text2-561-2-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-89-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="170.06393"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="180.80597"
+           y="39.10614"
+           id="text2-561-02-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-10-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="180.80597"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="191.32764"
+           y="39.10614"
+           id="text2-561-08-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-5-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="191.32764"
+             y="39.10614">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="201.87616"
+           y="39.10614"
+           id="text2-561-62-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-58-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="201.87616"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="212.4247"
+           y="39.10614"
+           id="text2-561-472-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-40-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="212.4247"
+             y="39.10614">0</tspan></text>
+      </g>
+      <path
+         d="M 113.60847,4.9e-7 V 42.333333 M 124.19181,4.9e-7 V 42.333333 M 134.77514,4.9e-7 V 42.333333 M 145.35848,4.9e-7 V 31.75 42.333333 M 155.94181,4.9e-7 V 10.583334 42.333333 M 166.52514,4.9e-7 V 42.333333 M 177.10847,4.9e-7 V 21.166667 31.75 42.333333 M 187.69181,4.9e-7 V 42.333333 M 198.27514,4.9e-7 V 10.583334 21.166667 42.333333 M 208.85847,4.9e-7 V 42.333333 M 219.44181,4.9e-7 V 42.333333 M 113.60847,4.9e-7 H 219.44181 M 113.60847,10.583334 H 219.44181 M 113.60847,21.166667 H 219.44181 M 113.60847,31.75 H 219.44181 M 113.60847,42.333333 h 105.83334"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.185208;stroke-dasharray:none"
+         id="path2-5"
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccc" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+       x="134.63669"
+       y="54.27816"
+       id="text2-15-1-9"><tspan
+         sodipodi:role="line"
+         id="tspan2-94-2-1"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+         x="134.63669"
+         y="54.27816">5</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+       x="79.725006"
+       y="54.281261"
+       id="text2-92-5"><tspan
+         sodipodi:role="line"
+         id="tspan2-66-3"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+         x="79.725006"
+         y="54.281261">6</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.529166;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ConcaveTriangle)"
+       d="M 78.478091,51.82066 C 53.65152,50.59804 48.347482,11.927553 48.347482,11.927553"
+       id="path3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ConcaveTriangle-0)"
+       d="m 139.53457,51.820288 c 26.06036,-1.223723 31.628,-39.929213 31.628,-39.929213"
+       id="path3-0" />
+  </g>
+</svg>
diff --git a/doc/source/img/avail_sites.svg b/doc/source/img/avail_sites.svg
new file mode 100644
index 0000000000000000000000000000000000000000..593b7a9906b3e459c04d2e7bf431a2543454c940
--- /dev/null
+++ b/doc/source/img/avail_sites.svg
@@ -0,0 +1,959 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="830.63641"
+   height="161.25"
+   viewBox="0 0 219.77254 42.664062"
+   version="1.1"
+   id="svg1"
+   sodipodi:docname="avail_sites_1.svg"
+   inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="1.4142136"
+     inkscape:cx="395.9798"
+     inkscape:cy="226.27417"
+     inkscape:current-layer="g2" />
+  <defs
+     id="defs1" />
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0.16536982,0.16536516)">
+    <g
+       id="g2"
+       style="stroke-width:0.185208;stroke-dasharray:none">
+      <path
+         d="M 0,0 V 42.333332 M 10.583333,0 V 42.333332 M 21.166666,0 V 42.333332 M 31.749999,0 V 31.749999 42.333332 M 42.333332,0 V 10.583333 42.333332 M 52.916665,0 V 42.333332 M 63.499998,0 V 21.166666 31.749999 42.333332 M 74.083331,0 V 42.333332 M 84.666664,0 V 10.583333 21.166666 42.333332 M 95.249997,0 V 42.333332 M 105.83333,0 V 42.333332 M 0,0 H 105.83333 M 0,10.583333 H 105.83333 M 0,21.166666 H 105.83333 M 0,31.749999 H 105.83333 M 0,42.333332 h 105.83333"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.185208;stroke-dasharray:none"
+         id="path2"
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccc" />
+      <rect
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.52916667;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.997822"
+         id="rect1"
+         width="105.6349"
+         height="42.134895"
+         x="0.099213526"
+         y="0.099218339" />
+      <path
+         d="M 42.333332,0 V 10.583333 H 84.666664 V 21.166666 H 63.499998 V 31.749999 H 31.749999 v 10.583333"
+         style="fill:none;stroke:#000000;stroke-width:0.52916667;stroke-dasharray:none"
+         id="path1"
+         sodipodi:nodetypes="cccccccc" />
+      <g
+         id="g3"
+         style="stroke-width:0.185208;stroke-dasharray:none">
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="3.6301694"
+           y="7.7111449"
+           id="text2"><tspan
+             sodipodi:role="line"
+             id="tspan2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="7.7111449">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="14.133544"
+           y="7.7111449"
+           id="text2-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="7.7111449">7</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="24.607182"
+           y="7.7111449"
+           id="text2-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="7.7111449">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="35.388016"
+           y="7.7111449"
+           id="text2-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="35.388016"
+             y="7.7111449">9</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="3.6301694"
+           y="18.205606"
+           id="text2-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-0"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="18.205606">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="14.133544"
+           y="18.205606"
+           id="text2-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="18.205606">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="24.607182"
+           y="18.205606"
+           id="text2-6"><tspan
+             sodipodi:role="line"
+             id="tspan2-1"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="18.205606">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="33.425346"
+           y="18.205606"
+           id="text2-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-65"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="33.425346"
+             y="18.205606">10</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="45.932007"
+           y="18.205606"
+           id="text2-74"><tspan
+             sodipodi:role="line"
+             id="tspan2-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.932007"
+             y="18.205606">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="56.511269"
+           y="18.205606"
+           id="text2-744"><tspan
+             sodipodi:role="line"
+             id="tspan2-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.511269"
+             y="18.205606">7</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="67.253304"
+           y="18.205606"
+           id="text2-68"><tspan
+             sodipodi:role="line"
+             id="tspan2-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.253304"
+             y="18.205606">9</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="77.774971"
+           y="18.205606"
+           id="text2-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-92"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.774971"
+             y="18.205606">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="3.6301694"
+           y="28.78894"
+           id="text2-92"><tspan
+             sodipodi:role="line"
+             id="tspan2-66"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="28.78894">6</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="14.133544"
+           y="28.78894"
+           id="text2-04"><tspan
+             sodipodi:role="line"
+             id="tspan2-87"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="28.78894">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="24.607182"
+           y="28.78894"
+           id="text2-72"><tspan
+             sodipodi:role="line"
+             id="tspan2-26"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="28.78894">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="35.414371"
+           y="28.78894"
+           id="text2-15"><tspan
+             sodipodi:role="line"
+             id="tspan2-94"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="35.414371"
+             y="28.78894">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="45.932007"
+           y="28.78894"
+           id="text2-17"><tspan
+             sodipodi:role="line"
+             id="tspan2-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.932007"
+             y="28.78894">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="56.511269"
+           y="28.78894"
+           id="text2-97"><tspan
+             sodipodi:role="line"
+             id="tspan2-76"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.511269"
+             y="28.78894">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="3.6301694"
+           y="39.107689"
+           id="text2-56"><tspan
+             sodipodi:role="line"
+             id="tspan2-39"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="39.107689">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="14.133544"
+           y="39.107689"
+           id="text2-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-93"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="39.107689">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="24.607182"
+           y="39.107689"
+           id="text2-85"><tspan
+             sodipodi:role="line"
+             id="tspan2-09"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="39.107689">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="45.876198"
+           y="7.7095947"
+           id="text2-561"><tspan
+             sodipodi:role="line"
+             id="tspan2-15"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.876198"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="56.45546"
+           y="7.7095947"
+           id="text2-561-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-1"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.45546"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="67.197495"
+           y="7.7095947"
+           id="text2-561-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.197495"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="77.719162"
+           y="7.7095947"
+           id="text2-561-6"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.719162"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="88.267693"
+           y="7.7095947"
+           id="text2-561-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="98.816223"
+           y="7.7095947"
+           id="text2-561-85"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="98.816223"
+           y="18.204056"
+           id="text2-561-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="18.204056">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="88.267693"
+           y="18.204056"
+           id="text2-561-88"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-31"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="18.204056">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="98.816223"
+           y="28.78739"
+           id="text2-561-43"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-33"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="88.267693"
+           y="28.78739"
+           id="text2-561-48"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="77.719162"
+           y="28.78739"
+           id="text2-561-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-64"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.719162"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="67.197495"
+           y="28.78739"
+           id="text2-561-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-92"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.197495"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="35.358559"
+           y="39.10614"
+           id="text2-561-59"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-46"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="35.358559"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="45.876198"
+           y="39.10614"
+           id="text2-561-47"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-75"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.876198"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="56.45546"
+           y="39.10614"
+           id="text2-561-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-89"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.45546"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="67.197495"
+           y="39.10614"
+           id="text2-561-02"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-10"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.197495"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="77.719162"
+           y="39.10614"
+           id="text2-561-08"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.719162"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="88.267693"
+           y="39.10614"
+           id="text2-561-62"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-58"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+           x="98.816223"
+           y="39.10614"
+           id="text2-561-472"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-40"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="39.10614">0</tspan></text>
+      </g>
+    </g>
+    <path
+       d="M 113.60847,4.9e-7 V 42.333333 M 124.19181,4.9e-7 V 42.333333 M 134.77514,4.9e-7 V 42.333333 M 145.35848,4.9e-7 V 31.75 42.333333 M 155.94181,4.9e-7 V 10.583334 42.333333 M 166.52514,4.9e-7 V 42.333333 M 177.10847,4.9e-7 V 21.166667 31.75 42.333333 M 187.69181,4.9e-7 V 42.333333 M 198.27514,4.9e-7 V 10.583334 21.166667 42.333333 M 208.85847,4.9e-7 V 42.333333 M 219.44181,4.9e-7 V 42.333333 M 113.60847,4.9e-7 H 219.44181 M 113.60847,10.583334 H 219.44181 M 113.60847,21.166667 H 219.44181 M 113.60847,31.75 H 219.44181 M 113.60847,42.333333 h 105.83334"
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.18520833;stroke-dasharray:none"
+       id="path2-5"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccc" />
+    <rect
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.997822"
+       id="rect1-3"
+       width="105.6349"
+       height="42.134895"
+       x="113.70769"
+       y="0.099218339"
+       inkscape:label="rect1-3" />
+    <g
+       id="g162">
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="117.23864"
+         y="7.7111459"
+         id="text2-562"><tspan
+           sodipodi:role="line"
+           id="tspan2-91"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="117.23864"
+           y="7.7111459">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="127.74201"
+         y="7.7111459"
+         id="text2-8-2"><tspan
+           sodipodi:role="line"
+           id="tspan2-9-7"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="127.74201"
+           y="7.7111459">3</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="138.21565"
+         y="7.7111459"
+         id="text2-1-0"><tspan
+           sodipodi:role="line"
+           id="tspan2-2-9"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="138.21565"
+           y="7.7111459">1</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="148.99649"
+         y="7.7111459"
+         id="text2-9-3"><tspan
+           sodipodi:role="line"
+           id="tspan2-4-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="148.99649"
+           y="7.7111459">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="117.23864"
+         y="18.205606"
+         id="text2-5-0"><tspan
+           sodipodi:role="line"
+           id="tspan2-0-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="117.23864"
+           y="18.205606">3</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="127.74201"
+         y="18.205606"
+         id="text2-0-2"><tspan
+           sodipodi:role="line"
+           id="tspan2-6-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="127.74201"
+           y="18.205606">5</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="138.21565"
+         y="18.205606"
+         id="text2-6-1"><tspan
+           sodipodi:role="line"
+           id="tspan2-1-8"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="138.21565"
+           y="18.205606">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="149.00734"
+         y="18.205606"
+         id="text2-7-7"><tspan
+           sodipodi:role="line"
+           id="tspan2-65-9"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="149.00734"
+           y="18.205606">2</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="159.54048"
+         y="18.205606"
+         id="text2-74-2"><tspan
+           sodipodi:role="line"
+           id="tspan2-5-0"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="159.54048"
+           y="18.205606">1</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="170.11974"
+         y="18.205606"
+         id="text2-744-2"><tspan
+           sodipodi:role="line"
+           id="tspan2-3-3"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="170.11974"
+           y="18.205606">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="180.86177"
+         y="18.205606"
+         id="text2-68-7"><tspan
+           sodipodi:role="line"
+           id="tspan2-8-5"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="180.86177"
+           y="18.205606">6</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="191.38344"
+         y="18.205606"
+         id="text2-4-9"><tspan
+           sodipodi:role="line"
+           id="tspan2-92-2"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="191.38344"
+           y="18.205606">8</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="117.23864"
+         y="28.78894"
+         id="text2-92-2"><tspan
+           sodipodi:role="line"
+           id="tspan2-66-8"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="117.23864"
+           y="28.78894">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="127.74201"
+         y="28.78894"
+         id="text2-04-9"><tspan
+           sodipodi:role="line"
+           id="tspan2-87-7"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="127.74201"
+           y="28.78894">4</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="138.21565"
+         y="28.78894"
+         id="text2-72-3"><tspan
+           sodipodi:role="line"
+           id="tspan2-26-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="138.21565"
+           y="28.78894">2</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="149.02284"
+         y="28.78894"
+         id="text2-15-1"><tspan
+           sodipodi:role="line"
+           id="tspan2-94-2"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="149.02284"
+           y="28.78894">5</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="159.54048"
+         y="28.78894"
+         id="text2-17-9"><tspan
+           sodipodi:role="line"
+           id="tspan2-7-3"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="159.54048"
+           y="28.78894">3</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="170.11974"
+         y="28.78894"
+         id="text2-97-1"><tspan
+           sodipodi:role="line"
+           id="tspan2-76-9"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="170.11974"
+           y="28.78894">1</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="117.23864"
+         y="39.107689"
+         id="text2-56-4"><tspan
+           sodipodi:role="line"
+           id="tspan2-39-7"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="117.23864"
+           y="39.107689">2</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="127.74201"
+         y="39.107689"
+         id="text2-2-8"><tspan
+           sodipodi:role="line"
+           id="tspan2-93-4"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="127.74201"
+           y="39.107689">1</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="138.21565"
+         y="39.107689"
+         id="text2-85-5"><tspan
+           sodipodi:role="line"
+           id="tspan2-09-0"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="138.21565"
+           y="39.107689">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="159.48466"
+         y="7.7095962"
+         id="text2-561-3"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-61"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="159.48466"
+           y="7.7095962">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="170.06393"
+         y="7.7095962"
+         id="text2-561-8-0"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-1-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="170.06393"
+           y="7.7095962">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="180.80597"
+         y="7.7095962"
+         id="text2-561-4-3"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-4-2"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="180.80597"
+           y="7.7095962">2</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="191.32764"
+         y="7.7095962"
+         id="text2-561-6-0"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-3-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="191.32764"
+           y="7.7095962">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="201.87616"
+         y="7.7095962"
+         id="text2-561-9-1"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-6-5"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="201.87616"
+           y="7.7095962">4</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="212.4247"
+         y="7.7095962"
+         id="text2-561-85-5"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-7-4"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="212.4247"
+           y="7.7095962">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="212.4247"
+         y="18.204056"
+         id="text2-561-5-7"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-9-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="212.4247"
+           y="18.204056">4</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="201.87616"
+         y="18.204056"
+         id="text2-561-88-5"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-31-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="201.87616"
+           y="18.204056">7</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="212.4247"
+         y="28.78739"
+         id="text2-561-43-9"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-33-3"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="212.4247"
+           y="28.78739">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="201.87616"
+         y="28.78739"
+         id="text2-561-48-7"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-8-4"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="201.87616"
+           y="28.78739">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="191.32764"
+         y="28.78739"
+         id="text2-561-7-5"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-64-2"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="191.32764"
+           y="28.78739">6</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="180.80597"
+         y="28.78739"
+         id="text2-561-0-5"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-92-4"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="180.80597"
+           y="28.78739">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="148.96703"
+         y="39.10614"
+         id="text2-561-59-7"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-46-4"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="148.96703"
+           y="39.10614">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="159.48466"
+         y="39.10614"
+         id="text2-561-47-4"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-75-3"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="159.48466"
+           y="39.10614">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="170.06393"
+         y="39.10614"
+         id="text2-561-2-0"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-89-7"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="170.06393"
+           y="39.10614">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="180.80597"
+         y="39.10614"
+         id="text2-561-02-8"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-10-6"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="180.80597"
+           y="39.10614">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="191.32764"
+         y="39.10614"
+         id="text2-561-08-8"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-5-8"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="191.32764"
+           y="39.10614">3</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="201.87616"
+         y="39.10614"
+         id="text2-561-62-4"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-58-3"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="201.87616"
+           y="39.10614">0</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
+         x="212.4247"
+         y="39.10614"
+         id="text2-561-472-1"><tspan
+           sodipodi:role="line"
+           id="tspan2-15-40-4"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+           x="212.4247"
+           y="39.10614">0</tspan></text>
+    </g>
+  </g>
+</svg>
diff --git a/doc/source/img/del_proc.svg b/doc/source/img/del_proc.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c5a863bd942412652e46cf261fbf2370bab71c90
--- /dev/null
+++ b/doc/source/img/del_proc.svg
@@ -0,0 +1,1011 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="830.63641"
+   height="161.25"
+   viewBox="0 0 219.77254 42.664062"
+   version="1.1"
+   id="svg1"
+   sodipodi:docname="del_proc.svg"
+   inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="1"
+     inkscape:cx="353.99999"
+     inkscape:cy="-231.99999"
+     inkscape:current-layer="layer1"
+     showgrid="false" />
+  <defs
+     id="defs1">
+    <marker
+       style="overflow:visible"
+       id="ConcaveTriangle"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Concave triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.7)"
+         d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:none"
+         id="path7" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="ConcaveTriangle-8"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Concave triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.7)"
+         d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:none"
+         id="path7-7" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0.16536997,0.16536516)">
+    <g
+       id="g1">
+      <path
+         d="M 0,0 V 42.333332 M 10.583333,0 V 42.333332 M 21.166666,0 V 42.333332 M 31.749999,0 V 31.749999 42.333332 M 42.333332,0 V 10.583333 42.333332 M 52.916665,0 V 42.333332 M 63.499998,0 V 21.166666 31.749999 42.333332 M 74.083331,0 V 42.333332 M 84.666664,0 V 10.583333 21.166666 42.333332 M 95.249997,0 V 42.333332 M 105.83333,0 V 42.333332 M 0,0 H 105.83333 M 0,10.583333 H 105.83333 M 0,21.166666 H 105.83333 M 0,31.749999 H 105.83333 M 0,42.333332 h 105.83333"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.185208;stroke-dasharray:none"
+         id="path2"
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccc" />
+      <rect
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.997822"
+         id="rect1"
+         width="105.6349"
+         height="42.134895"
+         x="0.099213526"
+         y="0.099218339" />
+      <path
+         d="M 42.333332,0 V 10.583333 H 84.666664 V 21.166666 H 63.499998 V 31.749999 H 31.749999 v 10.583333"
+         style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-dasharray:none"
+         id="path1"
+         sodipodi:nodetypes="cccccccc" />
+      <g
+         id="g3"
+         style="stroke-width:0.185208;stroke-dasharray:none">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="3.6301694"
+           y="7.7111449"
+           id="text2"><tspan
+             sodipodi:role="line"
+             id="tspan2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="7.7111449">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="14.133544"
+           y="7.7111449"
+           id="text2-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="7.7111449">7</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="24.607182"
+           y="7.7111449"
+           id="text2-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="7.7111449">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="35.388016"
+           y="7.7111449"
+           id="text2-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="35.388016"
+             y="7.7111449">9</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="3.6301694"
+           y="18.205606"
+           id="text2-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-0"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="18.205606">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="14.133544"
+           y="18.205606"
+           id="text2-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="18.205606">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="24.607182"
+           y="18.205606"
+           id="text2-6"><tspan
+             sodipodi:role="line"
+             id="tspan2-1"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="18.205606">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="33.425346"
+           y="18.205606"
+           id="text2-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-65"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="33.425346"
+             y="18.205606">10</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="45.932007"
+           y="18.205606"
+           id="text2-74"><tspan
+             sodipodi:role="line"
+             id="tspan2-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.932007"
+             y="18.205606">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="56.511269"
+           y="18.205606"
+           id="text2-744"><tspan
+             sodipodi:role="line"
+             id="tspan2-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.511269"
+             y="18.205606">7</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="67.253304"
+           y="18.205606"
+           id="text2-68"><tspan
+             sodipodi:role="line"
+             id="tspan2-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.253304"
+             y="18.205606">9</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="77.774971"
+           y="18.205606"
+           id="text2-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-92"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.774971"
+             y="18.205606">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="3.6301694"
+           y="28.78894"
+           id="text2-92"><tspan
+             sodipodi:role="line"
+             id="tspan2-66"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="28.78894">6</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="14.133544"
+           y="28.78894"
+           id="text2-04"><tspan
+             sodipodi:role="line"
+             id="tspan2-87"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="28.78894">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="24.607182"
+           y="28.78894"
+           id="text2-72"><tspan
+             sodipodi:role="line"
+             id="tspan2-26"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="28.78894">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="35.414371"
+           y="28.78894"
+           id="text2-15"><tspan
+             sodipodi:role="line"
+             id="tspan2-94"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="35.414371"
+             y="28.78894">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="45.932007"
+           y="28.78894"
+           id="text2-17"><tspan
+             sodipodi:role="line"
+             id="tspan2-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.932007"
+             y="28.78894">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="56.511269"
+           y="28.78894"
+           id="text2-97"><tspan
+             sodipodi:role="line"
+             id="tspan2-76"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.511269"
+             y="28.78894">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="3.6301694"
+           y="39.107689"
+           id="text2-56"><tspan
+             sodipodi:role="line"
+             id="tspan2-39"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="3.6301694"
+             y="39.107689">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="14.133544"
+           y="39.107689"
+           id="text2-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-93"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="14.133544"
+             y="39.107689">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="24.607182"
+           y="39.107689"
+           id="text2-85"><tspan
+             sodipodi:role="line"
+             id="tspan2-09"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="24.607182"
+             y="39.107689">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="45.876198"
+           y="7.7095947"
+           id="text2-561"><tspan
+             sodipodi:role="line"
+             id="tspan2-15"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.876198"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="56.45546"
+           y="7.7095947"
+           id="text2-561-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-1"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.45546"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="67.197495"
+           y="7.7095947"
+           id="text2-561-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.197495"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="77.719162"
+           y="7.7095947"
+           id="text2-561-6"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.719162"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="88.267693"
+           y="7.7095947"
+           id="text2-561-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="98.816223"
+           y="7.7095947"
+           id="text2-561-85"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="7.7095947">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="98.816223"
+           y="18.204056"
+           id="text2-561-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="18.204056">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="88.267693"
+           y="18.204056"
+           id="text2-561-88"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-31"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="18.204056">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="98.816223"
+           y="28.78739"
+           id="text2-561-43"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-33"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="88.267693"
+           y="28.78739"
+           id="text2-561-48"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="77.719162"
+           y="28.78739"
+           id="text2-561-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-64"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.719162"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="67.197495"
+           y="28.78739"
+           id="text2-561-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-92"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.197495"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="35.358559"
+           y="39.10614"
+           id="text2-561-59"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-46"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="35.358559"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="45.876198"
+           y="39.10614"
+           id="text2-561-47"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-75"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="45.876198"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="56.45546"
+           y="39.10614"
+           id="text2-561-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-89"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="56.45546"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="67.197495"
+           y="39.10614"
+           id="text2-561-02"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-10"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="67.197495"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="77.719162"
+           y="39.10614"
+           id="text2-561-08"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="77.719162"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="88.267693"
+           y="39.10614"
+           id="text2-561-62"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-58"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="88.267693"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.185208;stroke-dasharray:none"
+           x="98.816223"
+           y="39.10614"
+           id="text2-561-472"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-40"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.185208;stroke-dasharray:none"
+             x="98.816223"
+             y="39.10614">0</tspan></text>
+      </g>
+    </g>
+    <g
+       id="g2">
+      <rect
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.997822"
+         id="rect1-3"
+         width="105.6349"
+         height="42.134895"
+         x="113.70769"
+         y="0.099218339"
+         inkscape:label="rect1-3" />
+      <g
+         id="g162">
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="117.23864"
+           y="7.7111459"
+           id="text2-562"><tspan
+             sodipodi:role="line"
+             id="tspan2-91"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="117.23864"
+             y="7.7111459">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="127.74201"
+           y="7.7111459"
+           id="text2-8-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-9-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="127.74201"
+             y="7.7111459">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="138.21565"
+           y="7.7111459"
+           id="text2-1-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-2-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="138.21565"
+             y="7.7111459">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="148.99649"
+           y="7.7111459"
+           id="text2-9-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-4-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="148.99649"
+             y="7.7111459">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="117.23864"
+           y="18.205606"
+           id="text2-5-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-0-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="117.23864"
+             y="18.205606">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="127.74201"
+           y="18.205606"
+           id="text2-0-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-6-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="127.74201"
+             y="18.205606">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="138.21565"
+           y="18.205606"
+           id="text2-6-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-1-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="138.21565"
+             y="18.205606">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="149.00734"
+           y="18.205606"
+           id="text2-7-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-65-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="149.00734"
+             y="18.205606">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="159.54048"
+           y="18.205606"
+           id="text2-74-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-5-0"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="159.54048"
+             y="18.205606">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="170.11974"
+           y="18.205606"
+           id="text2-744-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-3-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="170.11974"
+             y="18.205606">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="180.86177"
+           y="18.205606"
+           id="text2-68-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-8-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="180.86177"
+             y="18.205606">6</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="191.38344"
+           y="18.205606"
+           id="text2-4-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-92-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="191.38344"
+             y="18.205606">8</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="117.23864"
+           y="28.78894"
+           id="text2-92-2"><tspan
+             sodipodi:role="line"
+             id="tspan2-66-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="117.23864"
+             y="28.78894">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="127.74201"
+           y="28.78894"
+           id="text2-04-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-87-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="127.74201"
+             y="28.78894">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="138.21565"
+           y="28.78894"
+           id="text2-72-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-26-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="138.21565"
+             y="28.78894">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="149.02284"
+           y="28.78894"
+           id="text2-15-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-94-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="149.02284"
+             y="28.78894">5</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="159.54048"
+           y="28.78894"
+           id="text2-17-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-7-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="159.54048"
+             y="28.78894">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="170.11974"
+           y="28.78894"
+           id="text2-97-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-76-9"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="170.11974"
+             y="28.78894">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="117.23864"
+           y="39.107689"
+           id="text2-56-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-39-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="117.23864"
+             y="39.107689">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="127.74201"
+           y="39.107689"
+           id="text2-2-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-93-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="127.74201"
+             y="39.107689">1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="138.21565"
+           y="39.107689"
+           id="text2-85-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-09-0"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="138.21565"
+             y="39.107689">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="159.48466"
+           y="7.7095962"
+           id="text2-561-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-61"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="159.48466"
+             y="7.7095962">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="170.06393"
+           y="7.7095962"
+           id="text2-561-8-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-1-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="170.06393"
+             y="7.7095962">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="180.80597"
+           y="7.7095962"
+           id="text2-561-4-3"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-4-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="180.80597"
+             y="7.7095962">2</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="191.32764"
+           y="7.7095962"
+           id="text2-561-6-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-3-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="191.32764"
+             y="7.7095962">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="201.87616"
+           y="7.7095962"
+           id="text2-561-9-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-6-5"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="201.87616"
+             y="7.7095962">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="212.4247"
+           y="7.7095962"
+           id="text2-561-85-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-7-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="212.4247"
+             y="7.7095962">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="212.4247"
+           y="18.204056"
+           id="text2-561-5-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-9-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="212.4247"
+             y="18.204056">4</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="201.87616"
+           y="18.204056"
+           id="text2-561-88-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-31-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="201.87616"
+             y="18.204056">7</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="212.4247"
+           y="28.78739"
+           id="text2-561-43-9"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-33-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="212.4247"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="201.87616"
+           y="28.78739"
+           id="text2-561-48-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-8-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="201.87616"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="191.32764"
+           y="28.78739"
+           id="text2-561-7-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-64-2"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="191.32764"
+             y="28.78739">6</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="180.80597"
+           y="28.78739"
+           id="text2-561-0-5"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-92-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="180.80597"
+             y="28.78739">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="148.96703"
+           y="39.10614"
+           id="text2-561-59-7"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-46-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="148.96703"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="159.48466"
+           y="39.10614"
+           id="text2-561-47-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-75-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="159.48466"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="170.06393"
+           y="39.10614"
+           id="text2-561-2-0"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-89-7"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="170.06393"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="180.80597"
+           y="39.10614"
+           id="text2-561-02-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-10-6"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="180.80597"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="191.32764"
+           y="39.10614"
+           id="text2-561-08-8"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-5-8"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="191.32764"
+             y="39.10614">3</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="201.87616"
+           y="39.10614"
+           id="text2-561-62-4"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-58-3"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="201.87616"
+             y="39.10614">0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+           x="212.4247"
+           y="39.10614"
+           id="text2-561-472-1"><tspan
+             sodipodi:role="line"
+             id="tspan2-15-40-4"
+             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto;stroke-width:0.264583"
+             x="212.4247"
+             y="39.10614">0</tspan></text>
+      </g>
+      <path
+         d="M 113.60847,4.9e-7 V 42.333333 M 124.19181,4.9e-7 V 42.333333 M 134.77514,4.9e-7 V 42.333333 M 145.35848,4.9e-7 V 31.75 42.333333 M 155.94181,4.9e-7 V 10.583334 42.333333 M 166.52514,4.9e-7 V 42.333333 M 177.10847,4.9e-7 V 21.166667 31.75 42.333333 M 187.69181,4.9e-7 V 42.333333 M 198.27514,4.9e-7 V 10.583334 21.166667 42.333333 M 208.85847,4.9e-7 V 42.333333 M 219.44181,4.9e-7 V 42.333333 M 113.60847,4.9e-7 H 219.44181 M 113.60847,10.583334 H 219.44181 M 113.60847,21.166667 H 219.44181 M 113.60847,31.75 H 219.44181 M 113.60847,42.333333 h 105.83334"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.185208;stroke-dasharray:none"
+         id="path2-5"
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccc" />
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ConcaveTriangle)"
+       d="M 55.816597,24.105236 C 41.389995,20.177652 31.793045,23.852493 31.793045,23.852493"
+       id="path3"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ConcaveTriangle-8)"
+       d="m 153.67709,24.084229 c 20.34552,-3.927584 33.87988,-0.252743 33.87988,-0.252743"
+       id="path3-0"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
diff --git a/doc/source/img/gitlab_guide.svg b/doc/source/img/gitlab_guide.svg
new file mode 100644
index 0000000000000000000000000000000000000000..40eef34ac97a2181ccb1570fde69b2e8b9d4810b
--- /dev/null
+++ b/doc/source/img/gitlab_guide.svg
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="170.89041mm"
+   height="98.375633mm"
+   viewBox="0 0 170.89041 98.375637"
+   version="1.1"
+   id="svg1"
+   xml:space="preserve"
+   inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
+   sodipodi:docname="gitlab_guide.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="1.3707237"
+     inkscape:cx="250.96232"
+     inkscape:cy="302.03023"
+     inkscape:current-layer="layer1" /><defs
+     id="defs1"><marker
+       style="overflow:visible"
+       id="Triangle-2-6"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="0.5"
+       markerHeight="0.5"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid"><path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path135-5-0" /></marker><marker
+       style="overflow:visible"
+       id="Triangle-2-6-7"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="0.5"
+       markerHeight="0.5"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid"><path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path135-5-0-9" /></marker><marker
+       style="overflow:visible"
+       id="Triangle-2-6-5"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Triangle arrow"
+       markerWidth="0.5"
+       markerHeight="0.5"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid"><path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="M 5.77,0 -2.88,5 V -5 Z"
+         id="path135-5-0-92" /></marker></defs><g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-201.38576,71.143787)"><text
+       xml:space="preserve"
+       style="font-size:5.64444px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+       x="319.32074"
+       y="-18.439745"
+       id="text2-8-2"><tspan
+         sodipodi:role="line"
+         id="tspan2-8-9"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+         x="319.32074"
+         y="-18.439745">Pull changes</tspan></text><text
+       xml:space="preserve"
+       style="font-size:5.64444px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+       x="268.61737"
+       y="-62.437073"
+       id="text2-8-2-6"><tspan
+         sodipodi:role="line"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+         x="268.61737"
+         y="-62.437073"
+         id="tspan4">Create merge</tspan><tspan
+         sodipodi:role="line"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+         x="268.61737"
+         y="-55.275597"
+         id="tspan5">request</tspan></text><text
+       xml:space="preserve"
+       style="font-size:5.64444px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+       x="218.24463"
+       y="-18.439745"
+       id="text2-8-2-8"><tspan
+         sodipodi:role="line"
+         id="tspan2-8-9-4"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+         x="218.24463"
+         y="-18.439745">Push changes</tspan></text><g
+       id="g4"
+       transform="translate(-0.10392884)"><rect
+         style="fill:#29485d;fill-opacity:1;stroke:none;stroke-width:0.290054"
+         id="rect2-2-3"
+         width="61.07412"
+         height="37.467552"
+         x="256.39783"
+         y="-10.235707"
+         ry="4.4139304"
+         rx="4.4139304" /><text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:0;stroke-width:0.264583"
+         x="266.30292"
+         y="-2.6874678"
+         id="text2-4-9-8"><tspan
+           sodipodi:role="line"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           x="266.30292"
+           y="-2.6874678"
+           id="tspan6">Local repository</tspan></text></g><g
+       id="g1"
+       transform="translate(0,-0.71027677)"><rect
+         style="fill:#29485d;fill-opacity:1;stroke:none;stroke-width:0.290054"
+         id="rect2-2-3-3"
+         width="61.07412"
+         height="37.467552"
+         x="201.38576"
+         y="-70.43351"
+         ry="4.4139304"
+         rx="4.4139304" /><text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:0;stroke-width:0.264583"
+         x="209.40707"
+         y="-50.183891"
+         id="text2-4-9-8-5"><tspan
+           sodipodi:role="line"
+           id="tspan2-4-6-5-6"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           x="209.40707"
+           y="-50.183891">Forked repository</tspan></text></g><g
+       id="g2"
+       transform="translate(33.174917,1.4628113)"><rect
+         style="fill:#29485d;fill-opacity:1;stroke:none;stroke-width:0.290054"
+         id="rect2-2-3-2"
+         width="61.07412"
+         height="37.467552"
+         x="278.02713"
+         y="-72.606598"
+         ry="4.4139304"
+         rx="4.4139304" /><text
+         xml:space="preserve"
+         style="font-size:6.35px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:0;stroke-width:0.264583"
+         x="286.19727"
+         y="-52.356979"
+         id="text2-4-9-8-7"><tspan
+           sodipodi:role="line"
+           id="tspan2-4-6-5-0"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1;stroke-width:0.264583"
+           x="286.19727"
+           y="-52.356979">kmos3 repository</tspan></text></g><path
+       style="fill:none;fill-opacity:1;stroke:#29485d;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Triangle-2-6)"
+       d="m 263.94089,-12.877687 -6.35613,-11.00914 -2.31553,-4.010624"
+       id="path3-0-6"
+       sodipodi:nodetypes="ccc" /><path
+       style="fill:none;fill-opacity:1;stroke:#29485d;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Triangle-2-6-5)"
+       d="m 266.69088,-49.292579 h 26.78252 l 9.75686,-8e-6"
+       id="path3-0-6-9"
+       sodipodi:nodetypes="ccc" /><path
+       style="fill:none;fill-opacity:1;stroke:#29485d;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Triangle-2-6-7)"
+       d="m 318.84903,-29.18511 -6.35613,11.009139 -2.31554,4.01062"
+       id="path3-0-6-2"
+       sodipodi:nodetypes="ccc" /><rect
+       style="fill:#d9d9d9;fill-opacity:1;stroke:none;stroke-width:0.158037"
+       id="rect1-6-5"
+       width="55.819664"
+       height="23.162973"
+       x="258.92111"
+       y="0.61407042"
+       ry="3.6116412"
+       rx="3.6116412" /><text
+       xml:space="preserve"
+       style="font-size:5.64444px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+       x="261.07266"
+       y="6.5774841"
+       id="text2-8-2-4"><tspan
+         sodipodi:role="line"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+         x="261.07266"
+         y="6.5774841"
+         id="tspan9">edit source on side</tspan><tspan
+         sodipodi:role="line"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+         x="261.07266"
+         y="13.738958"
+         id="tspan10">branch based on the</tspan><tspan
+         sodipodi:role="line"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444px;font-family:Roboto;-inkscape-font-specification:'Roboto, Bold';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#29485d;fill-opacity:1;stroke-width:0.264583"
+         x="261.07266"
+         y="20.900433"
+         id="tspan11">&quot;develop&quot; branch </tspan></text></g></svg>
diff --git a/doc/source/topic_guides/index.rst b/doc/source/topic_guides/index.rst
index 188ae46086b7f851aa62c0d30ca7217eb3fe84ee..967277cccf07d71b24158efbc1f31800d61661f3 100644
--- a/doc/source/topic_guides/index.rst
+++ b/doc/source/topic_guides/index.rst
@@ -15,13 +15,12 @@ useful for using kmos3.
 
   kmc_concept
   workflows
-  data_models
   kmos3_speed
+  data_models
+  coord_syntax
+  proc_syntax
   lateral_interaction
   temporal_acceleration
-  proc_syntax
-  coord_syntax
-  developers_guide
 
 ..  Convergence Tests
 ..  The Editor Frontend
diff --git a/doc/source/topic_guides/otf_backend.rst b/doc/source/topic_guides/otf_backend.rst
index a42eccae5c923bf1ed0e8562a2e5bef71ac25745..615c00e5dfc3bff144de74368c4e094a7529079f 100644
--- a/doc/source/topic_guides/otf_backend.rst
+++ b/doc/source/topic_guides/otf_backend.rst
@@ -1,3 +1,5 @@
+.. _otf_backend:
+
 The otf Backend
 ---------------
 
diff --git a/doc/source/tutorials/index.rst b/doc/source/tutorials/index.rst
index 3bd14524845e3733d9ea79da06916682dd821c7a..89dbde5f59db76c9aeaf107aa3896b615ce72d32 100644
--- a/doc/source/tutorials/index.rst
+++ b/doc/source/tutorials/index.rst
@@ -1,3 +1,5 @@
+.. _tutorials:
+
 =========
 Tutorials
 =========