From b402c07fb3055a17387d3b4207428c950c5aaf34 Mon Sep 17 00:00:00 2001 From: Daniel Vedder <daniel.vedder@idiv.de> Date: Tue, 7 Feb 2023 11:26:04 +0100 Subject: [PATCH] Added documentation on adapting Persephone --- Manifest.toml | 2 +- Project.toml | 2 + docs/build/adapting.html | 2 + docs/build/architecture.html | 2 +- docs/build/assets/architecture.png | Bin 0 -> 89970 bytes docs/build/assets/architecture.svg | 394 +++++++++++++++++++++++++++ docs/build/assets/model_object.png | Bin 0 -> 92007 bytes docs/build/assets/model_object.svg | 423 +++++++++++++++++++++++++++++ docs/build/crops.html | 2 +- docs/build/developing.html | 2 +- docs/build/farm.html | 2 +- docs/build/gis.html | 4 +- docs/build/index.html | 4 +- docs/build/io.html | 2 +- docs/build/nature.html | 4 +- docs/build/odd.html | 2 +- docs/build/search.html | 2 +- docs/build/search_index.js | 2 +- docs/build/simulation.html | 2 +- docs/build/species-dsl.html | 4 +- docs/build/species.html | 2 +- docs/builddocs.jl | 2 +- docs/src/adapting.md | 68 +++++ docs/src/architecture.md | 24 +- docs/src/index.md | 10 +- docs/src/species-dsl.md | 2 +- run.jl | 2 +- src/nature/species/skylark.jl | 6 +- 28 files changed, 937 insertions(+), 36 deletions(-) create mode 100644 docs/build/adapting.html create mode 100644 docs/build/assets/architecture.png create mode 100644 docs/build/assets/architecture.svg create mode 100644 docs/build/assets/model_object.png create mode 100644 docs/build/assets/model_object.svg create mode 100644 docs/src/adapting.md diff --git a/Manifest.toml b/Manifest.toml index 1429f06..b0f2721 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.9.0-alpha1" manifest_format = "2.0" -project_hash = "6a6afac02132d4ea401777f7459614dc2d5cfa37" +project_hash = "7ba06fde8b5defbbec66accfbf1488a9d06b6954" [[deps.AbstractFFTs]] deps = ["ChainRulesCore", "LinearAlgebra"] diff --git a/Project.toml b/Project.toml index 60bac47..90b6aac 100644 --- a/Project.toml +++ b/Project.toml @@ -11,10 +11,12 @@ Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b" GeoArrays = "2fb1d81b-e6a0-5fc5-82e6-8e06903437ab" Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" LoggingExtras = "e6f89c97-d47a-5376-807f-9c37f3926c36" +Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [compat] Agents = ">= 5.6" diff --git a/docs/build/adapting.html b/docs/build/adapting.html new file mode 100644 index 0000000..f57c51c --- /dev/null +++ b/docs/build/adapting.html @@ -0,0 +1,2 @@ +<!DOCTYPE html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Adapting Persephone · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li class="is-active"><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Developing</a></li><li class="is-active"><a href="adapting.html">Adapting Persephone</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="adapting.html">Adapting Persephone</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/adapting.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Adapting-Persephone"><a class="docs-heading-anchor" href="#Adapting-Persephone">Adapting Persephone</a><a id="Adapting-Persephone-1"></a><a class="docs-heading-anchor-permalink" href="#Adapting-Persephone" title="Permalink"></a></h1><p>A key development goal of Persephone is to be <a href="https://doi.org/10.1515/itit-2019-0040">FAIR</a>: <em>findable, accessible, interoperable, and reusable</em>. We aim to build a model that is both easy to use and easy to adapt to new situations.</p><p>There are multiple ways to adapt Persephone for a new modelling study:</p><h3 id="Changing-the-parameters"><a class="docs-heading-anchor" href="#Changing-the-parameters">Changing the parameters</a><a id="Changing-the-parameters-1"></a><a class="docs-heading-anchor-permalink" href="#Changing-the-parameters" title="Permalink"></a></h3><p>The simplest way to adapt Persephone is simply by changing the parameters. Copy <code>src/parameters.toml</code> to a new location, adjust it to your needs, and run the model using <code>julia run.jl -c <configfile></code>.</p><h3 id="Changing-the-region"><a class="docs-heading-anchor" href="#Changing-the-region">Changing the region</a><a id="Changing-the-region-1"></a><a class="docs-heading-anchor-permalink" href="#Changing-the-region" title="Permalink"></a></h3><p>To apply Persephone to a new region, you need to create new input maps of land cover and farmplots. How to do so is described <a href="gis.html">here</a>.</p><p><em>You may also need to change aspects of the <code>farm</code> submodel. This is not yet implemented.</em></p><h3 id="Adding-new-animal-species"><a class="docs-heading-anchor" href="#Adding-new-animal-species">Adding new animal species</a><a id="Adding-new-animal-species-1"></a><a class="docs-heading-anchor-permalink" href="#Adding-new-animal-species" title="Permalink"></a></h3><p>To implement a new species to the <code>nature</code> submodel, add a new file to the <code>src/nature/species</code> directory and <code>include</code> it in <code>src/Persephone.jl</code>, as well as adding the name of the species to the <code>nature.targetspecies</code> parameter. In the new file, implement the species using the <a href="nature.html#Persephone.@species-Tuple{Any, Any}"><code>@species</code></a> syntax as described <a href="species-dsl.html">here</a>.</p><h3 id="Adding-new-crop-species"><a class="docs-heading-anchor" href="#Adding-new-crop-species">Adding new crop species</a><a id="Adding-new-crop-species-1"></a><a class="docs-heading-anchor-permalink" href="#Adding-new-crop-species" title="Permalink"></a></h3><p><em>Crop growth is not yet implemented.</em></p><h3 id="Adding-new-farmer-behaviour"><a class="docs-heading-anchor" href="#Adding-new-farmer-behaviour">Adding new farmer behaviour</a><a id="Adding-new-farmer-behaviour-1"></a><a class="docs-heading-anchor-permalink" href="#Adding-new-farmer-behaviour" title="Permalink"></a></h3><p><em>Farmer behaviour is not yet implemented.</em></p><h3 id="Adding-a-new-submodel"><a class="docs-heading-anchor" href="#Adding-a-new-submodel">Adding a new submodel</a><a id="Adding-a-new-submodel-1"></a><a class="docs-heading-anchor-permalink" href="#Adding-a-new-submodel" title="Permalink"></a></h3><p>To add a new submodel in addition to the existing ones (<code>nature</code>, <code>crop</code>, and <code>farm</code>), you need to familiarise yourself with the <a href="architecture.html">software architecture</a>. In particular, you need to understand how initialisation and scheduling works in <a href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/core/simulation.jl"><code>src/core/simulation.jl</code></a>, and what information is stored in the <code>model</code> object.</p><p>If you want to add a new agent type, use Agents.jl's <a href="https://juliadynamics.github.io/Agents.jl/stable/tutorial/#Agents.@agent"><code>@agent</code></a> macro. (But be aware that Persephone already has three agent types and you may encounter <a href="https://juliadynamics.github.io/Agents.jl/stable/performance_tips/#Avoid-Unions-of-many-different-agent-types-(temporary!)-1">performance problems</a>.) Having implemented the new agent type, add it to the <code>model</code> objects type definition and scheduler, and write an initialisation function and a <code>stepagent!</code> function. (See <a href="@ref"><code>initmodel</code></a> and <a href="simulation.html#Persephone.stepsimulation!-Tuple{Agents.AgentBasedModel}"><code>stepsimulation!</code></a> for details.)</p><h3 id="Linking-to-another-model"><a class="docs-heading-anchor" href="#Linking-to-another-model">Linking to another model</a><a id="Linking-to-another-model-1"></a><a class="docs-heading-anchor-permalink" href="#Linking-to-another-model" title="Permalink"></a></h3><p>Persephone can also be used as a software library and be called from another application. For this purpose, it is set up as a <a href="https://pkgdocs.julialang.org/v1/">Julia package</a>, with a <a href="https://docs.julialang.org/en/v1/manual/modules/">module</a> exporting various model functions, types, and macros (see <a href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/Persephone.jl"><code>src/Persephone.jl</code></a>). Of particular interest are the functions <a href="simulation.html#Persephone.simulate"><code>simulate</code></a> (set up and run a complete simulation based on a config file), <a href="simulation.html#Persephone.initialise"><code>initialise</code></a> (create one or more <code>model</code> objects from a config file), <a href="simulation.html#Persephone.simulate!-Tuple{Agents.AgentBasedModel}"><code>simulate!</code></a> (do a simulation run with an existing <code>model</code> object), and <a href="simulation.html#Persephone.stepsimulation!-Tuple{Agents.AgentBasedModel}"><code>stepsimulation!</code></a> (update a <code>model</code> object by one time step).</p><p>To interface with Julia from another language, see the Julia docs <a href="https://docs.julialang.org/en/v1/manual/calling-c-and-fortran-code/">here</a> and <a href="https://docs.julialang.org/en/v1/manual/embedding/">here</a>.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="developing.html">« Developing Persephone</a><a class="docs-footer-nextpage" href="architecture.html">Source code architecture »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/architecture.html b/docs/build/architecture.html index 0299438..f696ecd 100644 --- a/docs/build/architecture.html +++ b/docs/build/architecture.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Source code architecture · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li class="is-active"><a class="tocitem" href="architecture.html">Source code architecture</a><ul class="internal"><li class="toplevel"><a class="tocitem" href="#Model-components"><span>Model components</span></a></li><li class="toplevel"><a class="tocitem" href="#Important-implementation-details"><span>Important implementation details</span></a></li></ul></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Developing</a></li><li class="is-active"><a href="architecture.html">Source code architecture</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="architecture.html">Source code architecture</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/architecture.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Source-code-architecture"><a class="docs-heading-anchor" href="#Source-code-architecture">Source code architecture</a><a id="Source-code-architecture-1"></a><a class="docs-heading-anchor-permalink" href="#Source-code-architecture" title="Permalink"></a></h1><h1 id="Model-components"><a class="docs-heading-anchor" href="#Model-components">Model components</a><a id="Model-components-1"></a><a class="docs-heading-anchor-permalink" href="#Model-components" title="Permalink"></a></h1><p>Persephone is divided into four components, three of which are semi-independent submodels:</p><ol><li><p><code>core</code>: This is the foundation of the model software, which sets up and executes simulation runs. It also reads in the configuration file and landscape maps, and provides data output functionality.</p></li><li><p><code>nature</code>: This is an individual-based model of species in agricultural landscapes. It defines the <a href="nature.html#Persephone.Animal"><code>Animal</code></a> agent type, and a set of macros that can be used to rapidly create new species. It also includes ecological process functions that are useful for all species.</p></li><li><p><code>farm</code>: This is an agent-based model of farmer decision making. It is not yet implemented, but will provide the <a href="farm.html#Persephone.Farmer"><code>Farmer</code></a> agent type.</p></li><li><p><code>crop</code>: This is a mathematical growth model for various crops. It is not yet implemented, but already provides the agent type <a href="crops.html#Persephone.FarmPlot"><code>FarmPlot</code></a>, representing one field and its associated extent and crop type.</p></li></ol><p>Conceptually, <code>core</code> provides functionality that is needed by all of the submodels. Decisions made by <code>Farmer</code>s affect the <code>FarmPlot</code>s they own, and (directly or indirectly) the <code>Animal</code>s in the model landscape.</p><h1 id="Important-implementation-details"><a class="docs-heading-anchor" href="#Important-implementation-details">Important implementation details</a><a id="Important-implementation-details-1"></a><a class="docs-heading-anchor-permalink" href="#Important-implementation-details" title="Permalink"></a></h1><ol><li><p><strong>The <code>model</code> object:</strong> A cursory reading of the source code will quickly show that most functions take an <code>AgentBaseModel</code> object as one of their arguments. This is the key data structure of <a href="https://juliadynamics.github.io/Agents.jl/stable/tutorial/#.-The-model-1">Agents.jl</a>, and holds all state that is in any way relevant to a simulation run. (Persephone has a strict "no global state" policy to avoid state-dependent bugs and allow parallelisation.) The model object gives access to all agent instances (via <code>model[id]</code>, where <code>id</code> is the unique identifier of this agent). It also stores the configuration (<code>model.settings</code>), the landscape (<code>model.landscape</code>, a matrix of <a href="simulation.html#Persephone.Pixel"><code>Pixel</code></a> objects that store the local land cover, amongst other things), and the current simulation date (<code>model.date</code>).</p></li><li><p><strong>Model configuration/the <a href="io.html#Persephone.@param-Tuple{Any}"><code>@param</code></a> macro:</strong> The model is configured via a <a href="https://toml.io/en/">TOML</a> file, the default version of which is at <code>src/parameters.toml</code>. An individual run can be configured using a user-defined configuration file, commandline arguments, or function calls (when Persephone is used as a package rather than an application). During a model run, the <code>@param(parameter)</code> macro can be used as a short-hand for <code>model.settings["parameter"]</code>. Note that parameter names are prepended with the name of the component they are associated with. For example, the <code>outdir</code> parameter belongs to the <code>[core]</code> section of the TOML file, and must therefore be referenced as <code>@param(core.outdir)</code>. (See <code>src/core/input.jl</code> for details.)</p></li><li><p><strong>Output data:</strong> Persephone can output model data into text files with a specified frequency (daily, monthly, yearly, or at the simulation end). Submodels can use <a href="@ref"><code>newdataoutput!</code></a> to plug into this system. For an example of how to use this, see <code>src/nature/ecologicaldata.jl</code>. (See <code>src/core/output.jl</code> for details.)</p></li><li><p><strong>Farm events:</strong> The <a href="simulation.html#Persephone.FarmEvent"><code>FarmEvent</code></a> struct is used to communicate farming-related events between submodels. An event can be triggered with <code>createevent!()</code> and affects all pixels within a <code>FarmPlot</code>. (See <code>src/core/landscape.jl</code> for details.)</p></li><li><p><strong>Random numbers and logging:</strong> By default in Julia, the random number generator (RNG) and the system logger are two globally accessible variables. As Persephone needs to avoid all global data (as this would interfere with parallel runs), the <code>model</code> object stores a local logger and a local RNG. <em>Whenever you need to use a random number, you must use the <code>model.rng</code>! The easiest way to do this is with the <a href="io.html#Persephone.@rand-Tuple"><code>@rand</code></a> and <a href="io.html#Persephone.@shuffle!-Tuple{Any}"><code>@shuffle!</code></a> macros.</em> The local logger generally does not change the way the model uses <a href="https://docs.julialang.org/en/v1/stdlib/Logging/">log statements</a>, this is only important in some functions in <code>src/core/simulation.jl</code>.</p></li><li><p><strong>Working with agents:</strong> For more information about working with agent objects, see the <a href="https://juliadynamics.github.io/Agents.jl/stable/api/">Agents.jl API</a>.</p></li></ol></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="developing.html">« Developing Persephone</a><a class="docs-footer-nextpage" href="gis.html">GIS data »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Source code architecture · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li class="is-active"><a class="tocitem" href="architecture.html">Source code architecture</a><ul class="internal"><li class="toplevel"><a class="tocitem" href="#Model-components"><span>Model components</span></a></li><li class="toplevel"><a class="tocitem" href="#Important-implementation-details"><span>Important implementation details</span></a></li></ul></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Developing</a></li><li class="is-active"><a href="architecture.html">Source code architecture</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="architecture.html">Source code architecture</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/architecture.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Source-code-architecture"><a class="docs-heading-anchor" href="#Source-code-architecture">Source code architecture</a><a id="Source-code-architecture-1"></a><a class="docs-heading-anchor-permalink" href="#Source-code-architecture" title="Permalink"></a></h1><h1 id="Model-components"><a class="docs-heading-anchor" href="#Model-components">Model components</a><a id="Model-components-1"></a><a class="docs-heading-anchor-permalink" href="#Model-components" title="Permalink"></a></h1><p><img src="assets/architecture.png" alt=""model architecture""/></p><p>Persephone is divided into four components, three of which are semi-independent submodels:</p><ol><li><p><code>core</code>: This is the foundation of the model software, which sets up and executes simulation runs. It also reads in the configuration file and landscape maps, and provides data output functionality. (Eventually, it will also provide weather data.)</p></li><li><p><code>nature</code>: This is an individual-based model of species in agricultural landscapes. It defines the <a href="nature.html#Persephone.Animal"><code>Animal</code></a> agent type, and a set of macros that can be used to rapidly create new species. It also includes ecological process functions that are useful for all species.</p></li><li><p><code>farm</code>: This is an agent-based model of farmer decision making. It is not yet implemented, but will provide the <a href="farm.html#Persephone.Farmer"><code>Farmer</code></a> agent type.</p></li><li><p><code>crop</code>: This is a mathematical growth model for various crops. It is not yet implemented, but already provides the agent type <a href="crops.html#Persephone.FarmPlot"><code>FarmPlot</code></a>, representing one field and its associated extent and crop type.</p></li></ol><p>Conceptually, <code>core</code> provides functionality that is needed by all of the submodels. Decisions made by <code>Farmer</code>s affect the <code>FarmPlot</code>s they own, and (directly or indirectly) the <code>Animal</code>s in the model landscape.</p><h1 id="Important-implementation-details"><a class="docs-heading-anchor" href="#Important-implementation-details">Important implementation details</a><a id="Important-implementation-details-1"></a><a class="docs-heading-anchor-permalink" href="#Important-implementation-details" title="Permalink"></a></h1><p><img src="assets/model_object.png" alt=""the model object""/></p><ol><li><p><strong>The <code>model</code> object:</strong> A cursory reading of the source code will quickly show that most functions take an <code>AgentBasedModel</code> object as one of their arguments. This is the key data structure of <a href="https://juliadynamics.github.io/Agents.jl/stable/tutorial/#.-The-model-1">Agents.jl</a>, and holds all state that is in any way relevant to a simulation run. (Persephone has a strict "no global state" policy to avoid state-dependent bugs and allow parallelisation.) The model object gives access to all agent instances (via <code>model[id]</code>, where <code>id</code> is the unique identifier of this agent). It also stores the configuration (<code>model.settings</code>), the landscape (<code>model.landscape</code>, a matrix of <a href="simulation.html#Persephone.Pixel"><code>Pixel</code></a> objects that store the local land cover, amongst other things), and the current simulation date (<code>model.date</code>). (See <a href="@ref"><code>initmodel</code></a> for details.)</p></li><li><p><strong>Model configuration/the <a href="io.html#Persephone.@param-Tuple{Any}"><code>@param</code></a> macro:</strong> The model is configured via a <a href="https://toml.io/en/">TOML</a> file, the default version of which is at <a href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/parameters.toml"><code>src/parameters.toml</code></a>. An individual run can be configured using a user-defined configuration file, commandline arguments, or function calls (when Persephone is used as a package rather than an application). During a model run, the <code>@param(parameter)</code> macro can be used as a short-hand for <code>model.settings["parameter"]</code>. Note that parameter names are prepended with the name of the component they are associated with. For example, the <code>outdir</code> parameter belongs to the <code>[core]</code> section of the TOML file, and must therefore be referenced as <code>@param(core.outdir)</code>. (See <a href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/core/input.jl"><code>src/core/input.jl</code></a> for details.)</p></li></ol><div class="admonition is-warning"><header class="admonition-header">@param and other macros</header><div class="admonition-body"><p>As <code>@param(parameter)</code> expands to <code>model.settings["parameter"]</code>, it can obviously only be used in a context where the <code>model</code> object is actually available. (This is the case for most functions in Persephone, but not for all.) Similarly, many of the <code>nature</code> macros depend on specific variables being available where they are called, and can therefore only be used in specific contexts (this is indicated in their documentation).</p></div></div><ol><li><p><strong>Output data:</strong> Persephone can output model data into text files with a specified frequency (daily, monthly, yearly, or at the simulation end). Submodels can use <a href="@ref"><code>newdataoutput!</code></a> to plug into this system. For an example of how to use this, see <a href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/nature/ecologicaldata.jl"><code>src/nature/ecologicaldata.jl</code></a>. (See <a href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/core/output.jl"><code>src/core/output.jl</code></a> for details.)</p></li><li><p><strong>Farm events:</strong> The <a href="simulation.html#Persephone.FarmEvent"><code>FarmEvent</code></a> struct is used to communicate farming-related events between submodels. An event can be triggered with <a href="simulation.html#Persephone.createevent!"><code>createevent!</code></a> and affects all pixels within a <code>FarmPlot</code>. (See <a href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/core/landscape.jl"><code>src/core/landscape.jl</code></a> for details.)</p></li><li><p><strong>Random numbers and logging:</strong> By default in Julia, the random number generator (RNG) and the system logger are two globally accessible variables. As Persephone needs to avoid all global data (as this would interfere with reproducibility in parallel runs), the <code>model</code> object stores a local logger and a local RNG. The local logger generally does not change the way the model uses <a href="https://docs.julialang.org/en/v1/stdlib/Logging/">log statements</a>, it is only relevant for some functions in <a href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/core/simulation.jl"><code>src/core/simulation.jl</code></a>.</p></li></ol><div class="admonition is-info"><header class="admonition-header">Using the model RNG</header><div class="admonition-body"><p>Whenever you need to use a <a href="https://docs.julialang.org/en/v1/stdlib/Random/#Base.rand">random number</a>, you must use the <code>model.rng</code>. The easiest way to do this is with the <a href="io.html#Persephone.@rand-Tuple"><code>@rand</code></a> and <a href="io.html#Persephone.@shuffle!-Tuple{Any}"><code>@shuffle!</code></a> macros. (Note that these, too, require access to the <code>model</code> object.)</p></div></div><ol><li><strong>Working with agents:</strong> For more information about working with agent objects, see the <a href="https://juliadynamics.github.io/Agents.jl/stable/api/">Agents.jl API</a>.</li></ol></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="adapting.html">« Adapting Persephone</a><a class="docs-footer-nextpage" href="gis.html">GIS data »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/assets/architecture.png b/docs/build/assets/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..bf109d5137a8f8f832e6ffb12df40bf2fc5ec91e GIT binary patch literal 89970 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%0Ah6ymm=>H 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 literal 0 HcmV?d00001 diff --git a/docs/build/assets/architecture.svg b/docs/build/assets/architecture.svg new file mode 100644 index 0000000..be71038 --- /dev/null +++ b/docs/build/assets/architecture.svg @@ -0,0 +1,394 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="100mm" + height="80mm" + viewBox="0 0 100 80" + version="1.1" + id="svg5" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="architecture.svg" + inkscape:export-filename="/home/xo30xoqa/Documents/Promotion/Persephone/docs/src/assets/architecture.png" + inkscape:export-xdpi="300" + inkscape:export-ydpi="300" + 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="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.8" + inkscape:cx="195.83333" + inkscape:cy="143.61111" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + width="100mm" + height="160px" + units="px" /> + <defs + id="defs2"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath2682"> + <path + d="M 0,660 H 660 V 0 H 0 Z" + id="path2680" + inkscape:connector-curvature="0" /> + </clipPath> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.795049;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:1.5901, 3.18019;stroke-dashoffset:0;stroke-opacity:1" + id="rect159" + width="89.145073" + height="39.204952" + x="5.4274635" + y="36.795597" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:1.4,2.8;stroke-dashoffset:0;stroke-opacity:1" + id="rect1144" + width="27.434294" + height="29.393623" + x="5.3306284" + y="3.7036958" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:1.4,2.8;stroke-dashoffset:0;stroke-opacity:1" + id="rect1228" + width="27.434294" + height="29.393623" + x="36.297859" + y="3.7036958" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:1.4,2.8;stroke-dashoffset:0;stroke-opacity:1" + id="rect1230" + width="27.434294" + height="29.393623" + x="67.265076" + y="3.7036958" /> + <path + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.0702378;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 16.713111,14.267014 c -0.949795,0.582376 -0.09904,1.306727 -1.372706,0.570572 -0.989023,-0.571637 -1.71377,4.085721 -0.835105,4.881864 -0.980836,0.14203 -1.715307,0.896743 -1.497837,1.595551 0.902462,2.899948 2.631802,2.65172 3.967784,2.375865 -0.06625,0.224446 -0.398245,0.764158 0.01144,0.734523 1.603693,-0.115986 1.7612,-1.191206 2.427498,-1.317008 0.04816,-0.0091 0.09011,0.345803 0.01235,0.571043 -0.129793,0.375941 -0.03099,0.535313 0.103291,0.676431 0.06671,0.0701 -0.125062,-0.40833 -0.05725,-0.456462 0.10279,-0.07295 0.06729,-0.615745 0.121974,-0.661031 0.0089,0.08116 0.259226,-0.203721 0.263596,-0.02127 0.0075,0.314099 0.04442,0.797149 0.07944,0.565647 0.115581,-0.7641 0.275332,-0.800415 0.339604,-0.716359 0.163565,0.213911 -0.100954,1.284991 0.09447,1.36467 0.0618,0.025 -0.03964,-0.215908 0.05676,-0.634083 0.04142,-0.179705 -0.01314,-0.375921 0.03893,-0.62548 0.01279,-0.06131 0.276252,-0.352166 0.306763,-0.395461 0.02973,-0.04219 0.342878,-0.02088 0.422733,0.210289 0.05455,0.157913 -0.09921,0.510832 -0.08425,0.665436 0.04071,0.420454 -0.02712,0.684867 0.04399,0.731574 0.04322,0.02839 0.07083,-0.224937 0.09904,-0.658861 0.02216,-0.340719 0.104399,-0.796712 0.101705,-0.835474 -0.02178,-0.31227 0.08278,-0.419652 0.165548,-0.417719 0.144783,0.0035 0.417053,0.01233 0.413515,0.189056 -8.99e-4,0.04585 -0.138116,0.263637 -0.124572,0.608861 0.02577,0.656835 -0.133395,0.914516 -0.08032,0.865522 0.239957,-0.221487 0.07591,-0.758945 0.365007,-1.526173 0.05083,-0.134884 -0.535995,-0.343145 -0.518804,-0.392597 0.165898,-0.477241 0.137832,-0.331653 0.317248,-0.775119 0.207024,0.0081 0.63361,-0.647065 0.04641,-1.217609 0,0 -0.200003,0.190297 -0.316256,0.115796 -0.0449,-0.02878 0.894799,-0.418031 1.817613,-0.766049 1.340115,-0.505393 1.683688,-0.823617 1.683688,-0.823617 0.01208,-0.210413 -1.687955,0.806301 -2.838984,1.099132 -0.370234,0.09419 -0.861384,0.438532 -0.87678,0.429861 -0.174275,-0.09814 -0.244139,-0.05619 -0.406569,-0.04859 -0.802716,-1.414411 -2.213315,-4.520546 -4.29104,-5.962746 z" + id="path846" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cscscssssscssscssssssssssssssccssssscc" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="11.313479" + y="30.12886" + id="text5051"><tspan + sodipodi:role="line" + id="tspan5049" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="11.313479" + y="30.12886">Animal</tspan></text> + <path + style="fill:#000000;stroke-width:0.0187667" + d="m 48.627158,24.399671 c -0.597126,-0.394655 -0.126126,-1.221818 -0.1972,-1.805214 0.09573,-0.897365 0.293831,-1.78325 0.472332,-2.661779 0.241404,-0.304069 0.05479,-0.892414 -0.293196,-0.398917 -0.456216,0.956604 -0.545505,2.034551 -0.813164,3.051554 -0.143235,0.230952 -0.02029,1.197927 -0.306701,0.911141 -0.07167,-0.881441 0.392512,-1.734952 0.262607,-2.616156 -0.243774,-0.448846 0.05799,-1.606919 -0.308434,-1.644824 -0.190427,1.28417 -0.148509,2.589507 -0.206873,3.883801 -0.491388,-0.02344 -0.05027,-0.950611 -0.172154,-1.321355 0.05045,-0.89673 0.09907,-1.794341 0.203386,-2.686786 -0.551532,0.341931 -0.218624,1.176577 -0.419776,1.720383 -0.08951,0.77153 -0.240492,1.54299 -0.196856,2.323181 -0.600059,0.353186 -0.301703,-0.860633 -0.28655,-1.204986 0.107796,-0.852845 0.269223,-1.697854 0.489401,-2.5278 0.06469,-0.703538 -0.284346,0.386432 -0.334469,0.604663 -0.308918,0.979122 -0.568737,1.975833 -0.722587,2.991586 -0.470967,0.394671 -0.664504,-0.476017 -0.403409,-0.794337 0.216812,-1.032813 0.624816,-2.010291 1.001605,-2.991849 -0.359905,-0.144663 -0.489063,0.856427 -0.63139,1.203582 -0.262997,0.800244 -0.546851,1.600331 -0.781046,2.405668 -0.633816,-0.0678 -0.771162,-0.788991 -0.462981,-1.284059 0.3137,-0.88976 0.704933,-1.756695 1.157235,-2.580159 0.199032,-0.595102 -0.414126,-0.236969 -0.455001,0.123579 -0.443168,0.78022 -0.81515,1.60658 -1.008112,2.484256 -0.08134,0.53181 -0.545128,0.398434 -0.401197,-0.104754 0.192301,-0.578625 0.420386,-1.148839 0.690246,-1.69688 0.269413,-0.560092 0.628088,-1.074511 0.969547,-1.586671 -0.06126,-0.280868 -0.317206,-0.616585 -0.200553,-0.718077 -0.517133,-0.555936 -0.391731,-1.404155 -0.612164,-2.089112 -0.06893,-0.478379 -0.28693,-1.369566 -0.266203,-1.592805 -0.0078,0.266394 0.452737,1.04296 0.429433,0.388693 -0.0741,-0.282201 -0.08554,-1.144768 0.115802,-0.3944 -0.03028,0.25942 -0.07208,1.158253 0.330346,0.662477 0.09158,-0.210836 -0.04078,-1.406676 0.111457,-0.68749 0.255178,1.269586 0.443076,2.548467 0.607465,3.832469 0.14197,0.596856 0.08356,-0.537713 0.0091,-0.747268 -0.06719,-0.259199 -0.01091,-0.91855 0.16159,-0.34325 0.227386,0.569948 -0.01797,1.337913 0.25742,1.824347 0.0012,-0.692211 0.05806,-1.416371 -0.189904,-2.077844 -0.458804,-0.599002 -0.240949,-1.419992 -0.418703,-2.113502 -0.04154,-0.489366 -0.225946,-1.390147 -0.0944,-1.632576 0.203115,0.300793 -0.07531,1.389873 0.407343,1.172402 0.039,-0.284042 -0.428611,-0.864333 0.04034,-0.365535 0.225503,0.08653 0.511448,-0.608735 0.516134,0.01514 -0.04875,0.263178 0.17518,0.698983 0.15366,0.166611 -0.06443,-0.27343 -0.03805,-1.333612 0.09312,-0.498903 0.07231,0.52984 0.0439,1.066547 0.09464,1.598073 0.178351,-0.655609 0.133235,-1.348367 0.31034,-2.004212 0.244562,0.787176 -1.37e-4,1.602421 -0.04363,2.391312 0.185563,-0.543128 0.309578,-1.134115 0.441283,-1.702868 0.0098,-0.307238 0.259449,-0.666611 0.150449,-0.131683 -0.165447,0.402396 -0.160803,1.771865 0.477067,1.133933 0.239351,-0.238912 0.313043,-1.169899 0.401389,-1.064062 -0.09761,0.839298 -0.433721,1.640697 -0.544,2.471436 0.302728,-0.477528 0.339761,-1.075742 0.513996,-1.608543 0.06738,-0.287912 0.386767,-1.368689 0.237248,-0.552679 -0.0463,0.247333 -0.357707,1.110608 -0.09469,1.018927 0.385434,-0.584485 0.468331,-1.281222 0.249334,-1.933786 0.12509,-0.144903 0.253129,0.790263 0.430834,0.213417 0.122901,-0.522221 -0.120917,0.747651 0.380322,0.344218 0.161048,-0.277759 -0.348693,-1.350362 0.08331,-0.638749 0.386564,0.797621 0.518963,-0.552025 0.928536,-0.673684 0.0692,0.390705 -0.892766,1.024676 -0.461842,1.607804 0.383399,0.791655 0.540521,1.668786 0.8815,2.476923 0.08858,0.352714 2.84e-4,1.076874 0.372356,1.147377 -0.200652,-1.163816 -0.636011,-2.279357 -0.855249,-3.442052 -0.153007,-0.273518 -0.240865,-1.180815 -0.03755,-0.426802 0.04623,0.242892 0.318084,0.976086 0.218106,0.315697 -0.160173,-0.344601 0.204768,-0.488373 0.124952,-0.04232 -0.06985,0.538711 0.864131,0.968042 0.685823,0.161272 -0.07101,-0.255152 -0.235647,-1.416759 -0.0053,-0.739474 0.113192,0.334432 0.30265,1.218728 0.448602,1.179196 -0.01461,-0.474735 -0.338256,-1.175038 -0.139209,-1.511234 0.321386,0.114584 0.191596,1.021364 0.407258,0.871093 0.05,-0.389523 -0.210503,-0.89107 0.06816,-1.206377 0.0568,0.616874 -0.0147,1.70633 0.704456,1.860018 0.329453,-0.166169 0.528926,-0.563765 -0.02842,-0.441551 -0.498212,0.173582 -0.52416,-1.189514 -0.225675,-0.341053 0.545759,0.464828 0.701608,-1.495133 0.928131,-0.670343 -0.03256,0.718862 -0.185179,1.430042 -0.266342,2.146495 -0.02169,0.303021 -0.193253,1.035293 -0.120624,1.073278 0.254157,-0.622168 0.254731,-1.314116 0.421801,-1.959556 -0.03223,-0.250878 0.106716,-1.28851 0.162446,-0.598594 -0.03368,0.280881 0.07442,0.74609 0.178661,0.187625 -0.01189,-0.335798 0.407815,-1.179068 0.202668,-0.375392 -0.196186,0.252086 -0.09101,1.271589 0.231403,0.654813 0.14613,-0.389253 -0.0472,-1.208878 0.279106,-1.33969 0.06389,0.275907 0.0954,1.281537 0.396223,0.55667 0.363152,-0.202133 -0.09168,0.680987 -0.117875,0.890426 0.002,0.769909 0.299771,-0.297698 0.405787,-0.535185 0.09501,-0.333672 0.384408,-0.519146 0.192218,-0.04719 -0.347871,1.620689 -1.110542,3.100513 -1.653206,4.655837 -0.115543,0.687185 0.856624,1.037362 1.082061,1.662918 0.33888,0.699336 0.799273,1.375216 0.824335,2.176737 -0.346774,-1.118269 -0.893732,-2.195935 -1.65709,-3.085363 -0.225924,-0.286507 -0.673097,-0.306209 -0.27253,0.0825 0.680161,0.85133 1.178341,1.832733 1.575768,2.843216 -0.267915,0.499214 -0.43851,-0.595797 -0.601422,-0.793711 -0.38371,-0.738703 -0.825394,-1.446952 -1.314555,-2.120347 -0.64943,-0.06595 0.178107,0.764692 0.244496,1.041555 0.443504,0.719178 0.759825,1.506759 1.069978,2.288021 0.220468,0.541331 -0.580091,0.809015 -0.60868,0.150468 -0.42471,-1.01724 -0.83335,-2.044006 -1.333344,-3.027261 0.0206,0.623751 0.343253,1.192242 0.437387,1.806778 0.09074,0.657488 0.492176,1.304455 0.47591,1.934713 -0.531775,0.620098 -1.084631,-0.109913 -1.066151,-0.713147 -0.09708,-0.281079 -0.161773,-1.211511 -0.291232,-1.065862 -0.04775,0.63188 0.222738,1.249437 0.203566,1.870029 -0.116989,0.403988 -0.659835,0.02059 -0.631991,0.456186 -0.232765,-0.541997 -0.209357,-1.170311 -0.396366,-1.735435 -0.167875,-0.662429 -0.384162,-1.312238 -0.639156,-1.946124 0.162733,-0.467975 -0.86552,-0.675456 -0.428654,-0.11444 0.404872,1.235242 0.63095,2.516236 0.842475,3.795559 0.164859,0.381547 -0.182399,0.436872 -0.152678,0.01375 -0.189584,-1.324696 -0.52824,-2.622269 -0.900969,-3.904238 -0.400866,-0.654556 -0.04215,0.713174 -0.05313,0.995222 0.144965,0.996715 0.226109,2.001783 0.445953,2.984509 0.140246,0.407371 -0.235241,0.847513 -0.342596,0.243579 -0.02521,-0.668051 -0.14646,-1.318474 -0.168764,-1.987508 -0.05282,-0.865557 -0.114156,-1.732745 -0.262985,-2.588016 -0.390075,0.426725 0.03871,1.194932 -0.106271,1.756332 -0.0216,0.992957 0.02271,1.984137 0.146889,2.96899 0.06876,0.763878 -0.552508,-0.02248 -0.379719,-0.40059 -0.07116,-1.118811 -0.06754,-2.240452 -0.04275,-3.361784 0.01361,-0.343748 -0.01767,-1.316917 -0.112322,-0.489465 -0.0513,1.47166 -0.115743,2.948902 -0.162175,4.417988 -0.188638,0.551558 -0.717115,0.09354 -0.486906,-0.313016 0.07481,-1.401293 0.08168,-2.811067 0.302135,-4.199156 -0.0068,-0.664218 -0.216269,0.466683 -0.228014,0.724926 -0.122492,1.29025 -0.285685,2.577568 -0.331509,3.874199 -0.0058,0.258413 -0.192687,0.246626 -0.390321,0.190288 z M 47.967725,20.676518 C 48.1808,20.24698 48.4293,19.236566 47.862223,19.106569 c -0.148426,0.409698 -0.100972,1.261344 0.105502,1.569949 z m 4.061854,-0.299749 c -0.09506,-0.367752 0.309915,-1.389668 -0.005,-1.33859 -0.463644,-0.245508 -0.269335,0.848482 -0.210671,1.1782 0.06374,0.221989 0.245483,0.756087 0.21568,0.16039 z m -2.355152,-1.43674 c -0.143755,-0.26167 -0.330823,0.160449 0,0 z m 0.794673,0.02047 c -0.138321,-0.289348 -0.541554,0.162098 0,0 z m -2.920014,-0.239356 c 0.190156,-0.513377 0.826761,-1.110546 0.827507,-1.520709 -0.520389,0.281019 -0.5614,1.016649 -0.891628,1.479055 -0.06521,0.119046 -0.07793,0.245843 0.06412,0.04165 z m -0.497484,-0.01148 c -0.01665,-0.45978 0.676161,-0.828401 0.485137,-1.175922 -0.310804,0.234387 -0.639661,1.068694 -0.485165,1.175878 z m 1.074758,0.03122 c 0.480268,-0.102431 0.125119,-0.663814 -0.04937,-0.129724 -0.06908,0.06457 -0.091,0.227745 0.04937,0.129724 z m 4.022534,-0.05728 c -0.318192,-0.725004 -0.62798,-1.455206 -1.003839,-2.152881 -0.168805,0.529593 0.493994,0.997123 0.5572,1.549506 0.105202,0.187607 0.16367,0.642774 0.446639,0.603375 z m 0.334602,0.01745 c -0.08539,-0.336238 -0.276108,-1.207091 -0.57681,-1.040772 0.205832,0.334943 0.231025,0.807691 0.57681,1.040772 z m -0.748337,-0.09128 c 0.08788,-0.36382 -0.614796,-0.995782 -0.434331,-0.321436 0.118867,0.128051 0.217362,0.372832 0.434331,0.321436 z m 1.406842,7.36e-4 c -0.02365,-0.238017 -0.152455,-1.221354 -0.340262,-0.868538 0.03888,0.291645 -0.04291,0.78857 0.340262,0.868538 z M 52.729709,18.4897 c 0.05553,-0.32211 -0.380264,-0.939557 -0.185288,-0.264723 0.03163,0.06144 0.07549,0.395205 0.185288,0.264723 z m -3.850985,-0.149588 c 0.294204,-0.461592 1.251554,-1.052745 0.786942,-1.618117 -0.460993,0.360658 0.09187,-0.644541 -0.290274,-0.298896 -0.357302,0.259631 -0.275444,0.939204 0.22016,0.574565 0.440171,0.402755 -0.898767,0.692601 -0.577087,-0.0095 -0.389026,0.04272 -0.322013,0.929026 0.245487,0.57225 0.06414,0.506805 -0.624744,0.362105 -0.713163,-6.9e-5 -0.261046,0.325753 0.162111,0.528115 0.31701,0.532252 -0.09588,0.138633 -0.287705,0.468751 0.01093,0.247472 z m 4.996389,-0.0452 c 0.154831,-0.209659 0.470321,-1.326944 0.04538,-0.736479 0.01416,0.158969 -0.381939,0.769782 -0.04538,0.736479 z m -0.447615,-0.232093 c 0.0059,-0.561247 0.232702,-1.478526 0.06812,-1.819111 -0.427178,0.425809 -0.102788,1.123074 -0.161294,1.667477 0.01319,0.01276 0.06056,0.427939 0.09318,0.151634 z m -2.433623,-0.05205 c -0.131375,-0.316931 -0.837395,-0.454794 -0.298686,-0.06652 0.07112,0.03866 0.261741,0.223444 0.298686,0.06652 z m -4.181059,-0.0841 c 0.106375,-0.376313 0.01346,-1.252857 -0.115358,-1.308651 -0.01039,0.373744 -0.116096,1.180195 0.115358,1.308651 z m -0.944864,-0.06891 c -0.09432,-0.318301 -0.109106,0.247207 0,0 z m 5.219803,-0.106999 c -0.02365,-0.370839 -0.772927,-0.316499 -0.851639,-0.672499 0.27678,0.191157 0.974852,0.152073 0.537924,-0.201192 -0.05593,0.289867 -0.819486,-0.408787 -0.683768,0.231423 0.148257,0.388199 0.599596,0.626739 0.997483,0.642268 z m -5.334554,-0.168066 c 0.184839,-0.363534 -0.352611,0.136071 0,0 z m 2.8255,-0.237851 c 0.461159,-0.609309 0.933258,-1.210315 1.388676,-1.823971 -0.17346,-0.77403 -0.57537,0.558259 -0.811413,0.766842 -0.169918,0.317627 -0.694908,0.862461 -0.577263,1.057129 z m 4.520579,-0.274976 c 0.193981,-0.249165 -0.282773,-0.91402 -0.217425,-0.315517 -0.08059,0.22317 0.251339,1.227392 0.217425,0.315517 z m -5.367021,0.251705 c 0.116654,-0.192498 0.41955,-0.993739 0.200568,-0.83704 -0.03121,0.254653 -0.37886,0.62195 -0.200568,0.83704 z m 4.961678,0.01678 c 0.165551,-0.410706 -0.364535,0.13002 0,0 z m -7.247958,-0.0052 c 0.134201,-0.361265 -0.668765,-0.54001 -0.163058,-0.773725 -0.177407,-0.559972 -0.587671,-0.272466 -0.294376,0.176795 0.049,0.246567 0.123753,0.633085 0.457434,0.59693 z m 6.784898,-0.03534 c -0.02623,-0.389305 -0.579292,-0.416454 -0.226304,-0.03486 0.06002,0.04527 0.156392,0.0982 0.226304,0.03486 z m -4.883899,-0.01789 c 0.499169,-0.26458 -0.598901,-0.234151 -0.04229,0.01511 l 0.03335,-0.01185 0.0089,-0.0032 z m 0.697134,-0.0215 c 0.282467,-0.214155 0.120236,-0.751114 -0.0091,-0.203913 0.0062,7.99e-4 -0.108455,0.315731 0.0091,0.203913 z m 4.402419,-0.330589 c 0.313184,-0.33872 -0.04539,-0.41055 -0.262137,-0.307 -0.185668,-0.254589 -0.602539,-0.385535 -0.340941,0.04501 0.105145,0.135136 0.460159,0.576031 0.603078,0.261993 z m 1.723731,0.08983 c 0.237983,-0.24298 -0.388077,0.04192 0,0 z m -8.590553,-0.02341 c 0.507782,-0.778069 -0.732862,-0.05576 0,0 z m 8.255988,-0.0099 c 0.08409,-0.313986 -0.194262,-0.613817 -0.08644,-0.129154 1.69e-4,0.03296 0.0093,0.207538 0.08644,0.129154 z m -6.603956,-0.09638 c 0.322375,-0.194254 -0.214982,-0.916262 -0.163577,-0.292735 -0.02564,0.120114 -0.06591,0.470511 0.163577,0.292735 z m 3.29554,-0.211878 c -0.264506,-0.430656 0.12296,-0.270294 0.132496,-0.306642 -0.273705,-0.361368 -0.771308,-1.117371 -0.932207,-0.290096 -0.19224,0.3179 0.116396,0.531241 0.131353,0.07244 0.226952,-0.600816 -0.04775,0.656903 0.4304,0.155472 -0.07186,0.08794 -0.0048,0.639735 0.237958,0.368828 z m -2.925564,-0.01605 c 0.705627,-0.58126 -0.907955,-0.155926 0,0 z m 6.478905,0.0037 c 0.149933,-0.266957 -0.187311,-1.082896 -0.234568,-0.377223 -0.03121,0.135967 0.03004,0.466128 0.234568,0.377223 z m -5.71929,-0.254385 c -0.08612,-0.673499 -0.201517,0.669465 0,0 z m 6.06721,0.09099 c 0.555113,-0.293831 -0.600057,-0.319533 -0.138252,0.06092 l 0.04702,-0.01774 z m -5.781941,-0.0052 c 0.512606,-0.389509 -0.508351,-0.548219 -0.08271,0.02406 z m 3.62314,-0.139789 c 0.302037,-0.159425 0.192102,-0.741138 -0.07975,-0.297937 -0.254589,-0.137324 -0.706353,-0.80138 -0.501074,-0.0857 0.09185,0.163712 0.36297,0.57679 0.580824,0.383642 z m -6.835519,-0.0868 c 0.532323,-0.443442 -0.529449,-0.357328 -0.208662,0.01997 0.05769,0.04709 0.178262,0.0722 0.208662,-0.01997 z m 3.65777,-0.04837 c 0.13187,-0.434967 0.968368,-1.28288 0.541932,-1.468961 -0.234879,0.473073 -0.458029,1.144206 -0.598173,1.544065 l 0.05624,-0.0751 z m 1.865007,-0.03077 c 0.34212,-0.155244 0.09749,-0.641094 -0.116825,-0.235237 -0.199351,-0.03637 -0.613293,-0.332752 -0.359319,0.07322 0.114976,0.07558 0.359296,0.398183 0.476144,0.162017 z m 2.070649,0.07984 c 0.181313,-0.587166 -0.673821,-0.192107 0,0 z m 1.880695,-0.0059 c 0.193872,-0.235221 0.301693,-1.284759 0.08068,-0.500364 -0.0075,0.141969 -0.229391,0.400714 -0.08068,0.500364 z m -7.419448,-0.06972 c 0.334769,-0.254818 -0.299757,-1.074402 -0.252351,-0.333635 -0.0339,0.148352 0.01782,0.579668 0.252351,0.333635 z m -1.011519,-0.0074 c 0.327966,-0.143686 0.256728,-0.707426 -0.02756,-0.248604 -0.348482,-0.05772 -0.278612,0.390853 0.02756,0.248604 z m -1.409191,-0.107323 c 0.270582,-0.380751 -0.54659,-0.685696 -0.199012,-0.110864 0.02211,0.08067 0.11377,0.148751 0.199012,0.110864 z m 9.292295,-0.0772 c -0.01291,-0.329632 -0.288303,-1.06646 -0.380793,-0.320451 -0.04,0.193834 0.180222,0.470897 0.380793,0.320451 z M 47.885653,15.88855 c 0.531438,-0.526451 -0.832312,-0.159446 -0.0598,0.05765 z m 5.387553,0.06412 c 0.226083,-0.363816 -0.809153,-0.939352 -0.394917,-0.249681 0.09656,0.131786 0.259797,0.172885 0.394917,0.249681 z m 1.365004,-0.06302 c 0.613593,-0.197976 -0.216474,-0.806937 -0.208477,-0.244633 -0.0011,0.117396 0.01736,0.433885 0.208477,0.244633 z m -8.383284,-0.06942 c 0.0664,-0.596566 -0.412814,-0.269943 -0.06429,0.06993 l 0.03059,-0.01992 z m 2.472068,0.05367 c 0.281451,-0.166092 -0.08645,-0.775705 -0.109054,-0.235945 -0.06853,0.127133 -0.12628,0.35895 0.109054,0.235945 z m 0.308113,-0.115804 c 0.150288,-0.607397 -0.472852,-0.08851 -0.04412,0.02555 z m 3.061171,0.01767 c 0.290538,-0.312612 0.233512,-0.715639 -0.194328,-0.563749 -0.207253,-0.299716 -0.569628,-0.380602 -0.318865,0.06925 0.131809,0.1955 0.292099,0.397149 0.513193,0.494499 z m -6.865416,-0.07486 c 0.301511,-0.384169 -0.08053,-0.46681 -0.198744,-0.385145 0.03374,-0.44958 -0.603847,-0.466348 -0.279238,0.006 0.07913,0.186738 0.26295,0.377772 0.477982,0.379108 z m 5.489369,-0.255114 c 0.225771,-0.234628 -0.0106,-0.717638 -0.136862,-0.232601 -0.543333,0.105104 0.05356,0.773152 0.136862,0.232601 z m -4.294036,0.08798 c 0.06392,-0.438199 0.587949,-0.108782 0.3677,-0.599357 -0.173429,-0.03863 -1.041258,0.534975 -0.3677,0.599357 z m 1.206965,-0.0066 c 0.331712,-0.253683 -0.272448,-0.965592 -0.260644,-0.284055 -0.03212,0.136086 0.105929,0.342156 0.260644,0.284055 z m 5.674655,-0.04012 c 0.554113,-0.361808 -0.609375,-0.837792 -0.52582,-0.9361 0.04625,0.328794 0.175818,0.824291 0.52582,0.9361 z m 1.202312,-0.188393 c 0.372291,-0.322119 -0.533758,-1.03596 -0.328546,-0.296505 0.05549,0.124727 0.12395,0.509035 0.328546,0.296505 z m -8.362347,-0.07031 c 0.465171,-0.249484 -0.421613,-1.105197 -0.120555,-0.287074 0.0162,0.06468 -0.02722,0.446664 0.120555,0.287074 z m 1.917424,-0.07119 c 0.502585,-0.570464 -0.941574,-0.223963 -0.121514,0.0947 l 0.06977,-0.04622 z m 2.191393,0.06317 c 0.142243,-0.450415 -0.509015,-0.269047 0,0 z m -1.16364,-0.07355 c 0.340394,-0.239203 -0.161244,-0.914016 -0.187406,-0.261522 -0.06513,0.147063 -0.05083,0.488217 0.187406,0.261522 z m 5.821982,-0.125146 c 0.462627,-0.41037 -0.767395,-0.112721 -0.119149,0.08159 0.03292,0.0024 0.09072,-0.122849 0.119149,-0.08159 z m -9.782919,-0.08158 c 0.0074,-0.407857 -0.89375,-0.569981 -0.343619,-0.100425 0.07986,0.05047 0.276557,0.278724 0.343619,0.100425 z m 6.823858,-0.01318 c 0.226925,-0.196598 0.2065,-0.851588 -0.134183,-0.397659 -0.247429,-0.120274 -0.545232,-0.321443 -0.326251,0.109725 0.09443,0.127305 0.27596,0.400091 0.460434,0.287934 z m -1.557777,-0.01988 c 0.278546,-0.14804 0.262013,-1.122853 -0.06993,-0.523276 -0.288341,0.07246 -0.296044,0.61792 0.06993,0.523276 z m -2.532229,-0.198486 c 0.137744,-0.350834 -0.342756,-0.696936 -0.26673,-0.159063 -0.08558,0.196593 0.134781,0.36825 0.26673,0.159063 z m -1.405002,0.0098 c 0.103793,-0.149195 0.618502,-0.600401 0.232247,-0.52907 -0.293066,0.373894 -0.557809,0.203023 -0.62218,-0.185771 -0.416662,-0.07918 0.105276,0.969127 0.389939,0.714837 z m 8.219951,-0.0086 c 0.269474,-0.320738 -0.471511,-1.029855 -0.328627,-0.314869 0.05062,0.112033 0.147972,0.538998 0.328627,0.314869 z m -1.247205,-0.05043 c 0.541165,-0.375736 -0.355442,-0.145382 -0.397531,-0.440541 -0.129142,-0.500208 -0.461084,-0.220456 -0.199153,0.121155 0.109859,0.183012 0.369847,0.561926 0.596684,0.319386 z M 49.43668,14.420271 c 0.444948,-0.132025 -0.164573,-1.055874 -0.175914,-0.33166 -0.04257,0.13584 -0.09913,0.635412 0.175914,0.33166 z m 0.592248,0.02503 c 0.03622,-0.459093 -0.330049,0.08887 3.47e-4,-5.4e-5 z m 4.97727,-0.0427 c 0.282513,-0.2463 0.02856,-0.809922 -0.173382,-0.305922 -0.135796,0.118118 -0.02697,0.59919 0.173382,0.305922 z m -4.798706,-0.377065 c 0.241126,-0.272996 -0.05906,-0.757956 -0.142531,-0.22025 -0.206898,0.127335 0.03026,0.710663 0.142531,0.22025 z m -3.833066,0.100844 c 0.236007,-0.190354 0.249032,-0.678425 -0.08012,-0.297862 -0.363749,-0.09305 -0.125665,0.434886 0.08012,0.297862 z m 3.424161,-0.299102 c 0.375077,-0.351926 -0.486125,-0.684803 -0.174402,-0.142447 0.01692,0.05714 0.08639,0.246764 0.174402,0.142447 z m -4.997237,3.017229 c -0.342613,-0.894406 -0.578233,-1.829986 -0.787413,-2.763371 0.09339,-0.405849 0.24328,0.56382 0.310162,0.727975 0.189549,0.713797 0.387356,1.426089 0.536074,2.149864 -0.01959,-0.03815 -0.03931,-0.07632 -0.05882,-0.114468 z m 3.311022,-2.791378 c 0.0053,-0.240509 0.220297,-1.220357 0.196882,-0.50723 -0.0342,0.173037 -0.01637,0.409878 -0.196882,0.50723 z m 3.379665,-0.185853 c 0.0146,-0.339568 -0.379424,-1.173752 -0.09804,-1.207467 0.05293,0.39153 0.301212,0.828148 0.09804,1.207467 z m 1.770818,-0.636737 c -0.01759,-0.219482 0.08722,-1.32677 0.185135,-0.620354 -0.01511,0.205932 0.01719,0.492827 -0.185135,0.620354 z m -7.110996,-0.370918 c -0.138425,-0.365658 0.144212,-0.888694 0.131089,-0.223895 0.0033,0.05662 -0.05058,0.49018 -0.131089,0.223895 z" + id="path30945" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="39.660629" + y="30.08935" + id="text6637"><tspan + sodipodi:role="line" + id="tspan6635" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="39.660629" + y="30.08935">FarmPlot</tspan></text> + <path + id="polygon11601" + style="fill:#000000;fill-rule:evenodd;stroke-width:0.0259458" + d="m 78.956334,14.294564 c -0.042,0.001 -0.07991,0.01743 -0.100668,0.05919 -0.04594,0.237813 -0.01273,0.525557 -0.03401,0.784055 -0.01814,0.218048 -0.01089,0.408075 -0.0091,0.657569 0.0018,0.208163 -0.0031,0.428468 -0.0073,0.612969 -0.0037,0.193711 0.01039,0.385113 0.0012,0.58147 0.03918,0.09756 0.01015,0.235329 0.0096,0.36402 -0.125834,-0.03762 -0.224688,0.0099 -0.345337,0.01037 -0.113903,5.19e-4 -0.230918,-0.01531 -0.344562,-0.02101 -0.0599,-0.0031 -0.126615,0.01972 -0.177727,-0.01375 -0.05763,0.02854 -0.144776,0.001 -0.20419,-0.0023 -0.04022,-0.0026 -0.07784,0.0093 -0.115981,0.008 -0.130244,-0.0047 -0.24363,-0.03555 -0.361684,-0.04151 -0.02466,-0.001 -0.05031,0.0109 -0.07706,0.0091 -0.210419,-0.01583 -0.439806,-0.0384 -0.63803,-0.02128 -0.107544,-0.04489 -0.258137,-0.0073 -0.421621,-0.0047 -0.126252,0.0018 -0.279047,-0.03892 -0.420009,-0.03087 -0.08979,0.0052 -0.208575,0.01764 -0.261065,-0.0179 -0.08931,0.01998 -0.176798,0.04852 -0.265142,0.07784 -0.100127,0.03347 -0.211692,0.05838 -0.286205,0.121685 -0.03432,0.02932 -0.08129,0.0947 -0.121633,0.14841 -0.06777,0.09029 -0.108639,0.173837 -0.127291,0.281252 v 7.99e-4 c -0.11811,0.271916 -0.117772,0.556022 -0.171091,0.854658 -0.03081,0.172539 -0.07114,0.343003 -0.104586,0.500234 0.01316,0.08692 -0.02638,0.205751 -0.03893,0.317058 -0.0095,0.08484 -0.0012,0.136475 -0.03973,0.171242 0.0093,0.140367 -0.05061,0.305122 -0.06325,0.437705 -0.01599,0.168129 -0.03801,0.312387 -0.05271,0.476624 0.02602,0.01297 0.05517,0.02309 0.08837,0.02932 -0.0025,0.209901 0.0297,0.384775 0.136215,0.542525 -0.09862,0.186031 -0.143146,0.428625 -0.162973,0.663953 -0.0082,0.09885 0.01125,0.236625 0.03001,0.33963 0.04194,0.230917 0.137919,0.427067 0.274066,0.61232 0.0824,0.111826 0.17384,0.193555 0.308911,0.243112 0.01328,0.10015 0.04692,0.18162 0.06486,0.27736 0.195242,0.354419 0.392304,0.789789 0.814853,0.935605 0.0068,0.04074 0.05412,0.04462 0.0673,0.07939 0.133958,0.05241 0.282134,0.07057 0.463778,0.04644 0.248618,0.03061 0.456467,-0.04489 0.665644,-0.02932 0.128429,0.0096 0.183434,-0.02179 0.278137,-0.07057 0.06201,-0.03165 0.09626,-0.06331 0.144259,-0.09003 0.03063,-0.01713 0.06927,-0.02128 0.0973,-0.04048 0.05191,-0.03529 0.08743,-0.09289 0.158268,-0.107674 0.04071,-0.09341 0.141406,-0.122205 0.169425,-0.229621 0.03241,-0.0023 0.0254,-0.04774 0.05344,-0.05501 -0.0062,-0.0205 0,-0.01453 0.0018,-0.03814 0.08588,-0.111826 0.142703,-0.222096 0.182401,-0.375435 0.08951,-0.188626 0.158785,-0.388927 0.128946,-0.620364 -0.01611,-0.125577 -0.03659,-0.261014 -0.05424,-0.379327 0.367649,-0.02387 0.698718,-0.194852 1.077529,-0.252971 0.166571,-0.02569 0.310572,-0.10041 0.472733,-0.133102 0.150999,-0.03036 0.293961,-0.07369 0.444966,-0.108453 0.01113,-0.01038 0.02232,-0.02076 0.03346,-0.03087 0.04465,0.06824 0.11961,0.113643 0.199263,0.117534 0.125834,-0.02724 0.176946,-0.14296 0.183434,-0.248041 l 0.153078,7.99e-4 c 0.0049,0.03036 0.01451,0.05604 0.01556,0.09003 0.06382,0.01427 0.08432,0.01998 0.145814,0.0057 0.05812,-0.04904 0.03788,-0.121687 0.04151,-0.215091 0.02362,-0.01582 0.05344,-0.03425 0.08328,-0.0088 -0.06979,0.09859 -0.04772,0.21535 -0.01451,0.330808 0.02903,0.101189 0.04797,0.146594 0.08692,0.227804 0.04102,0.0864 0.0851,0.166313 0.143478,0.216388 0.02909,0.0041 0.05369,0.01245 0.08899,0.01064 0.01765,0.07369 0.04877,0.134659 0.06746,0.207566 0.144517,0.130507 0.24882,0.298117 0.423177,0.401382 0.02675,-0.0041 0.04176,-0.02127 0.07135,-0.02283 0.08796,0.117534 0.184473,0.226766 0.386074,0.240258 0.151005,0.143999 0.396191,0.147632 0.62503,0.154637 0.128176,0.196669 0.278659,0.373619 0.483113,0.500234 0.02675,-0.01816 0.05006,-0.0179 0.07783,-0.02257 0.06824,0.115978 0.132845,0.222355 0.262055,0.292668 0.02466,0.0049 0.03764,-0.0039 0.0519,-0.01064 0.09937,0.08147 0.219239,0.147371 0.33003,0.186549 0.04643,0.0166 0.09366,0.03632 0.138552,0.05111 0.05682,0.01894 0.109751,0.0205 0.177468,0.03321 0.03505,0.0067 0.06616,0.0288 0.100668,0.03581 0.07732,0.01556 0.171239,0.03036 0.247264,0.02984 0.165273,-4.9e-4 0.331069,0.01453 0.498673,-0.01038 0.05037,-0.0075 0.09704,-0.04125 0.149192,-0.05111 0.04336,-0.0083 0.09963,0.0026 0.153342,8e-4 0.07602,-0.0028 0.137248,-0.02854 0.198483,-0.01712 0.100926,-0.02257 0.184473,-0.02932 0.290332,-0.05111 0.04698,-0.0467 0.103005,-0.08303 0.133884,-0.147373 0.06434,-0.02595 0.09885,-0.08432 0.15801,-0.115198 0.05166,-0.02699 0.115194,-0.05267 0.175906,-0.0755 0.05473,-0.0205 0.114684,-0.01609 0.173582,-0.03061 0.05553,-0.01401 0.104038,-0.05007 0.150741,-0.08925 0.125317,-0.10508 0.259201,-0.228323 0.223913,-0.437186 0.03167,0.0036 0.02903,-0.02984 0.03967,-0.0493 0.05037,-0.06642 0.118312,-0.04541 0.194596,-0.06175 0.07472,-0.01582 0.163717,-0.134399 0.200038,-0.202637 0.06772,-0.126096 0.113645,-0.313684 0.09756,-0.480775 -0.0532,-0.03321 -0.0659,-0.096 0,-0.134658 0.04723,0.01453 0.122722,-0.02179 0.161903,-0.05682 0.03918,-0.07239 0.04151,-0.147632 0.05449,-0.221318 0.0055,-0.03269 0.01919,-0.0602 0.02257,-0.08821 0.0068,-0.05319 -0.0091,-0.09392 -0.01298,-0.15334 -0.0049,-0.07628 0.01531,-0.180842 -0.02103,-0.250636 -0.01451,-0.02776 -0.05965,-0.04203 -0.0607,-0.07291 -0.0018,-0.05916 0.09081,-0.09003 0.107673,-0.123242 0.03764,-0.277879 -0.03555,-0.549531 -0.158785,-0.747497 -0.02441,-0.0041 -0.03241,-0.02387 -0.05037,-0.03399 0.01531,-0.02802 0.02515,-0.06201 0.03659,-0.09418 -0.07161,-0.287479 -0.197967,-0.525142 -0.458201,-0.639563 -0.01113,-0.02439 -0.0049,-0.06201 -0.0096,-0.07706 0.06772,0.01868 0.105342,-0.04203 0.149972,-0.06979 0.027,-0.04852 0.02878,-0.12454 0.05836,-0.170204 0,-0.08432 0.04102,-0.160864 0.02983,-0.241815 -0.01168,-0.08484 -0.06435,-0.153339 -0.07291,-0.232474 -0.128435,-0.144518 -0.292927,-0.24882 -0.431221,-0.369727 0.07239,0.0023 0.102747,0.0109 0.171762,0.02024 -0.01113,0.02828 -0.04668,0.03503 -0.02177,0.06876 0.03997,-0.0031 0.05498,-0.03243 0.07213,-0.06071 0.05756,0.0018 0.147629,0.04566 0.154118,-0.0122 l 0.0049,-0.01609 c 4.85e-4,0.0031 0.0012,0.0065 0.0018,0.0096 0.06331,-0.125059 0.01765,-0.26309 -0.03505,-0.365576 -0.04803,-0.0192 -0.08069,-0.05267 -0.124801,-0.0755 0.01476,-0.03114 -0.0012,-0.08536 0.03167,-0.126356 -0.0037,0.03061 -0.01402,0.07706 6.15e-4,0.11494 0.04022,-0.04125 0.02878,-0.14841 0.0607,-0.214831 -0.02048,-0.03061 -0.0088,-0.145556 0.04305,-0.119091 -0.0043,0.048 -0.02515,0.110789 -0.0187,0.152302 -0.0174,0.06564 -0.07187,0.177469 -0.01611,0.216647 0.03788,-0.110788 0.06486,-0.270096 0.08095,-0.399046 -0.02958,-0.02361 -0.06175,-0.01635 -0.08822,-0.02257 0.01814,-0.106897 0.05215,-0.20108 0.02983,-0.254788 -0.168133,0.01194 -0.183956,0.207826 -0.20264,0.400603 0.01943,0.02101 0.04047,0.04021 0.06798,0.05345 -0.0031,0.05552 -0.01168,0.124539 -0.02749,0.197187 -0.285922,-0.08043 -0.586635,-0.02361 -0.892539,-0.03892 -0.02411,0.0034 0.0037,0.0218 -0.02048,0.02517 -0.202118,-0.096 -0.485445,-0.129209 -0.686781,-0.208344 0.0055,0.01946 -0.01451,0.01037 -0.02595,0.01116 -0.216385,-0.04125 -0.436405,-0.07602 -0.64942,-0.05994 -0.0345,0.0026 -0.06798,0.02076 -0.103005,0.02101 -0.0166,2.55e-4 -0.03192,-0.01297 -0.05006,-0.01453 -0.06901,-0.0055 -0.162678,0.01712 -0.243371,0.02101 -0.202376,0.01038 -0.357009,0.04151 -0.511649,0.07888 l -0.0037,-0.135437 0.01943,-0.04722 c 0.03401,-0.0083 0.05732,-0.02828 0.09315,-0.03477 0.02724,0.02335 0.06876,0.02802 0.08355,-0.0088 -0.04699,-0.04489 -0.102488,-0.02465 -0.154898,-0.0091 l 0.0179,-0.04281 -0.03579,0.01946 -0.03401,0.0039 c 0.01089,-0.0088 0.02257,-0.01686 0.03579,-0.02335 -0.01402,-0.0055 -0.02854,-0.0052 -0.04385,-0.001 l 0.06798,-0.02257 c -0.0043,0.0052 -0.0078,0.01064 -0.01039,0.01712 0.184738,-0.0031 0.21042,-0.180064 0.281255,-0.307457 0.0093,-0.153081 -0.141664,-0.243113 -0.253753,-0.323544 -0.133619,-0.03087 -0.240775,-0.08458 -0.368946,-0.04203 0.0062,0.0755 -0.03788,0.231176 -0.05111,0.29189 0.02466,0.136993 0.0062,0.23429 0.04797,0.37284 -0.09938,-0.04774 -0.298634,0.01686 -0.40865,-0.0047 0.0174,-0.05734 0.10041,-0.02724 0.09964,-0.09159 -6.15e-4,-0.06979 -0.129468,-0.07472 -0.182401,-0.0659 0.04932,-0.03114 0.06954,-0.08822 0.107938,-0.129729 0.04828,-0.05215 0.106117,-0.09652 0.153078,-0.152301 0.06539,-0.07784 0.116498,-0.173837 0.184215,-0.254529 0.0345,-0.04151 0.07706,-0.07861 0.113386,-0.122464 0.03579,-0.04333 0.06616,-0.101966 0.102224,-0.136215 0.042,-0.04021 0.114678,-0.04437 0.119868,-0.116003 0.027,0.0033 0.05295,0.0032 0.07706,0.0033 -0.0012,0.0034 -0.0025,0.0076 -0.0018,0.01297 0.03837,0.0357 0.07757,-0.0218 0.08588,-0.06082 0.13985,0.128691 0.276846,0.260495 0.484147,0.327436 0.04569,0.0384 0.11728,0.08847 0.175138,0.08458 0.03192,-0.0023 0.04723,-0.03581 0.07783,-0.02205 0.0337,-0.06383 0.03038,-0.140367 0.01531,-0.216388 -0.07836,-0.150174 -0.181884,-0.290592 -0.294225,-0.434643 -0.01322,-0.01235 -0.04305,-0.0094 -0.03659,-0.03975 -0.0607,-0.01967 -0.09522,-0.06289 -0.122464,-0.113513 -0.01402,-0.0076 -0.03216,-0.01196 -0.04465,-0.02107 -0.05135,-0.04779 -0.09496,-0.10988 -0.145815,-0.159748 -0.09652,-0.09475 -0.227025,-0.147216 -0.308234,-0.256188 -0.02749,-0.0035 -0.02934,-0.0021 -0.04465,-0.0081 -0.06383,-0.0831 -0.186552,-0.135152 -0.253752,-0.196228 -0.04852,-0.0039 -0.09366,-0.0042 -0.127912,0.0073 -0.01402,0.02935 -0.04071,0.04432 -0.04803,0.08108 0.0061,0.0088 0.0166,0.0129 0.0179,0.02595 -0.04047,0.245654 0.197966,0.41386 0.287737,0.580536 0.03788,0.0245 0.06564,0.05918 0.1056,0.08188 0.0065,0.02439 -0.04409,0.04436 -0.0091,0.05677 0.0031,0.0014 0.0055,0.0014 0.0083,0.0016 -0.0055,0.0274 -0.0049,0.05599 -0.0049,0.07296 -0.0098,0.0102 -0.01765,0.02284 -0.02103,0.03975 0.0018,0.01266 0.03475,0.02901 0.02411,0.03323 -0.131025,-0.04815 -0.176946,-0.213248 -0.338074,-0.155675 -0.0049,0.105132 0.178249,0.142209 0.167874,0.250532 -0.0025,0.02711 -0.05578,0.07755 -0.08122,0.104536 -0.09963,0.106897 -0.195887,0.229101 -0.294218,0.306419 -0.142445,0.205231 -0.315762,0.376992 -0.459763,0.580667 -0.01193,-0.0021 -0.01378,0.007 -0.02515,0.0057 -0.03838,0.09496 -0.153601,0.13881 -0.169425,0.241555 l -0.01377,0.01712 c -0.0018,-0.0039 -0.0049,-0.0075 -0.0065,-0.01141 -0.01144,-0.02361 -0.02103,-0.04878 -0.03087,-0.07369 l 0.0098,-0.03503 v -0.0023 c 0.0075,0.0086 0.01716,0.01609 0.03087,0.0218 -0.0012,-0.04489 -0.02804,-0.102486 0.01869,-0.139329 0.06101,-0.0083 0.09315,-0.05501 0.16865,-0.06331 -0.007,-0.0093 -0.01427,-0.01479 -0.02208,-0.01868 l 0.0179,-0.02595 c 0.0075,-0.03295 -0.0065,-0.09496 -0.01943,-0.12895 0.04434,-0.07291 0.107931,-0.155675 0.10041,-0.26335 -0.02749,-0.01556 -0.03635,-0.04852 -0.04772,-0.07887 -0.09237,-0.129729 -0.285142,-0.174615 -0.497899,-0.148929 -0.06694,0.06798 -0.09989,0.249599 -0.0519,0.346117 v 0.05994 c -0.04932,-0.04021 -0.107415,-0.07472 -0.139327,-0.127394 -0.365059,-0.08744 -0.724664,-0.08199 -1.095431,-0.07291 -0.03296,-0.184994 -0.277098,-0.09678 -0.430698,-0.08277 -0.01193,0.02465 -0.02958,0.04385 -0.04127,0.06902 -0.415133,-0.02258 -0.920817,-0.0122 -1.41171,-0.0031 -0.01322,-0.523767 -0.0012,-1.010017 0.0068,-1.475769 0.0083,-0.497848 -0.03998,-1.005554 0.02023,-1.499977 -0.04047,-0.02845 -0.101708,-0.05245 -0.155673,-0.05109 z m -0.0049,0.05027 c 2.52e-4,2.73e-4 5.17e-4,5.51e-4 6.15e-4,8e-4 -0.0031,7.38e-4 -0.0062,0.0014 -0.0088,0.0025 0.0025,-0.0011 0.0049,-0.0025 0.0081,-0.0033 z m -0.02829,0.01784 c 0,-1.48e-4 5.23e-4,1.48e-4 6.15e-4,0 -0.0031,0.0041 -0.0068,0.0086 -0.0091,0.01378 0.0025,-0.0052 0.0049,-0.0096 0.0083,-0.01378 z m -0.01402,0.03081 c -0.0031,0.01205 -0.0049,0.02549 -0.0055,0.03973 -6.15e-4,0.01424 -5.23e-4,0.02894 -0.0018,0.04378 -0.0037,0.06453 -0.0081,0.131618 -0.01144,0.198662 0.0031,-0.06704 0.0068,-0.134135 0.01064,-0.198662 0.0012,-0.01485 0.0018,-0.02954 0.0025,-0.04378 0.0012,-0.01424 0.0031,-0.02768 0.0055,-0.03973 z m -0.02749,0.483266 c -0.0055,0.132765 -0.01064,0.260937 -0.01377,0.37214 0.0031,-0.11097 0.0083,-0.239661 0.01377,-0.37214 z m 4.577091,1.017541 c 0.0055,-9.22e-4 0.0055,0.0026 0.0055,0.0065 0.09834,0.03601 0.170464,0.09672 0.23585,0.162991 0.05529,0.05588 0.16761,0.119402 0.246483,0.196201 -0.0187,0.02154 -6.15e-4,0.07151 -0.0171,0.107831 -0.07447,0.02104 -0.122986,0.07057 -0.158791,0.133777 -0.158527,-0.148929 -0.327693,-0.319419 -0.325879,-0.595118 0.01064,0.0028 0.01248,-0.0044 0.01378,-0.01217 z m -0.05031,0.05677 c 0.0031,0.01806 0.0073,0.03627 0.0096,0.05838 0.0012,0.0074 0.0018,0.0152 0.0025,0.02351 -2.96e-4,-4.41e-4 -4.86e-4,-0.0012 -6.15e-4,-0.0016 -4.92e-4,-0.0077 -6.15e-4,-0.01505 -0.0018,-0.0219 -0.0025,-0.0221 -0.0062,-0.04032 -0.0096,-0.05837 z m -4.542067,0.04136 c 0,0.08048 -6.15e-4,0.160604 -0.0025,0.239998 0.0018,-0.07939 0.0025,-0.159515 0.0025,-0.239998 z m 5.288785,0.327539 c 0.01611,0.02605 0.03426,0.05077 0.05344,0.07379 -0.01919,-0.02301 -0.03733,-0.04774 -0.05344,-0.07379 z m -5.292936,0.05838 c -2.59e-4,0.09398 0.0018,0.181335 0.0049,0.261897 -0.0031,-0.08056 -0.0049,-0.167922 -0.0049,-0.261897 z m 5.281516,0.06245 c 0.218463,0.172955 0.469879,0.374061 0.501274,0.67306 -0.152561,-0.128173 -0.286962,-0.24633 -0.424216,-0.394947 0.01113,-0.02989 -0.01974,-0.05983 -0.04127,-0.07867 -0.0049,0.0089 -0.0089,0.01567 -0.01298,0.0227 l -0.01451,-0.04133 0.0089,-0.02678 c 0.0043,0.01066 0.0081,0.02161 0.01298,0.03243 0.04901,-0.06097 0.0073,-0.135177 -0.03007,-0.186472 z m -0.545634,0.253776 c 0.03136,0.02374 0.06253,0.04909 0.09496,0.07296 l -0.02177,-8e-4 z m 0.499454,0.06406 0.0018,8e-4 c 0.01168,0.05674 0.07783,0.08069 0.127131,0.125681 0.06487,0.05931 0.126098,0.135852 0.16865,0.17036 l 0.0018,0.0023 c -0.137255,-0.07991 -0.261016,-0.17285 -0.367133,-0.281355 z m -0.09237,0.02431 c -0.0018,0.002 -0.0037,0.0031 -0.0081,0.0025 z m -0.19122,0.07784 c -0.0025,0.0031 -0.0043,0.006 -0.0068,0.0089 0.0018,-0.0042 0.0043,-0.0073 0.0068,-0.0089 z m -4.932292,0.08183 c 0.0037,0.142961 0.0037,0.280214 0.0049,0.415132 h -6.15e-4 c -0.0012,-0.134918 -2.58e-4,-0.272171 -0.0043,-0.415132 z m 5.703918,0.175134 c 0.0075,0.006 0.01402,0.01297 0.01974,0.02024 z m -5.274259,0.264387 h 0.01402 0.0088 l -0.0088,7.99e-4 z m 2.406473,0.03581 c 0.04877,-2.55e-4 0.09496,0.0021 0.128171,0.01609 z m 2.412955,0.135956 c 0.0012,0.0015 0.0025,0.0028 0.0031,0.0041 0,0.001 -2.95e-4,0.0021 0,0.0034 l -6.15e-4,-0.0034 z m 3.04628,0.269309 c -2.95e-4,0.02439 -0.0031,0.0467 -0.0065,0.06798 0.0037,-0.02127 0.0062,-0.04359 0.0065,-0.06798 z m -4.147174,0.0065 c -0.0088,0.03503 0.02724,0.03814 0.03555,0.07213 -0.0062,0.02205 -0.01193,0.04437 -0.0179,0.06642 l -0.06564,0.0034 c -0.02411,-0.01531 -0.06279,-0.0088 -0.09237,-8e-4 0.04748,-0.04619 0.08199,-0.106637 0.140366,-0.141145 z m 0.08355,0.06149 c -0.0031,5.2e-4 -0.0049,0.0021 -0.0068,0.0034 0.0018,-0.0015 0.0037,-0.0026 0.0068,-0.0034 z m 4.04832,0.04229 c -0.0062,0.02439 -0.01347,0.04774 -0.02048,0.07213 0.0068,-0.02413 0.01451,-0.048 0.02048,-0.07213 z m -0.02442,0.09003 c -0.0083,0.03139 -0.01611,0.06409 -0.01943,0.101189 0.0031,-0.0371 0.01113,-0.06979 0.01943,-0.101189 z m -2.35458,0.194594 c -0.07576,0 -0.151263,0.0028 -0.224687,0.008 0.07342,-0.0052 0.148926,-0.008 0.224687,-0.008 z m 0.114161,0.0015 c 0.07654,0.0023 0.152303,0.0067 0.228064,0.01297 -0.0755,-0.006 -0.15178,-0.01064 -0.228064,-0.01297 z m 0.587934,0.06331 c 0.01839,0.001 0.03579,5.2e-4 0.05344,0.0023 -0.01765,-0.0018 -0.03505,-0.0013 -0.05344,-0.0023 z m 0.06642,0.0049 c 0.0043,8e-4 0.0096,0.001 0.01402,0.0023 0.0049,0.0015 0.0091,0.0042 0.01377,0.0065 -0.0049,-0.0023 -0.0096,-0.0041 -0.01476,-0.0057 -0.0043,-0.0013 -0.0085,-0.0023 -0.01298,-0.0031 z m 0.719997,0.256085 c 0.02177,0.01219 0.04465,0.02231 0.06564,0.03321 -0.02103,-0.0109 -0.04385,-0.02101 -0.06564,-0.03321 z m 0.134658,0.08925 c 0.01894,0.0086 0.03764,0.01764 0.05603,0.02672 -0.01845,-0.0091 -0.03708,-0.01739 -0.05603,-0.02595 0,-2.55e-4 2.96e-4,-5.2e-4 0,-7.99e-4 z m 0.110269,0.05501 c 0.03579,0.01972 0.06979,0.04021 0.103786,0.06175 -0.03401,-0.02154 -0.06798,-0.04203 -0.103786,-0.06175 z m -11.935832,0.0034 c -0.01384,0.06071 -0.02866,0.121167 -0.03973,0.183177 0.01101,-0.06201 0.02589,-0.122464 0.03973,-0.183177 z m 10.375976,0.06071 c 0.0436,0.0091 0.08822,0.02024 0.131282,0.02854 -0.04305,-0.0083 -0.0877,-0.01946 -0.131282,-0.02854 z m 0.299932,0.02283 c 0.0062,0.0031 0.01378,0.006 0.02177,0.008 -0.0081,-0.0021 -0.01556,-0.0041 -0.02177,-0.0073 -0.01482,0.0073 -0.03087,0.01168 -0.04877,0.01375 -0.01765,0.0021 -0.03739,0.0018 -0.05732,0 0.01999,0.0018 0.03967,0.0021 0.05732,0 0.0179,-0.0021 0.03401,-0.0073 0.04877,-0.01453 z m 0.206785,0.02906 c 0.0098,0.0018 0.01943,0.0036 0.02829,0.0065 v 8e-4 c -0.0085,-0.0026 -0.0187,-0.0055 -0.02829,-0.0073 z m 0.14504,0.01141 c -0.01611,0.0036 -0.03063,0.0091 -0.04385,0.01712 0.01322,-0.008 0.02774,-0.01349 0.04385,-0.01712 z m -1.018373,0.01453 c 0.0254,0.0028 0.05037,0.007 0.07369,0.01297 -0.02337,-0.006 -0.04828,-0.01012 -0.07369,-0.01297 z m 1.230091,0.0073 c 0.05578,0.01712 0.11234,0.04021 0.162936,0.06331 -0.05061,-0.02309 -0.107157,-0.04619 -0.162936,-0.06331 z m -1.420536,0.0041 c -0.02435,0.0057 -0.04748,0.01349 -0.06901,0.02257 0.02152,-0.0091 0.04465,-0.01686 0.06901,-0.02257 z m 0.808993,0.02257 c 0,0.0039 -2.95e-4,0.0075 -6.15e-4,0.01141 h -6.15e-4 c 4.92e-4,-0.0039 0.0018,-0.0075 0.0018,-0.01141 z m 0.189922,0.03165 c 0.01193,0.0015 0.02232,0.0039 0.03241,0.0073 -0.0098,-0.0031 -0.02079,-0.0057 -0.03241,-0.0073 z m 0.113386,0.0099 c 0.0049,0.0049 0.0091,0.0096 0.01298,0.01531 -0.0037,-0.0055 -0.0083,-0.01037 -0.01298,-0.01531 z m -0.0672,0.0023 c 0.01378,0.006 0.02595,0.01427 0.03733,0.02284 -0.01144,-0.0086 -0.02362,-0.01686 -0.03733,-0.02284 z m -0.960773,0.0049 c -0.02177,0.0049 -0.04489,0.01298 -0.06564,0.01946 0.02072,-0.0065 0.04385,-0.01453 0.06564,-0.01946 z m -0.198747,0.04307 c -0.0049,0.01401 -0.0043,0.02101 -0.0089,0.04541 0.0043,-0.02439 0.0043,-0.0314 0.0089,-0.04541 z m 0.14841,0.05085 c 6.15e-4,0.0044 0.0018,0.0086 0.0018,0.01401 -2.95e-4,-2.55e-4 -4.92e-4,0 -6.15e-4,0 2.95e-4,-0.0055 0,-0.0096 -6.15e-4,-0.01401 z m -0.44523,0.0091 c -0.0345,0.01219 -0.0685,0.02699 -0.101185,0.04203 0.03266,-0.01505 0.06668,-0.02984 0.101185,-0.04203 z m 0.149191,0.0397 c -0.02724,0.0028 -0.05449,0.0067 -0.08018,0.01219 0.02595,-0.0055 0.05264,-0.0093 0.08018,-0.01219 z m -0.153859,0.03477 c -0.02312,0.0096 -0.04465,0.02127 -0.06409,0.03581 0.01974,-0.01479 0.04071,-0.02621 0.06409,-0.03581 z m 0.724665,0.03736 c 0.0049,0 0.01039,5.21e-4 0.01556,0.0015 -0.01039,-0.0018 -0.02072,-0.001 -0.03087,0.001 0.0049,-0.001 0.01039,-0.0023 0.01531,-0.0026 z m -0.12065,0.01712 c 0.0031,0.0023 0.0075,0.0039 0.01378,0.0047 -0.0062,-8e-4 -0.01039,-0.0023 -0.01378,-0.0047 z m 1.69374,7.99e-4 c 2.95e-4,0 4.92e-4,-2.55e-4 6.15e-4,0 6.15e-4,0.0075 0.0012,0.01349 0.0025,0.01868 -0.0012,-0.0055 -0.0025,-0.0109 -0.0031,-0.01868 z m 0.0055,0.02595 c 0.0018,0.0065 0.0055,0.01245 0.0096,0.0179 -0.0043,-0.0055 -0.0073,-0.01141 -0.0096,-0.0179 z m 0.174356,0.01375 c 0.0043,-2.55e-4 0.0091,-2.55e-4 0.01378,0 -0.01347,-5.2e-4 -0.02724,0.001 -0.04151,0.0049 0.0096,-0.0026 0.01845,-0.0044 0.02774,-0.0049 z m -1.900524,0.0275 c -2.96e-4,0.0015 -2.96e-4,0.0031 0,0.0049 0.0043,0.0062 0.0075,0.01297 0.01113,0.01946 -0.0037,-0.0065 -0.0078,-0.01324 -0.01218,-0.01946 0,-0.0018 6.15e-4,-0.0034 0.0012,-0.0049 z m 1.711377,0.0083 c 0.0093,0.0021 0.0179,0.0057 0.02595,0.0088 -0.0083,-0.0034 -0.0166,-0.0057 -0.02595,-0.008 0,-2.55e-4 2.95e-4,-8e-4 0,-8e-4 z m 0.027,0.0088 c 0.0166,0.0065 0.03112,0.01479 0.04539,0.02335 -0.01427,-0.0086 -0.02903,-0.01686 -0.04539,-0.02335 z m 0.06486,0.0065 c 6.15e-4,0.0018 0.0012,0.0034 0.0018,0.0057 -4.92e-4,-0.0021 -0.0012,-0.0039 -0.0018,-0.0057 z m -0.0187,0.01686 c 0.02153,0.01323 0.04127,0.02802 0.06227,0.04151 -0.02103,-0.01324 -0.04102,-0.02828 -0.06227,-0.04151 z m -2.61404,0.0026 c -0.01378,0.02465 -0.03087,0.04592 -0.04539,0.06979 0.01451,-0.02387 0.03143,-0.04515 0.04539,-0.06979 z m 0.851286,8e-4 c 0.0065,0.01323 0.01168,0.02698 0.01611,0.04047 -0.0043,-0.01349 -0.0096,-0.02724 -0.01611,-0.04047 z m 1.711642,0.0301 c 0,0 -2.95e-4,5.2e-4 0,8e-4 -0.0055,0.0041 -0.01113,0.0088 -0.01636,0.01375 0.0055,-0.0052 0.01009,-0.01012 0.01636,-0.01453 z m -1.449852,0.0015 c 0.0089,0.01349 0.01427,0.02802 0.0187,0.04204 0.0049,0.01427 0.0089,0.02854 0.01636,0.04229 0.0049,0.0086 0.01064,0.0166 0.01685,0.02439 -0.0062,-0.0078 -0.01218,-0.01582 -0.01685,-0.02439 -0.0075,-0.01375 -0.01168,-0.02802 -0.01636,-0.04229 -0.0043,-0.01401 -0.0096,-0.02828 -0.0187,-0.04204 z m 1.418198,0.02828 c 0,0 6.15e-4,2.55e-4 6.15e-4,0 -0.0091,0.0109 -0.0179,0.02284 -0.02515,0.03503 0.0073,-0.01245 0.01531,-0.02387 0.02442,-0.03503 z M 84.60892,19.3378 c 0.0055,0.02724 0.007,0.05526 0.0055,0.08251 0.0012,-0.02724 -2.95e-4,-0.05526 -0.0055,-0.08251 z m 1.590735,0.09081 c -0.0089,0.01868 -0.0187,0.03659 -0.02983,0.05267 0.01113,-0.01635 0.02079,-0.03399 0.02983,-0.05267 z m -2.5362,0.02828 c -0.01507,2.55e-4 -0.02958,0.0018 -0.0436,0.0039 0.01378,-0.0021 0.02878,-0.0036 0.0436,-0.0039 z m 0.02282,0 c 0.01531,5.2e-4 0.03087,0.0023 0.04619,0.0049 -0.01531,-0.0026 -0.03087,-0.0044 -0.04619,-0.0049 z m 2.067618,0.01297 c 0.01974,0.01842 0.04176,0.03399 0.0672,0.04619 0.01685,0.008 0.03555,0.01453 0.05529,0.01946 -0.01974,-0.0049 -0.03838,-0.01141 -0.05529,-0.01946 -0.0254,-0.01219 -0.04748,-0.02776 -0.0672,-0.04619 z m -1.15225,0.02984 c -0.0075,0.02595 -0.01814,0.05085 -0.03087,0.07394 0.01273,-0.02309 0.02337,-0.048 0.03087,-0.07394 z m 1.542992,0.01064 c -0.0049,0.0044 -0.0098,0.0086 -0.01556,0.0122 0.0055,-0.0036 0.01064,-0.0078 0.01556,-0.0122 z m 0.255308,0.125837 v 0.0023 c -0.0073,0.02154 -0.01144,0.04281 -0.01218,0.06331 -4.92e-4,0.01401 2.95e-4,0.02776 0.0025,0.04125 0.0018,0.01349 0.0055,0.02699 0.01039,0.0397 -0.0049,-0.01271 -0.0083,-0.0262 -0.01039,-0.0397 -0.0025,-0.01349 -0.0031,-0.02724 -0.0025,-0.04125 6.15e-4,-0.02127 0.0043,-0.04333 0.01218,-0.06564 z m -2.36755,0.02491 c 0.0083,0.01557 0.01611,0.02776 0.02208,0.03321 -2.95e-4,0 -6.15e-4,2.55e-4 -0.0012,0 -0.0055,-0.0055 -0.01273,-0.01764 -0.02103,-0.03321 z m 2.944063,0.0122 c 0.01168,0.01609 0.02312,0.03114 0.03401,0.04619 0,0.0021 -6.15e-4,0.0044 -0.0018,0.0057 6.15e-4,-0.0013 6.15e-4,-0.0036 6.15e-4,-0.0057 -0.01064,-0.01479 -0.02177,-0.03061 -0.03321,-0.04619 z m -12.582914,0.04879 c -0.03235,0.160086 -0.06632,0.325101 -0.09649,0.50257 0.0302,-0.177469 0.06414,-0.342484 0.09649,-0.50257 z m 9.843299,0.0049 c 0.01378,0.0018 0.02854,0.0034 0.04385,0.0039 -0.01556,-5.19e-4 -0.02983,-0.0018 -0.04385,-0.0039 z m 2.733908,0.0039 h 6.15e-4 c -0.0031,0.0086 -0.0068,0.01661 -0.01039,0.02439 0.0037,-0.0078 0.0065,-0.01582 0.0096,-0.02439 z m 0.06902,0.04125 c 0.0081,0.0179 0.01919,0.03632 0.02829,0.05526 -0.0091,-0.01946 -0.02023,-0.0371 -0.02829,-0.05526 z m 0.07628,0.0099 c 0.007,0.02024 0.01476,0.04203 0.02023,0.06409 -0.0055,-0.02205 -0.01322,-0.04385 -0.02023,-0.06409 z m -3.190552,0.02672 c 0.0089,0.0192 0.01765,0.03762 0.02595,0.05345 -2.96e-4,0.0057 -0.0012,0.01141 -0.0025,0.01712 0.0012,-0.0057 0.0018,-0.01141 0.0018,-0.01712 -0.0083,-0.01583 -0.01636,-0.03425 -0.02515,-0.05345 z m 3.143327,0.01946 c 0.01089,0.02257 0.0179,0.04619 0.01402,0.07369 0.0037,-0.02699 -0.0031,-0.05137 -0.01402,-0.07369 z m -0.626585,0.02595 c 0.0043,0.0055 0.0096,0.01038 0.01451,0.01556 -0.0049,-0.0055 -0.01009,-0.0099 -0.01451,-0.01556 z m -1.119042,0.03243 c -2.95e-4,7.99e-4 -2.95e-4,0.0018 0,0.0034 h -6.15e-4 c -2.95e-4,-0.0015 4.92e-4,-0.0026 6.15e-4,-0.0034 z m 1.492656,0.02516 c -0.01322,0.0055 -0.0262,0.01038 -0.03967,0.01375 0.01322,-0.0034 0.02675,-0.0083 0.03967,-0.01375 z m 0.264391,0.0023 c -0.0018,0.0083 -0.0049,0.01635 -0.0096,0.02517 0.0043,-0.0088 0.0075,-0.01686 0.0096,-0.02517 z m -1.953199,0.0018 c -0.06305,0.01168 -0.124019,0.02646 -0.183175,0.04359 0.05916,-0.01712 0.120126,-0.03191 0.183175,-0.04359 z m 1.921546,0.0275 c -0.0025,-2.56e-4 -0.0055,2.54e-4 -0.0096,0.0015 -0.0049,0.0015 -0.0093,0.0034 -0.01378,0.0065 -0.01347,0.0093 -0.027,0.02569 -0.03893,0.0454 0.01193,-0.01972 0.0254,-0.03606 0.03893,-0.0454 0.0043,-0.0031 0.0091,-0.0057 0.01378,-0.0073 0.0037,-0.0013 0.007,-0.001 0.0096,-7.99e-4 z m -3.123875,0.0096 c -0.0043,0.01349 -0.0083,0.02854 -0.01064,0.04385 0.0025,-0.01531 0.0062,-0.03036 0.01064,-0.04385 z m 1.45193,0.0091 c -0.03635,0.0091 -0.05369,0.01168 -0.07603,0.0096 0.02152,0.0018 0.03918,-7.99e-4 0.07603,-0.0096 z m 1.685696,0.01531 h 6.15e-4 c 0.0018,0.0026 0.0037,0.0067 0.0068,0.01141 -0.0031,-0.0047 -0.0055,-0.0088 -0.0075,-0.01141 z m -2.207726,0.01064 c 4.92e-4,-2.55e-4 0.0012,0 0.0018,0 -0.02878,0.0099 -0.05787,0.0205 -0.08588,0.03165 0.02774,-0.01116 0.05578,-0.0218 0.08432,-0.03165 z m 0.232732,7.99e-4 c -0.02983,0.0062 -0.05836,0.01324 -0.08692,0.02101 0.02854,-0.0078 0.05707,-0.01479 0.08692,-0.02101 z m 1.887554,0.02906 c -0.0073,0.01479 -0.01402,0.03062 -0.01943,0.04722 0.0055,-0.0166 0.01218,-0.03243 0.01943,-0.04722 z m -2.205389,0.0018 c -0.0838,0.03347 -0.163717,0.07213 -0.240776,0.11494 0.07706,-0.04281 0.156971,-0.08147 0.240776,-0.11494 z m 2.313327,0.0031 c 2.89e-4,0.0065 -2.95e-4,0.01297 -0.0031,0.01946 h -6.15e-4 c 0.0031,-0.0065 0.0043,-0.01298 0.0043,-0.01946 z m -2.246127,0.04151 c -0.0524,0.01998 -0.103527,0.04177 -0.153084,0.06383 0.04957,-0.02205 0.100675,-0.04385 0.153084,-0.06383 z m 1.147319,0.04437 c 0.03241,0.01453 0.06461,0.03061 0.09574,0.048 -0.03112,-0.01764 -0.06305,-0.03347 -0.09574,-0.048 z m -0.717402,0.0091 c 0.0091,-2.55e-4 0.01845,5.19e-4 0.02749,7.99e-4 -0.0179,-7.99e-4 -0.03733,-5.19e-4 -0.05603,8e-4 -0.01716,0.0013 -0.03401,0.0036 -0.04932,0.0065 0.01531,-0.0031 0.03192,-0.0052 0.04932,-0.0065 0.0093,-8e-4 0.01919,-0.0015 0.02853,-0.0015 z m -1.899743,0.04852 c 0.01919,0.01375 0.03635,0.02906 0.05344,0.04074 0.0055,0.0036 0.01113,0.0067 0.01716,0.0096 0.0081,0.0041 0.0171,0.0086 0.02669,0.0122 -0.0096,-0.0036 -0.01869,-0.0073 -0.02669,-0.01141 -0.0062,-0.0028 -0.01144,-0.0067 -0.01716,-0.01038 -0.0171,-0.01168 -0.03426,-0.02699 -0.05344,-0.04074 z m 1.084792,0.01297 c -0.05006,0.03036 -0.0986,0.06305 -0.14608,0.09652 0.04748,-0.03347 0.096,-0.06616 0.14608,-0.09652 z m 1.388094,0.02595 c 0.0062,0.0023 0.01218,0.0044 0.0187,0.0073 0.01919,0.0088 0.03739,0.0179 0.05498,0.02672 -0.01765,-0.0088 -0.03579,-0.01712 -0.05498,-0.02595 -0.0065,-0.0026 -0.01273,-0.0057 -0.0187,-0.008 z m 1.103476,0.0018 c 0.0037,0.01245 0.0098,0.02335 0.0179,0.0314 -0.0083,-0.008 -0.01402,-0.01868 -0.0179,-0.0314 z m -3.311202,0.03399 c -0.0179,0.001 -0.03739,0.0052 -0.05603,0.0065 0.01894,-0.0013 0.03788,-0.0055 0.05603,-0.0065 z m 3.733597,0 c 0.01611,0.01946 0.03087,0.03996 0.04465,0.06149 -0.01378,-0.02154 -0.02854,-0.04203 -0.04465,-0.06149 z m -2.986873,0.05837 c -0.03813,0.02569 -0.07576,0.05189 -0.113644,0.08095 0.03788,-0.02906 0.0755,-0.05526 0.113644,-0.08095 z m 0.255302,0.02024 c -0.0166,0.01064 -0.03272,0.02231 -0.04772,0.03399 0.01507,-0.01168 0.03112,-0.02335 0.04772,-0.03399 z m -1.441543,0.02257 c 2.95e-4,0.0096 -0.0018,0.01868 6.15e-4,0.02854 -0.0025,-0.0099 -4.86e-4,-0.01894 -6.15e-4,-0.02854 z m 4.244466,0.0049 c 0.01039,0.01894 0.01943,0.03814 0.02829,0.05838 -0.0085,-0.01998 -0.0179,-0.03944 -0.02829,-0.05838 z m -13.114804,0.01376 c -0.0031,0.01972 -0.0067,0.0371 -0.0097,0.05526 0.0031,-0.0179 0.007,-0.03555 0.0097,-0.05526 z m 12.71913,0.0034 c 2.95e-4,-2.56e-4 6.15e-4,0 6.15e-4,0 -0.0031,0.0034 -0.0061,0.0067 -0.0081,0.01037 0.0018,-0.0039 0.0043,-0.007 0.0073,-0.01037 z m -0.0073,0.01141 c -0.0043,0.0075 -0.0062,0.01531 -0.0065,0.02413 2.95e-4,-0.0086 0.0025,-0.01661 0.0065,-0.02413 z m -3.838417,0.0023 c 0.0012,0.0026 0.0031,0.0047 0.0049,0.0073 h -6.15e-4 c -0.0018,-0.0026 -0.0031,-0.0047 -0.0043,-0.0073 z m 0.96985,0.0023 c -0.04539,0.03606 -0.08951,0.0742 -0.133103,0.112085 -0.03136,0.06279 -0.06382,0.127135 -0.09807,0.191221 0.03426,-0.06409 0.06668,-0.128432 0.09807,-0.191221 l -6.15e-4,-0.001 c 0.0436,-0.03788 0.08821,-0.07498 0.133878,-0.111048 z m 2.877386,0.0755 c 0.0096,0.01894 0.02282,0.03814 0.03579,0.055 -0.01298,-0.01686 -0.0262,-0.03606 -0.03579,-0.055 z m -3.693119,0.01609 c 0.0089,0.01064 0.01685,0.02179 0.02362,0.03425 0.0068,0.01219 0.01218,0.0262 0.01685,0.04047 -0.0049,-0.01427 -0.01009,-0.02828 -0.01685,-0.04047 -0.0068,-0.01245 -0.01476,-0.02361 -0.02362,-0.03425 z m 3.160455,0.04462 c 0.0171,0.01582 0.03401,0.03114 0.05031,0.04696 -0.01636,-0.01557 -0.03321,-0.0314 -0.05031,-0.04696 z m 0.995015,0.0041 c 0,-2.55e-4 4.92e-4,0 6.15e-4,0 0.0025,0.0049 0.0043,0.0096 0.0065,0.01453 -0.0025,-0.0049 -0.0049,-0.0096 -0.0073,-0.01453 z m -0.314716,0.02024 c 0.0081,0.0044 0.01636,0.0083 0.02515,0.01141 -0.0089,-0.0031 -0.01685,-0.007 -0.02515,-0.01141 z m 0.327693,0.0073 c 0.0081,0.01972 0.01402,0.03918 0.01611,0.05838 -0.0018,-0.01894 -0.0081,-0.03866 -0.01611,-0.05838 z m -2.660478,0.02595 c -0.0055,0.0036 -0.01193,0.0073 -0.01845,0.01064 -0.01193,0.0057 -0.02435,0.0099 -0.03813,0.01453 0.01347,-0.0047 0.02644,-0.0096 0.03813,-0.01531 0.0065,-0.0034 0.01273,-0.0062 0.01845,-0.0099 z m -1.452964,0.04307 c 6.15e-4,0.0083 0.0018,0.01712 0.0018,0.02595 l -6.15e-4,7.99e-4 c -2.95e-4,-0.0091 -2.95e-4,-0.01816 -0.0012,-0.02673 z m 4.119149,0.05007 c -0.0037,0.0065 -0.007,0.01324 -0.01218,0.01972 -2.95e-4,0 -4.92e-4,-2.55e-4 -6.15e-4,0 -0.01636,0.0015 -0.03192,0.0047 -0.04643,0.0096 0.01482,-0.0052 0.02983,-0.008 0.04643,-0.0096 0.0049,-0.0065 0.0093,-0.01324 0.01298,-0.01972 z m -3.252304,0.01972 c -0.0037,0 -0.0078,0.0013 -0.01144,0.0023 0.0037,-0.0013 0.0073,-0.0023 0.01144,-0.0023 z m 0.02515,0.0031 c 0.0353,0.0091 0.0768,0.03373 0.102224,0.03477 -0.0254,-8e-4 -0.06694,-0.02569 -0.102224,-0.03477 z m 1.782213,0.03814 c 0.01531,0.01739 0.03272,0.03503 0.04852,0.05422 -0.01581,-0.0192 -0.03321,-0.03684 -0.04852,-0.05422 z m 1.41067,0.0039 c 0,0.007 0.0025,0.01116 0.0049,0.01557 -0.0025,-0.0041 -0.0049,-0.0091 -0.0049,-0.01557 z m -1.568158,0.04151 c -0.0037,0.0015 -0.0075,0.0031 -0.01113,0.0041 v -0.001 c 0.0037,-8e-4 0.0075,-0.0015 0.01113,-0.0031 z m 1.434539,0.0096 c -0.01378,0.0205 -0.02466,0.04333 -0.03346,0.06824 0.0088,-0.02491 0.01974,-0.04774 0.03346,-0.06824 z m -13.020101,0.07317 c 0.0049,0.0314 0.01052,0.05994 0.01704,0.08744 -0.0065,-0.0275 -0.01224,-0.05605 -0.01704,-0.08744 z m 9.488104,0.01609 c -0.01273,0.01998 -0.02804,0.03918 -0.04305,0.05838 0.01507,-0.0192 0.03038,-0.0384 0.04305,-0.05838 z m 0.06331,0.0091 c -0.0098,0.01712 -0.02023,0.03243 -0.03087,0.04696 0.01064,-0.01453 0.02103,-0.02984 0.03087,-0.04696 z m -0.558611,0.008 c -0.0085,0.0031 -0.02177,0.01194 -0.03659,0.02257 0.01531,-0.0109 0.02804,-0.01946 0.03659,-0.02257 z m 3.9793,0.01453 c -0.0037,0.01816 -0.0062,0.0371 -0.0073,0.05682 0.0012,-0.01972 0.0037,-0.03866 0.0073,-0.05682 z m 0.347932,0.06824 c 0.01144,0.02672 0.02103,0.05475 0.02983,0.08329 -0.0088,-0.02854 -0.01839,-0.05656 -0.02983,-0.08329 z m -4.730169,0.0015 c -0.05369,0.01271 -0.107156,0.02699 -0.157493,0.04462 0.05037,-0.01764 0.103786,-0.03191 0.157493,-0.04462 z m 0.278918,0.0047 c -0.0049,0.0036 -0.0091,0.0065 -0.01144,0.0075 -0.0062,0.0023 -0.01168,0.0044 -0.0179,0.0065 0.0062,-0.0021 0.01193,-0.0049 0.0179,-0.0073 0.0025,-0.001 0.0065,-0.0031 0.01144,-0.0067 z m 4.134197,0.03165 c 0.0012,8e-4 0.0031,8e-4 0.0049,0.001 -2.95e-4,0 0,5.2e-4 0,7.99e-4 -0.0018,-2.55e-4 -0.0037,-10e-4 -0.0049,-0.0018 z m -4.466822,0.0122 c 2.52e-4,2.54e-4 0,7.99e-4 0,7.99e-4 -0.0262,0.0109 -0.05295,0.02102 -0.0794,0.03165 -0.04852,0.01998 -0.09548,0.041 -0.138551,0.06642 v -7.99e-4 c 0.04305,-0.02542 0.09029,-0.04592 0.138551,-0.06564 0.02645,-0.01064 0.0532,-0.02179 0.0794,-0.03243 z m 4.445808,7.99e-4 c -0.0012,0.0036 -0.0031,0.006 -0.0049,0.0083 0.0018,-0.0023 0.0037,-0.0052 0.0049,-0.0083 z m -0.01378,0.0122 h 6.15e-4 c -0.0049,0.02309 -0.0078,0.04644 -0.0083,0.06902 4.92e-4,-0.02257 0.0025,-0.04592 0.0075,-0.06902 z m -3.599894,0.106657 c -0.0091,0.02725 -0.02312,0.05422 -0.03659,0.08017 0.01347,-0.02595 0.02749,-0.05293 0.03659,-0.08017 z m 2.937581,0.0218 c 0.0089,0.04125 0.0166,0.08458 0.02337,0.128172 -0.0068,-0.04359 -0.01451,-0.08692 -0.02337,-0.128172 z m 0.667064,0.03892 c 0.0062,0.02076 0.01378,0.04048 0.02362,0.05916 -0.0098,-0.01868 -0.01765,-0.0384 -0.02362,-0.05916 z m -4.451257,0.0179 c 6.15e-4,0.0075 0.0018,0.01505 0.0055,0.01946 -0.0043,-0.0044 -0.0049,-0.01194 -0.0055,-0.01946 z m 0.191478,0.0039 c 0.01476,0.0073 0.02909,0.01557 0.0428,0.02439 -0.01347,-0.0086 -0.02804,-0.01712 -0.0428,-0.02439 z m 2.171921,0.0057 c 0.0098,7.99e-4 0.02023,0.0026 0.03087,0.0049 -0.01064,-0.0023 -0.02103,-0.0044 -0.03087,-0.0049 z m -0.01765,7.99e-4 c -0.01039,0.001 -0.01943,0.0028 -0.02749,0.0065 0.0078,-0.0034 0.0174,-0.0057 0.02749,-0.0065 z m -0.08614,0.0034 c 0.0049,5.19e-4 0.0187,0.0034 0.03426,0.0039 -0.01556,-5.19e-4 -0.02934,-0.0034 -0.03426,-0.0039 z m -0.09393,0.01868 c 0.007,2.55e-4 0.01482,0.0026 0.02362,0.0049 -0.01298,-0.0036 -0.02442,-0.0052 -0.03426,-0.0041 0.0031,-2.56e-4 0.007,-0.001 0.01064,-8e-4 z m -0.06719,0.0122 c 0.0018,0 0.0031,0.001 0.0037,0.0015 -0.0018,-10e-4 -0.0049,-0.0018 -0.0096,-7.99e-4 0.0018,-5.2e-4 0.0043,-10e-4 0.0055,-8e-4 z m 0.02515,0.0057 c 0,-2.55e-4 4.92e-4,0 6.15e-4,0 -0.0025,0.0026 -0.0049,0.0055 -0.0065,0.0088 0.0018,-0.0034 0.0031,-0.0062 0.0055,-0.0088 z m -0.141922,0.02491 c 0.0025,0.0041 0.0018,0.0096 -0.0055,0.01635 0.0075,-0.0067 0.0081,-0.0122 0.0055,-0.01635 z m -0.03087,10e-4 c -0.0031,0.0031 -0.0049,0.0078 -0.0049,0.01375 0,0.0086 0.0031,0.01842 0.0098,0.02595 0.01064,-0.0091 0.01451,-0.007 0.01765,-0.0034 -0.0031,-0.0034 -0.0073,-0.0041 -0.01765,0.0041 -2.96e-4,-2.55e-4 0,-7.99e-4 0,-7.99e-4 -0.0062,-0.0073 -0.0098,-0.01764 -0.0098,-0.02595 0,-0.006 0.0018,-0.01064 0.0049,-0.01375 z m 2.55877,0.01686 c 0.0068,0.008 0.01427,0.01557 0.02208,0.02283 -0.0078,-0.0073 -0.01507,-0.01479 -0.02208,-0.02283 z m -12.959905,0.01713 c -0.01986,0.05604 -0.03875,0.113384 -0.05517,0.171762 0.01636,-0.05838 0.03524,-0.115718 0.05517,-0.171762 z m 10.457179,0.0015 c 0,2.55e-4 4.92e-4,5.2e-4 6.15e-4,7.99e-4 -0.01636,0.01064 -0.02337,0.0099 -0.02774,0.0065 0.0049,0.0028 0.01144,0.0026 0.027,-0.0073 z m 0.0018,0.0034 c 0.0025,0.0044 0.0043,0.0088 0.0037,0.01609 4.92e-4,-0.0073 -0.0018,-0.01168 -0.0037,-0.01609 z m -10.360662,0.0096 c 0.0037,-2.55e-4 0.0075,-5.19e-4 0.01132,0 -1.11e-4,2.55e-4 1.29e-4,5.2e-4 0,8e-4 -0.0037,-5.2e-4 -0.0078,-10e-4 -0.01132,-8e-4 z m 0,0 c -0.0071,2.55e-4 -0.01359,0.0018 -0.01943,0.0049 0.0062,-0.0031 0.01236,-0.0047 0.01943,-0.0049 z m 11.043034,0.01868 c 0.0055,0.01271 0.01113,0.02672 0.01531,0.04125 0.0088,0.02906 0.01427,0.06071 0.0179,0.0934 -0.0037,-0.03269 -0.0091,-0.06435 -0.0179,-0.0934 -0.0043,-0.01453 -0.0093,-0.02854 -0.01531,-0.04125 z m -0.421615,0.02672 c -0.01556,10e-4 -0.03112,0.0034 -0.04539,0.0073 0.01427,-0.0039 0.02983,-0.0062 0.04539,-0.0073 z m -1.945155,0.0275 c 0.01039,0.01609 0.01974,0.03243 0.02829,0.04877 -0.0085,-0.01635 -0.0179,-0.03269 -0.02829,-0.04877 z m 4.543881,0.01298 c -0.0018,0.0166 -0.0031,0.03373 -0.0055,0.05034 h -6.15e-4 c 0.0025,-0.0166 0.0049,-0.03373 0.0065,-0.05034 z m -2.762443,0.03087 c 0.0025,0 0.0049,5.2e-4 0.0073,7.99e-4 -0.0055,-5.19e-4 -0.0091,-0.0013 -0.01531,0.0015 0.0025,-0.001 0.0055,-0.0023 0.0081,-0.0023 z m -0.451719,0.03736 c -0.0085,0.02231 -0.01556,0.04541 -0.02177,0.06798 0.0062,-0.02257 0.01322,-0.04566 0.02177,-0.06798 z m 0.809251,0.01686 c 0.0049,0.0067 0.0083,0.01427 0.01144,0.02205 -0.0031,-0.0078 -0.0068,-0.01531 -0.01144,-0.02205 z m 0.144259,0.0099 c 0.007,0.01946 0.01248,0.03996 0.01531,0.06071 -0.0031,-0.02076 -0.0083,-0.04125 -0.01531,-0.06071 z m 2.206164,0.0023 c -0.0055,0.0055 -0.01064,0.01012 -0.01765,0.01375 0.0065,-0.0034 0.01248,-0.0086 0.01765,-0.01375 z m -0.05264,0.01064 c 0.0055,0 0.01144,2.56e-4 0.01716,8e-4 -0.01144,-0.001 -0.02257,-8e-4 -0.03321,0 0.0049,-2.55e-4 0.01064,-8e-4 0.01611,-8e-4 z m -2.965859,0.02906 c 0.007,-2.55e-4 0.01451,7.99e-4 0.02257,0.0026 -0.0081,-0.0018 -0.01556,-0.0028 -0.02257,-0.0026 z m 2.973122,0 c 0.0055,0.0055 -0.0093,0.02076 -0.01685,0.03659 0.0075,-0.01582 0.02232,-0.03114 0.01685,-0.03659 z m -2.983761,0.0018 c -0.0093,0.0021 -0.01765,0.0062 -0.02411,0.01219 0.0065,-0.006 0.01476,-0.01012 0.02411,-0.01219 z m 0.663435,0.02257 c 0.0037,0.0055 0.0078,0.01064 0.01193,0.01557 -0.0043,-0.0049 -0.0083,-0.01012 -0.01193,-0.01557 z m 0.28203,0.0034 c 0,0.03139 -0.0012,0.06149 -0.0031,0.08744 -4.92e-4,0.0096 -0.0018,0.0192 -0.0031,0.02854 0.0012,-0.0096 0.0018,-0.01946 0.0025,-0.02932 0.0018,-0.02595 0.0043,-0.05526 0.0043,-0.08666 z m 0.779928,0.0031 c 0.0025,0.01168 0.0037,0.02309 0.0043,0.03503 0,-0.01194 -0.0018,-0.02335 -0.0043,-0.03503 z m 1.088943,0.0179 c 2.95e-4,-2.55e-4 6.15e-4,0 6.15e-4,0 -0.0068,0.0078 -0.01347,0.01635 -0.01949,0.02517 0.0061,-0.0088 0.01193,-0.01739 0.0187,-0.02517 z m -0.76125,0.0065 c 0.0012,0.04333 4.92e-4,0.08536 -6.15e-4,0.126355 0.0012,-0.04099 0.0018,-0.08303 6.15e-4,-0.126355 z m -1.671164,0.0096 c 0.01248,2.55e-4 0.02337,0.0018 0.03241,0.0049 -0.0091,-0.0031 -0.01999,-0.0047 -0.03241,-0.0049 z m -10.234828,0.001 c -0.01082,0.05034 -0.01888,0.09808 -0.02349,0.145037 0.0049,-0.04696 0.01267,-0.0947 0.02349,-0.145037 z m 6.217387,0.01116 c 0.0025,0.0049 0.0037,0.01064 0.0049,0.01712 -0.0012,-0.006 -0.0031,-0.01141 -0.0055,-0.01635 0,-2.55e-4 5.17e-4,-5.2e-4 6.15e-4,-7.99e-4 z m 4.118891,0.01635 c -2.96e-4,0.0036 4.86e-4,0.0083 0.0025,0.01298 -0.0018,-0.0047 -0.0025,-0.0093 -0.0025,-0.01298 z m -1.55675,0.02673 c -0.0043,0.04722 -0.0061,0.09496 -0.0073,0.14348 0.0012,-0.04852 0.0031,-0.09626 0.0073,-0.14348 z m 4.065183,0 c 0.0031,0.0028 0.0055,0.006 0.0083,0.0088 -0.0031,-0.0028 -0.0055,-0.006 -0.0083,-0.0088 z m -2.869342,0.02984 c 2.95e-4,0 4.92e-4,2.54e-4 6.15e-4,0 0,0.0091 -4.92e-4,0.0179 0,0.02699 -4.92e-4,-0.0091 -6.15e-4,-0.0179 -6.15e-4,-0.02699 z m 0.03579,0.0041 c 0.0031,0.0055 0.0055,0.01271 0.0073,0.02101 -0.0018,-0.0083 -0.0043,-0.01557 -0.0073,-0.02101 z m 1.624725,0.0099 c -2.95e-4,5.2e-4 -4.92e-4,0.0015 -6.15e-4,0.0023 0,2.55e-4 -6.15e-4,-2.55e-4 -6.15e-4,0 4.86e-4,-7.99e-4 0.0018,-0.0015 0.0018,-0.0023 z m -0.78149,0.0039 c 0.0025,0.0078 0.0037,0.01686 0.0031,0.02595 4.86e-4,-0.0091 -4.92e-4,-0.01816 -0.0031,-0.02595 z m -5.972454,0.0034 c -0.01218,0.0023 -0.02442,0.0052 -0.03659,0.0065 -0.07758,0.0086 -0.153601,0.01557 -0.228587,0.02257 0.07499,-0.007 0.151005,-0.01505 0.228587,-0.02335 0.01218,-0.0015 0.02435,-0.0034 0.03659,-0.0057 z m -5.037629,0.02024 c -0.0082,0.05579 -0.01341,0.113123 -0.01617,0.170204 0.0031,-0.05708 0.008,-0.114421 0.01617,-0.170204 z m 5.383747,0.01946 c 0.0171,-7.99e-4 0.03426,5.2e-4 0.05191,0.0039 -0.0174,-0.0034 -0.03505,-0.0047 -0.05191,-0.0039 z m -0.05424,0.0073 c -0.0361,0.0075 -0.07135,0.01894 -0.107937,0.02595 -0.04151,0.008 -0.08406,0.01764 -0.127132,0.02828 0.04305,-0.01064 0.08562,-0.02024 0.127132,-0.02828 0.03635,-0.007 0.07187,-0.01842 0.107937,-0.02595 z m 5.68056,0.0015 c 0.0018,0.0031 0.0037,0.0057 0.0065,0.008 -0.0025,-0.0023 -0.0049,-0.0047 -0.0065,-0.008 z m -2.021432,0.0034 c 0.0012,0.01038 0.0018,0.0205 0.0018,0.03061 0,0.0073 -0.0018,0.01427 -0.0031,0.02127 0.0018,-0.007 0.0025,-0.01401 0.0025,-0.02127 2.95e-4,-0.01012 2.95e-4,-0.02024 -6.15e-4,-0.03061 z m -5.808737,0.0065 c 0.0187,0.0205 0.03684,0.041 0.05369,0.06305 -0.01685,-0.0218 -0.0353,-0.04255 -0.05369,-0.06305 z m 5.974275,0.0039 c 0.0025,0.01894 0.0055,0.03503 0.0096,0.03996 -0.0037,-0.0049 -0.007,-0.02101 -0.0096,-0.03996 z m 0.676922,0.0049 c 0.0012,0.02257 0.0037,0.04541 0.0073,0.0672 -0.0037,-0.0218 -0.0062,-0.04462 -0.0073,-0.0672 z m 2.226404,0.0041 c -0.0031,0.03918 -0.0068,0.07628 -0.01218,0.111048 0.0055,-0.03477 0.0093,-0.07187 0.01218,-0.111048 z m -1.701003,0.0049 c 0.01556,0.01349 0.03296,0.02465 0.05264,0.03321 -0.01943,-0.0086 -0.03708,-0.01998 -0.05264,-0.03321 z m -0.208341,0.0047 c 0.0055,0.01479 0.01378,0.02724 0.02257,0.03659 -0.0091,-0.0096 -0.0166,-0.02154 -0.02257,-0.03659 z m -5.310845,0.02024 c -0.03241,0.01012 -0.06979,0.01764 -0.109487,0.02361 0.03997,-0.006 0.0768,-0.01324 0.109487,-0.02361 z m 0.0025,0.001 c 0.0012,5.2e-4 0.0025,0.0013 0.0031,0.0023 -0.0012,-7.99e-4 -0.0018,-0.0018 -0.0031,-0.0023 z m 6.075459,0.0023 c -0.0062,0.01582 -0.01347,0.03087 -0.02103,0.04541 0.0075,-0.01427 0.01482,-0.02984 0.02103,-0.04541 z m -11.189107,0.0088 c -0.0031,0.04074 -0.0049,0.08225 -0.0049,0.123243 2.89e-4,0.04255 0.0025,0.08484 0.0065,0.126615 -0.0043,-0.04177 -0.0062,-0.08406 -0.0065,-0.126615 -2.9e-4,-0.04125 0.0018,-0.08225 0.0049,-0.123243 z m 3.419133,0.01712 c 0.03321,0.04359 0.06461,0.08848 0.09341,0.136216 -0.02878,-0.04774 -0.06021,-0.09289 -0.09341,-0.136216 z m 6.023567,0.0057 c 0.0012,0.02154 0.0043,0.04229 0.0081,0.06227 -0.0037,-0.01998 -0.007,-0.04074 -0.0081,-0.06227 z m -0.951173,0.02101 c -0.0031,0.0034 -0.0061,0.0078 -0.0081,0.01298 0.0018,-0.0052 0.0049,-0.0096 0.0081,-0.01298 z m -0.07524,0.0099 c 0.0062,-2.54e-4 0.01322,0 0.02023,8e-4 -2.52e-4,2.55e-4 0,5.2e-4 0,7.99e-4 -0.01402,-0.0015 -0.027,-0.0013 -0.03893,8e-4 0.0061,-0.001 0.01218,-0.0023 0.0187,-0.0023 z m -7.376895,0.008 c -0.03315,0.05007 -0.06386,0.102226 -0.09242,0.154895 0.02853,-0.05267 0.05928,-0.10482 0.09242,-0.154895 z m 7.323968,0.0049 c -0.02103,0.0099 -0.03997,0.02465 -0.05762,0.04125 0.01765,-0.01661 0.03659,-0.03165 0.05762,-0.04125 z m 0.835192,0.01038 c -0.0018,0.03295 -0.0037,0.06642 -0.0073,0.09963 0.0037,-0.03321 0.0055,-0.06668 0.0073,-0.09963 z m -8.22403,0.0065 c -0.0012,0.0028 -0.0025,0.0055 -0.0043,0.008 -0.04016,0.05864 -0.08258,0.123242 -0.121602,0.193036 0.04071,-0.07265 0.08383,-0.140885 0.125655,-0.20108 z m 4.017706,0.0015 c -0.02958,0.0065 -0.06045,0.0099 -0.09081,0.01375 -0.03063,0.0041 -0.0607,0.0086 -0.08925,0.01635 0.02854,-0.0078 0.05867,-0.01219 0.08925,-0.01635 0.03038,-0.0039 0.06125,-0.0073 0.09081,-0.01375 z m 6.136952,0.0122 c -0.0096,0.01271 -0.01999,0.02465 -0.03087,0.0358 0.01089,-0.01116 0.02128,-0.02309 0.03087,-0.0358 z m -8.884089,0.0099 c -1.1e-4,0.0055 6.15e-4,0.0109 0.0018,0.01531 -0.0012,-0.0047 -0.0018,-0.0093 -0.0018,-0.01531 z m 8.150341,0.03555 c -0.0043,0.0096 -0.0055,0.0192 -0.0073,0.02854 0.0018,-0.0093 0.0031,-0.01894 0.0073,-0.02854 z m -5.641649,8e-4 c -0.0065,0.0031 -0.01248,0.006 -0.01943,0.0073 -0.102741,0.02257 -0.159043,0.03114 -0.257897,0.04644 0.09885,-0.01531 0.154375,-0.02465 0.257122,-0.04722 0.007,-0.0015 0.01378,-0.0034 0.02023,-0.0065 z m -1.144207,0.0034 h 0.0012 c 6.15e-4,0.0062 0.0018,0.01245 0.0031,0.01946 0.0083,0.03451 0.02675,0.07576 0.04699,0.111048 -0.02023,-0.03529 -0.03868,-0.07654 -0.04699,-0.111048 -0.0018,-0.007 -0.0031,-0.01324 -0.0043,-0.01946 z m 7.471604,0.0023 c -0.01144,0.01064 -0.02282,0.02024 -0.03555,0.02932 0.01248,-0.0091 0.02442,-0.01894 0.03555,-0.02932 z m 1.93633,0.0073 h 6.15e-4 c -0.0055,0.02284 -0.0075,0.04515 -0.0065,0.06668 -0.0012,-0.02154 2.96e-4,-0.04385 0.0055,-0.06668 z m -6.301703,10e-4 c 0.0043,0.0042 0.0078,0.008 0.01064,0.01298 -0.0031,-0.0047 -0.0065,-0.0091 -0.01064,-0.01298 z m -4.415452,0.01116 c 6.15e-4,0.0028 6.15e-4,0.0055 -6.15e-4,0.01064 0.0012,-0.0044 0.0012,-0.008 6.15e-4,-0.01064 z m 8.314581,0.0057 h 0.0012 c 0.0018,0.0047 0.0031,0.0091 0.0055,0.01298 -0.0025,-0.0039 -0.0049,-0.0083 -0.0068,-0.01298 z m -0.09807,0.0057 c 0.0062,0.0052 0.01298,0.0099 0.02023,0.01375 -0.0075,-0.0039 -0.01402,-0.0086 -0.02023,-0.01375 z m -6.983306,0.0096 c 0.01347,0.02465 0.02675,0.04981 0.03893,0.0755 0.01218,0.02595 0.02362,0.05215 0.03401,0.07939 -0.01039,-0.02725 -0.02177,-0.05345 -0.03401,-0.07939 -0.01218,-0.02569 -0.0254,-0.05085 -0.03893,-0.0755 z m 6.844754,0.0091 c -0.0018,0.0031 -0.0037,0.0065 -0.0065,0.0096 -2.95e-4,0 -4.92e-4,2.55e-4 -6.15e-4,0 0.0031,-0.0031 0.0055,-0.0065 0.0073,-0.0096 z m -7.013404,8e-4 c 0.007,0.0052 0.01378,0.01116 0.02023,0.01712 -0.0065,-0.006 -0.01322,-0.01194 -0.02023,-0.01712 z m 7.640254,0.0041 c -0.02749,0.01531 -0.05732,0.0288 -0.08848,0.03892 0.03143,-0.01012 0.06101,-0.02335 0.08848,-0.03892 z m -2.558254,0.0088 c 0.0049,-2.55e-4 0.0093,2.55e-4 0.01378,8e-4 -0.0091,-10e-4 -0.01845,-2.55e-4 -0.02749,0.0015 -0.01347,0.0028 -0.02595,0.0086 -0.03893,0.01635 0.01273,-0.0078 0.02571,-0.01349 0.03893,-0.01635 0.0043,-7.99e-4 0.0093,-0.0021 0.01378,-0.0023 z m 0.813396,0.0041 c 0.0043,0.03399 0.0098,0.06668 0.01611,0.09807 -0.0062,-0.0314 -0.01168,-0.06408 -0.01611,-0.09807 z m -0.866845,0.01453 c -0.01716,0.01038 -0.03345,0.02465 -0.04957,0.0397 0.01611,-0.01531 0.03216,-0.02932 0.04957,-0.0397 z m 1.994711,0.0049 c 2.95e-4,10e-4 0.0012,0.0018 0.0025,0.0031 -0.0012,-0.0013 -0.0018,-0.0018 -0.0025,-0.0031 z m 0.21379,0 c 0.0081,0.0055 0.01845,0.0099 0.02854,0.01531 -0.01009,-0.0055 -0.02048,-0.0099 -0.02854,-0.01531 z m 1.342954,0.0023 c -0.0078,0.02179 -0.01611,0.04359 -0.02515,0.06409 0.0091,-0.0205 0.0174,-0.04229 0.02515,-0.06409 z m -9.228651,0.0065 c 0.0187,0.01194 0.0361,0.02491 0.05191,0.03892 -0.01581,-0.01401 -0.03321,-0.02699 -0.05191,-0.03892 z m 4.347477,0 c -0.007,0.0091 -0.01347,0.01946 -0.01949,0.03088 0.0061,-0.01168 0.01248,-0.0218 0.01949,-0.03088 z m 3.292777,0.0073 c 0.0025,0.0023 0.0055,0.0047 0.0089,0.0065 -0.0031,-0.0018 -0.0061,-0.0041 -0.0089,-0.0065 z m 0.04047,0 c -0.0018,0.001 -0.0031,0.0023 -0.0043,0.0034 0.0018,-0.0013 0.0025,-0.0021 0.0043,-0.0034 z m -3.669767,0.0091 c 0.0012,-2.54e-4 0.0018,0.001 0.0031,0.0015 -0.0025,-0.0013 -0.0049,-0.0021 -0.0065,0 6.15e-4,-0.001 0.0018,-0.0015 0.0031,-0.0015 z m -5.878274,0.02413 c -0.0543,0.0973 -0.10378,0.203155 -0.138657,0.311348 0.03469,-0.108453 0.08427,-0.214052 0.138657,-0.311348 z m 7.470823,0.0091 c 0,-2.55e-4 5.22e-4,0 6.15e-4,0 -0.01531,0.01609 -0.02958,0.03243 -0.04305,0.04696 -0.0083,0.0088 -0.01636,0.01868 -0.02441,0.02828 0.0081,-0.0096 0.01531,-0.01946 0.02362,-0.02828 0.01347,-0.01453 0.0278,-0.03088 0.04305,-0.04696 z M 75.74545,22.1479 c -0.01624,0.02569 -0.03487,0.04826 -0.05271,0.07213 0.01784,-0.02387 0.03647,-0.04644 0.05271,-0.07213 z m 5.550575,0.01686 c -0.0031,0.0075 -0.0049,0.01531 -0.0065,0.02284 0.0018,0.0036 0.0018,0.007 0.0025,0.01038 -6.15e-4,-0.0034 -0.0018,-0.0067 -0.0031,-0.01038 0.0018,-0.0075 0.0043,-0.01531 0.0073,-0.02284 z m -6.500973,0.0099 c 0.0076,0.02932 0.01378,0.06253 0.02189,0.09496 -0.0081,-0.03243 -0.01433,-0.06564 -0.02189,-0.09496 z m 8.379709,0.0088 c 0.0043,0.0049 0.0089,0.0093 0.01298,0.01453 -0.0037,-0.0052 -0.0085,-0.0096 -0.01298,-0.01453 z m 4.50652,0.02024 c -4.92e-4,0.01739 0.0018,0.04021 6.15e-4,0.06253 0.0012,-0.02231 -0.0012,-0.04515 -6.15e-4,-0.06253 z m -10.456146,0.0099 c 0.0073,0.007 0.01378,0.01583 0.01765,0.02595 -0.0037,-0.01012 -0.01039,-0.01894 -0.01765,-0.02595 z m 0.830265,0.0065 h 6.15e-4 c 0.0012,0.008 0.0018,0.01609 0.0031,0.02439 -0.0012,-0.0083 -0.0025,-0.01635 -0.0037,-0.02439 z m -0.752431,0.0031 c 0.0018,0.0034 0.0031,0.0062 0.0055,0.0091 0.0096,0.01271 0.02073,0.02595 0.03241,0.0397 -0.01169,-0.01375 -0.02362,-0.02699 -0.03346,-0.0397 -0.0018,-0.0028 -0.0031,-0.006 -0.0049,-0.0091 z M 85.0963,22.225 c 0.0037,0.0078 0.0098,0.01479 0.01716,0.02101 -0.0073,-0.0062 -0.01347,-0.01324 -0.01716,-0.02101 z m -1.886774,0.0073 c 0.0068,0.01194 0.01273,0.02517 0.0179,0.03892 -0.0049,-0.01375 -0.01113,-0.02698 -0.0179,-0.03892 z m 4.462672,0.07706 c -0.0031,0.0065 -0.0078,0.01168 -0.01378,0.01686 0.0055,-0.0049 0.01064,-0.01064 0.01378,-0.01686 z m -11.012162,0.0039 c 0.03069,0.01064 0.05916,0.02309 0.08515,0.03814 -0.02595,-0.01505 -0.05443,-0.0275 -0.08515,-0.03814 z m 9.544672,0.0179 c 2.89e-4,-2.55e-4 6.15e-4,2.54e-4 6.15e-4,0 -0.0025,0.0036 -0.0055,0.0078 -0.0081,0.01141 0.0025,-0.0036 0.0049,-0.0078 0.0073,-0.01141 z m 1.433499,0.0088 c 4.92e-4,0.01012 -2.89e-4,0.01894 -0.0018,0.02672 -0.0012,0.008 -0.0037,0.01479 -0.0065,0.02127 0.0025,-0.0065 0.0049,-0.01324 0.0065,-0.02127 0.0012,-0.0078 0.0018,-0.0166 0.0018,-0.02672 z m -13.226634,0.0091 c 0.01304,0.0397 0.02761,0.07602 0.04299,0.11027 -0.01531,-0.03425 -0.02995,-0.07057 -0.04299,-0.11027 z m 2.369888,0.02673 c 0.01168,0.0086 0.02306,0.01764 0.03321,0.0275 -0.01015,-0.0099 -0.02152,-0.01894 -0.03321,-0.0275 z m -2.120158,0.01141 c 0.007,0.02569 0.01494,0.05085 0.02349,0.07524 -0.0085,-0.02439 -0.0166,-0.04956 -0.02349,-0.07524 z m 2.655288,0.01609 c 0.01039,0.02439 0.02152,0.05111 0.03087,0.07784 -0.0093,-0.02672 -0.02048,-0.05319 -0.03087,-0.07784 z m 10.158551,0.0015 c -0.01218,0.0018 -0.02442,0.0047 -0.03579,0.0083 -0.0174,0.0052 -0.03321,0.01271 -0.04772,0.0218 0.01427,-0.0088 0.03063,-0.0166 0.04772,-0.0218 0.01168,-0.0036 0.02337,-0.0065 0.03579,-0.0083 z m -10.032195,0.01479 c 6.15e-4,0.0065 5.23e-4,0.01375 0.0012,0.02024 -5.17e-4,-0.0065 -2.52e-4,-0.01375 -0.0012,-0.02024 z m 0.581445,8e-4 c 0.0012,0.0049 0.0012,0.0099 -0.0025,0.01453 -0.0018,0.0023 -0.0043,0.0041 -0.0073,0.0065 0.0031,-0.0023 0.0055,-0.0041 0.0073,-0.0065 0.0031,-0.0047 0.0031,-0.0096 0.0025,-0.01453 z m 9.441924,0.02413 c 0.0012,0.0018 0.0018,0.0034 6.15e-4,0.0057 6.15e-4,-0.0021 0,-0.0039 -6.15e-4,-0.0057 z m -11.098303,0.0041 c -0.0025,0.0018 -0.0055,0.0041 -0.0081,0.0065 0.0025,-0.0026 0.0049,-0.0047 0.0081,-0.0065 z m 0.488926,0.0034 c 0.0083,0.01168 0.01581,0.02413 0.02257,0.0371 -0.0065,-0.01297 -0.01451,-0.02569 -0.02257,-0.0371 z m 6.797012,0.0031 c 0.01347,0.03347 0.02878,0.06512 0.04539,0.09574 -0.0166,-0.03061 -0.03192,-0.06227 -0.04539,-0.09574 z m -7.901263,0.0023 c -0.01095,0.01868 -0.02152,0.03814 -0.03081,0.05864 0.0093,-0.0205 0.01986,-0.03996 0.03081,-0.05864 z m -0.222178,0.0057 c -0.0085,0.02932 -0.01587,0.05967 -0.02269,0.09081 0.0068,-0.03087 0.01421,-0.06175 0.02269,-0.09081 z m 1.020009,0.0179 c 0.0068,-5.19e-4 0.01365,-2.54e-4 0.02109,0 -0.03702,-0.001 -0.06681,0.008 -0.09325,0.01868 -0.03702,0.01479 -0.06709,0.03243 -0.102949,0.03088 0.03548,0.0013 0.06621,-0.01609 0.102949,-0.03088 0.02116,-0.0086 0.04477,-0.0166 0.07218,-0.01868 z m -1.105137,0.0034 c -0.0031,0.03295 -0.0093,0.06512 -0.01704,0.0973 0.0077,-0.03217 0.01414,-0.06435 0.01704,-0.0973 z m 8.705846,0.0015 c 0.0037,5.2e-4 0.0075,0.0021 0.01193,0.0042 -0.0081,-0.0036 -0.01556,-0.0044 -0.02257,-0.0034 0.0031,-5.2e-4 0.007,-0.0013 0.01064,-8e-4 z m -0.02128,0.0031 c -0.0098,0.0036 -0.01894,0.0099 -0.02829,0.01401 0.0093,-0.0041 0.01839,-0.01038 0.02829,-0.01401 z m -9.071932,0.001 c -0.0037,0.01349 -0.0072,0.02672 -0.01052,0.04047 -0.0079,0.03191 -0.01544,0.06253 -0.02269,0.09314 0.0072,-0.03036 0.01408,-0.06123 0.02189,-0.09314 v -8e-4 c 0.0031,-0.01349 0.0076,-0.02646 0.01132,-0.0397 z m 0.108657,0 c -0.01396,0.04359 -0.02798,0.08744 -0.03893,0.131286 0.01095,-0.04385 0.02497,-0.0877 0.03893,-0.131286 z m -0.468655,0.008 c 0.0094,0.02361 0.01968,0.0467 0.03081,0.06876 -0.01113,-0.02205 -0.0214,-0.04515 -0.03081,-0.06876 z m 7.222777,0.02257 c 0.0012,0.0013 0.0018,0.0023 0.0037,0.0034 -0.0018,-7.99e-4 -0.0031,-0.0021 -0.0037,-0.0034 z m -6.911431,0.0083 c -0.0031,0.02101 -0.0068,0.04203 -0.01052,0.06305 0.0037,-0.02076 0.0069,-0.04151 0.0097,-0.06227 1.91e-4,-5.2e-4 6.15e-4,-5.2e-4 6.15e-4,-7.99e-4 z m 1.662166,0.0031 c 0.009,0.0049 0.01845,0.0096 0.02921,0.01298 -0.0107,-0.0034 -0.02017,-0.008 -0.02921,-0.01298 z m 10.750629,0.0057 c -0.0037,0.01168 -0.0091,0.02128 -0.01716,0.02828 0.0081,-0.007 0.01347,-0.01661 0.01716,-0.02828 z m -1.349184,0.01375 c -0.0091,0.01531 -0.02208,0.02906 -0.03579,0.04385 0.01378,-0.01479 0.02675,-0.02854 0.03579,-0.04385 z m -0.264385,0.0096 c 0.0068,0.0049 0.01144,0.0078 0.01531,0.0083 -0.0037,-5.2e-4 -0.0085,-0.0034 -0.01531,-0.0083 z m 0.05683,0.0026 h 6.15e-4 c -2.95e-4,0.0065 -0.0018,0.01116 -0.0025,0.01453 6.15e-4,-0.0036 0.0012,-0.0078 0.0018,-0.01453 z m -4.446583,0.0065 c 0.0037,0.007 0.0062,0.01531 0.0065,0.02517 -2.58e-4,-0.0099 -0.0031,-0.01816 -0.0065,-0.02517 z m 5.996064,0.0179 c 0.0018,0.0031 0.0049,0.006 0.0073,0.0088 -0.0025,-0.0028 -0.0049,-0.0057 -0.0073,-0.0088 z m -1.430387,0.01868 c 4.92e-4,0.0018 0.0012,0.0036 6.15e-4,0.0062 0,0 -4.92e-4,2.55e-4 -6.15e-4,0 2.95e-4,-0.0026 4.92e-4,-0.0044 0,-0.0062 z m -0.140366,8e-4 h 0.0012 c 2.95e-4,0.0021 4.92e-4,0.0039 0.0018,0.0055 -0.0012,-0.0015 -0.0018,-0.0034 -0.0025,-0.0055 z m -11.355943,0.0015 c 0.02171,0.03659 0.0433,0.07317 0.06647,0.108713 -0.02318,-0.03555 -0.04471,-0.07213 -0.06647,-0.108713 z m 1.76431,0.01142 c -0.01,0.01972 -0.01839,0.04074 -0.02435,0.06486 0.0061,-0.02387 0.01451,-0.04541 0.02435,-0.06486 z m 6.978632,0.008 c -0.01009,-2.56e-4 -0.01869,0.0018 -0.02515,0.0057 -0.0031,0.0018 -0.0062,0.0047 -0.0091,0.0073 0.0031,-0.0028 0.0055,-0.0052 0.0091,-0.0073 0.0065,-0.0039 0.01451,-0.006 0.02515,-0.0057 z m -1.494475,0.01219 c -0.0018,0.01219 -0.0037,0.02361 -0.0037,0.03555 2.58e-4,-0.01194 0.0018,-0.02335 0.0037,-0.03555 z m 2.014169,0 c 0.01685,0.02906 0.03296,0.05786 0.04772,0.08666 -0.01476,-0.0288 -0.03087,-0.0576 -0.04772,-0.08666 z m -8.965815,0.01946 c 0.0206,0.0288 0.04342,0.05552 0.0681,0.07939 -0.02472,-0.02387 -0.04748,-0.0506 -0.0681,-0.07939 z m 0.333246,0.0047 c -0.0055,0.02906 -0.009,0.05734 -0.0097,0.08536 -3.14e-4,0.01141 2.83e-4,0.02387 0.0018,0.03632 -0.0012,-0.01245 -0.0025,-0.02491 -0.0025,-0.03632 6.15e-4,-0.02802 0.0049,-0.0563 0.01058,-0.08536 z m 9.016152,0 c 0.01144,0.02284 0.02571,0.04281 0.04127,0.06175 -0.01556,-0.01894 -0.02983,-0.03892 -0.04127,-0.06175 z m -2.273628,0.0083 c -0.0031,0.0015 -0.0068,0.0039 -0.01039,0.0047 v -8e-4 c 0.0037,-7.99e-4 0.0075,-0.0023 0.01039,-0.0039 z m 1.311041,0.0073 c -0.0018,0.0031 -0.0037,0.006 -0.0062,0.0088 -2.95e-4,2.55e-4 -6.15e-4,0 -0.0012,0 0.0025,-0.0028 0.0049,-0.0057 0.0073,-0.0088 z m -6.642895,0.0031 c 0.0055,0 0.01101,8e-4 0.01624,0.0018 -0.0049,-10e-4 -0.01089,-10e-4 -0.01624,-7.99e-4 -0.0068,0 -0.01341,7.99e-4 -0.02029,0.0023 -0.01372,0.0031 -0.02718,0.0091 -0.04053,0.01686 0.01335,-0.0078 0.02681,-0.01375 0.04053,-0.01686 0.0069,-0.0015 0.01347,-0.0031 0.02029,-0.0034 z m 5.306688,0.0122 c 2.52e-4,0 6.15e-4,2.55e-4 0.0012,0 0.0031,0.0031 0.0049,0.0065 0.0073,0.0099 -0.0018,-0.0034 -0.0049,-0.0067 -0.0083,-0.0099 z m -5.244161,0.0057 c 0.01058,0.0044 0.02165,0.0086 0.03321,0.01141 0.01162,0.0028 0.02386,0.0039 0.03733,0.0023 -0.01347,0.0015 -0.02571,5.2e-4 -0.03733,-0.0023 -0.01162,-0.0028 -0.02269,-0.007 -0.03321,-0.01141 z m 5.256356,0.01453 c 0.0018,0.007 0.0018,0.01375 0,0.02127 0.0018,-0.0075 0.0018,-0.01427 0,-0.02127 z m 1.255256,0.0026 c -0.04022,0.01972 -0.07861,0.04177 -0.114419,0.06642 0.03579,-0.02491 0.07394,-0.04644 0.114419,-0.06642 z m -6.88134,0.0049 c -0.0018,0.01349 -0.0025,0.02776 -0.0025,0.04281 h -6.15e-4 c 1.11e-4,-0.01505 0.0018,-0.02932 0.0031,-0.04281 z m -0.601629,0.01194 c -0.0012,2.55e-4 -0.0018,0.001 -0.0031,0.0018 0.0012,-0.001 0.0018,-0.0015 0.0031,-0.0018 z m 7.027413,0 c 0.01451,0.03217 0.03216,0.06279 0.04772,0.09418 -0.01581,-0.03139 -0.03296,-0.06175 -0.04772,-0.09418 z m 3.147478,0.01141 c 2.96e-4,0.0018 6.15e-4,0.0036 0.0018,0.0049 -6.15e-4,-0.0013 -0.0012,-0.0031 -0.0018,-0.0049 z m -9.594221,0.0057 c 0.0012,0 0.0018,0.001 0.0025,0.0015 -6.15e-4,-5.19e-4 -0.0012,-5.19e-4 -0.0025,-7.99e-4 0,-2.55e-4 -3e-5,-5.2e-4 0,-8e-4 z m 9.602266,0.0073 c 0.0012,0.0015 0.0031,0.0034 0.0031,0.0057 -4.92e-4,-0.0021 -0.0025,-0.0041 -0.0031,-0.0057 z m -8.804435,0.0026 c 0.0012,0.0052 5.16e-4,0.01012 -6.15e-4,0.01531 0.0012,-0.0049 0.0018,-0.01038 6.15e-4,-0.01531 z m -0.787351,0.0031 c 6.15e-4,5.2e-4 0.0018,0.0015 0.0031,0.0015 -0.0012,0 -0.0025,-8e-4 -0.0031,-0.0015 z m 9.556344,0.0031 c -0.0075,-2.55e-4 -0.01476,5.2e-4 -0.0179,0.0034 0.0031,-0.0028 0.01039,-0.0036 0.0179,-0.0034 z m 1.693739,0 c -0.0031,0.02984 -0.0083,0.0589 -0.01451,0.0877 0.0062,-0.02854 0.01113,-0.05812 0.01451,-0.0877 z m -12.869876,10e-4 c 0.01876,0.02517 0.03893,0.04877 0.06082,0.07135 -0.02189,-0.02257 -0.04207,-0.04619 -0.06082,-0.07135 z m 11.14682,0.0073 c 0.0049,2.55e-4 0.01402,0.0052 0.01531,0.0047 -0.0012,5.2e-4 -0.01039,-0.0044 -0.01531,-0.0047 z m -0.01531,0.0039 c 0.0018,-2.55e-4 0.0037,0 0.0055,0 h 6.15e-4 c -0.0018,0.0028 -0.0037,0.006 -0.0055,0.0083 0.0018,-0.0023 0.0031,-0.0055 0.0049,-0.0083 -0.0049,-2.55e-4 -0.0078,7.99e-4 -0.01064,0.0026 0.0012,-8e-4 0.0031,-0.0021 0.0049,-0.0026 z m -9.343071,0.01479 c -0.0095,0.01531 -0.01753,0.03191 -0.02435,0.04852 0.0068,-0.0166 0.01482,-0.03321 0.02435,-0.04852 z m 9.338138,0.0015 c 0.0037,0.0028 0.01064,0.0023 0.01636,0.0031 -0.0055,-7.99e-4 -0.01273,-2.55e-4 -0.01636,-0.0031 z m -10.722868,0.0065 c -0.0025,0.02984 -0.0037,0.05967 -0.0043,0.08925 1.29e-4,-0.02958 0.0018,-0.05941 0.0043,-0.08925 z m 7.941741,0.02101 c -0.0077,0.007 -0.01581,0.01531 -0.02337,0.02284 0.0078,-0.0078 0.01507,-0.01557 0.02337,-0.02284 z m -7.821867,8e-4 c 0.0043,0.0262 0.0097,0.05267 0.01212,0.07862 -0.0025,-0.02595 -0.0079,-0.05241 -0.01212,-0.07862 z m 8.829084,7.99e-4 c 0.01636,0.02076 0.03241,0.04255 0.05006,0.06331 -0.01765,-0.02076 -0.0337,-0.04255 -0.05006,-0.06331 z m -9.269388,0.03659 c 0.01544,0.01401 0.03118,0.0275 0.04865,0.0397 -0.01734,-0.01219 -0.03333,-0.02569 -0.04865,-0.0397 z m 9.619657,0.0034 c 0.01218,0.0026 0.02386,0.006 0.03555,0.01038 -0.01144,-0.0044 -0.02362,-0.0078 -0.03555,-0.01038 z m 1.340876,7.99e-4 c 2.95e-4,0 6.15e-4,-2.55e-4 6.15e-4,0 -6.15e-4,8e-4 -0.0025,0.0026 -0.0037,0.0055 0.0012,-0.0023 0.0025,-0.0044 0.0031,-0.0055 z m -2.743767,0.0039 c -0.02128,0.02465 -0.04022,0.05189 -0.05578,0.08277 0.01556,-0.03087 0.0345,-0.05812 0.05578,-0.08277 z m -6.110225,7.99e-4 c 0.0025,0.0031 0.0055,0.0062 0.0081,0.0091 -5.17e-4,0.0044 -0.0012,0.0093 -0.0018,0.01375 2.58e-4,-0.0047 2.58e-4,-0.0091 6.15e-4,-0.01375 -0.0031,-0.0028 -0.0049,-0.006 -0.0073,-0.0091 z m 8.826489,0.01635 c -0.0012,0.001 -0.0018,0.0015 -0.0031,0.0023 0.0012,-5.2e-4 0.0018,-0.0015 0.0031,-0.0023 z m -8.244269,0.0049 c 0.01064,5.2e-4 0.02128,0 0.03167,7.99e-4 v 8e-4 c -0.01064,-5.2e-4 -0.02128,-8e-4 -0.03167,-0.0015 z m 8.264508,0 c 4.86e-4,0.0013 0.0012,0.0031 0.0025,0.0039 -0.0018,-7.99e-4 -0.0018,-0.0023 -0.0025,-0.0039 z m -9.000587,0.01946 c 2.53e-4,-2.55e-4 5.66e-4,0 6.15e-4,0 -0.0018,0.0018 -0.0031,0.0031 -0.0031,0.0047 3.63e-4,-0.0013 0.0012,-0.0031 0.0025,-0.0047 z m -1.87622,0.008 c 0.01845,0.01116 0.03825,0.02127 0.05922,0.02984 -0.02122,-0.0088 -0.04053,-0.01868 -0.05922,-0.02984 z m 8.407986,0.0096 c -0.02749,0.01349 -0.05449,0.02724 -0.07861,0.0358 0.02411,-0.0086 0.05111,-0.02231 0.07861,-0.0358 z m -8.167204,0.0065 c 6.15e-4,0.02932 0.0031,0.05864 0.0055,0.0877 -0.0031,-0.02906 -0.0049,-0.05838 -0.0055,-0.0877 z m 2.390275,0 c -0.0049,0.0044 -0.01039,0.0083 -0.01531,0.01219 0.0049,-0.0042 0.01039,-0.0075 0.01531,-0.01219 z m -0.814903,0.03243 c 0.0055,0.0041 0.01224,0.007 0.01943,0.0091 -0.0073,-0.0021 -0.01408,-0.0049 -0.01943,-0.0091 z m 7.517784,0.0034 c 2.95e-4,0 6.15e-4,-2.55e-4 6.15e-4,0 -0.0012,0.0065 0.0012,0.01219 0.0055,0.01868 -0.0043,-0.0065 -0.0075,-0.01219 -0.0065,-0.01868 z m -7.453696,0.0031 c -5.5e-5,2.56e-4 7.4e-5,8e-4 0,8e-4 -0.0068,0.0028 -0.01414,0.0039 -0.02189,0.0041 0.0077,-2.54e-4 0.01513,-0.0021 0.02189,-0.0049 z m 7.87298,0.0099 c 0.0073,0.0047 0.01451,0.0086 0.02103,0.01219 v 7.99e-4 c -0.0068,-0.0036 -0.01347,-0.008 -0.02103,-0.01297 z m -1.464378,0.0031 c 2.95e-4,0 6.15e-4,2.55e-4 6.15e-4,0 -0.02208,0.02361 -0.0428,0.05501 -0.05996,0.09081 0.01716,-0.0358 0.03708,-0.0672 0.05916,-0.09081 z m -6.248002,0.0034 c -0.0025,5.19e-4 -0.0055,0.0023 -0.0081,0.0041 0,-2.55e-4 -2.58e-4,-7.99e-4 0,-0.001 0.0025,-0.0015 0.0055,-0.0026 0.0081,-0.0031 z m 0.01298,0.0023 c 0.0037,0.0018 0.0068,0.0039 0.01039,0.0057 0.0037,0.0018 0.0078,0.0028 0.01218,0.0015 -0.0043,0.0013 -0.0083,2.55e-4 -0.01218,-0.0015 -0.0037,-0.0018 -0.0065,-0.0039 -0.01039,-0.0057 z m 8.512547,0.02101 c -0.0012,0.0031 -0.0031,0.0047 -0.0049,0.0067 0.0018,-0.0021 0.0037,-0.0039 0.0049,-0.0067 z m -8.548352,0.0018 c -0.0063,0.0122 -0.01175,0.02517 -0.02029,0.03477 0.0084,-0.0093 0.01408,-0.02257 0.02029,-0.03477 z m 6.038874,0.0031 c -0.0037,0.01194 -0.0068,0.02387 -0.0096,0.03659 h -6.15e-4 c 0.0031,-0.01271 0.0068,-0.02465 0.01039,-0.03659 z m 1.907794,0 c 0.03216,0.0052 0.0685,0.0078 0.103005,0.01141 -0.0345,-0.0036 -0.07083,-0.0062 -0.103005,-0.01141 z m 2.67501,0.0018 c -0.01814,0.03866 -0.03918,0.07498 -0.06331,0.108454 0.02411,-0.03347 0.04514,-0.06979 0.06331,-0.108454 z m -2.324741,0.02491 c 0.0012,0.0044 0.0037,0.0078 0.0031,0.0099 4.92e-4,-0.0021 -0.0018,-0.0055 -0.0031,-0.0099 z m -7.773092,0.0026 c 0.0065,-7.99e-4 0.0093,0.001 0.0098,0.0031 -0.0012,-0.0018 -0.0043,-0.0039 -0.0098,-0.0031 z m 7.849376,0.0065 c -4.92e-4,0.0021 -0.0018,0.0034 -0.0031,0.0039 0.0012,-7.99e-4 0.0025,-0.0021 0.0031,-0.0039 z m -0.02337,0.0015 c 0,-2.55e-4 4.92e-4,2.55e-4 6.15e-4,0 -0.0012,0.0013 -0.0018,0.0031 -0.0025,0.0049 -2.89e-4,0.0015 -4.86e-4,0.0036 -6.15e-4,0.0057 -2.95e-4,-2.55e-4 -4.92e-4,0 -6.15e-4,0 2.95e-4,-0.0021 0.0012,-0.0041 0.0018,-0.0057 4.92e-4,-0.0018 6.15e-4,-0.0036 0.0018,-0.0049 z m -1.071041,0.01219 c 0.01015,0.01245 0.02152,0.02465 0.03216,0.03632 0,0 -4.92e-4,2.55e-4 -6.15e-4,0 -0.01089,-0.01167 -0.02128,-0.02387 -0.03143,-0.03632 z m -7.746623,0.01375 c -0.0067,0.0023 -0.01291,0.0026 -0.01863,0.0015 0.0055,0.001 0.01193,8e-4 0.01863,-0.0015 z m 0.07542,0.0023 c 0.01482,0.01453 0.02995,0.02828 0.04379,0.04074 -0.01396,-0.01271 -0.02884,-0.0262 -0.04379,-0.04074 z m 6.591783,0.02127 c -0.0078,0.01894 -0.01451,0.03866 -0.02023,0.05916 -0.0055,0.01998 -0.01039,0.041 -0.01378,0.06149 0.0031,-0.02076 0.0081,-0.04125 0.01378,-0.06149 0.0055,-0.0205 0.01248,-0.04021 0.02023,-0.05916 z m -6.377728,0.0073 c -0.0025,0.0023 -0.0049,0.0044 -0.0081,0.0065 0.0031,-0.0018 0.0055,-0.0044 0.0081,-0.0065 z m 10.340164,0.01375 c 0.01427,-5.2e-4 0.02903,7.99e-4 0.04385,0.0039 -0.01507,-0.0031 -0.02934,-0.0047 -0.04385,-0.0039 z m -11.99265,0.0049 c 0.0055,0.0288 0.01144,0.05552 0.01783,0.08095 0.0064,0.02542 0.0131,0.05007 0.02189,0.07291 -0.0087,-0.02284 -0.01544,-0.04748 -0.02189,-0.07291 -0.0065,-0.02543 -0.01242,-0.05215 -0.01783,-0.08095 z m 12.107851,0.02828 c 0.01039,0.0062 0.02048,0.01219 0.02903,0.01946 -0.0085,-0.0073 -0.0187,-0.01323 -0.02903,-0.01946 z m -0.197967,0.0088 c -0.0018,0.0034 -0.0037,0.007 -0.0055,0.01064 h -6.15e-4 c 0.0018,-0.0036 0.0043,-0.0073 0.0065,-0.01064 z m -11.690904,0.02517 c 0.01119,0.06486 0.02577,0.124539 0.04379,0.182398 -0.01802,-0.05786 -0.03253,-0.117534 -0.04379,-0.182398 z m 12.007958,0.04229 c 0.01636,0.0013 0.03296,0.0049 0.05111,0.01037 -0.01814,-0.0055 -0.03475,-0.0091 -0.05111,-0.01037 z m -11.699982,0.01868 c 0.0084,0.02154 0.01796,0.04255 0.02841,0.06305 -0.01045,-0.0205 -0.01993,-0.04151 -0.02841,-0.06305 z m 11.588158,0.01453 c -0.01894,0.01375 -0.03967,0.02802 -0.05836,0.04462 0.0187,-0.01686 0.03918,-0.03088 0.05836,-0.04462 z m -9.662461,0.05682 c -0.0049,0.0041 -0.0096,0.0083 -0.01451,0.01194 0.0049,-0.0036 0.0098,-0.0078 0.01451,-0.01194 z m -2.321266,0.03243 c 0.0087,0.02672 0.01863,0.05397 0.02835,0.08017 0.0182,0.02387 0.03536,0.05007 0.05191,0.07784 0.01648,0.02776 0.03161,0.05734 0.04539,0.0877 -0.01378,-0.03036 -0.0289,-0.05994 -0.04539,-0.0877 -0.01654,-0.02776 -0.0345,-0.05397 -0.05271,-0.07784 -0.0097,-0.0262 -0.01882,-0.05345 -0.02755,-0.08017 z m 8.499054,0.0055 c -0.0031,0.01661 -0.0075,0.0314 -0.01298,0.04462 0.0055,-0.01323 0.01015,-0.02802 0.01298,-0.04462 z m -8.515142,0.05371 c 5.53e-4,8e-4 0.0012,0.0015 0.0018,0.0023 0.0018,0.0091 0.0037,0.0192 0.0065,0.02932 -0.0031,-0.0109 -0.0065,-0.02205 -0.0081,-0.03165 z m 2.014975,0.0015 c 0.0012,0.01064 -2.53e-4,0.02127 6.15e-4,0.0301 -0.0012,-0.0088 2.52e-4,-0.01946 -6.15e-4,-0.0301 z m 9.865617,0.03165 c -0.0018,0.03555 -6.15e-4,0.07317 -0.0073,0.107675 0.0065,-0.03477 0.0055,-0.07187 0.0073,-0.107675 z m -3.42484,0.02361 c -0.01402,0.01401 -0.02903,0.02699 -0.04434,0.0397 0.01531,-0.01271 0.03063,-0.02595 0.04434,-0.0397 z m -7.608335,0.02258 c 0.02694,0.02335 0.05658,0.04333 0.08917,0.06071 -0.0326,-0.01739 -0.06222,-0.03736 -0.08917,-0.06071 z m 7.53413,0.04229 c -0.01974,0.01686 -0.03893,0.03555 -0.05344,0.05812 0.01482,-0.02284 0.03346,-0.04099 0.05344,-0.05812 z m -0.385816,0.01453 c 0.01249,0.01271 0.0254,0.02569 0.03893,0.03814 0.03967,0.03684 0.08198,0.07083 0.124795,0.105341 -0.0428,-0.03451 -0.0851,-0.0685 -0.124795,-0.105341 -0.01347,-0.01245 -0.0262,-0.02517 -0.03893,-0.03814 z m -7.025076,0.02101 c 0.03413,0.01582 0.07011,0.02932 0.107833,0.04125 -0.0377,-0.01194 -0.07369,-0.02542 -0.107833,-0.04125 z m 0.261901,0.02024 c 0.01,0.0041 0.02042,0.0073 0.03081,0.01064 0.0062,0.0018 0.01236,0.0036 0.01863,0.0047 -0.0063,-10e-4 -0.01242,-0.0021 -0.01863,-0.0039 -0.01039,-0.0031 -0.02085,-0.0073 -0.03081,-0.01141 z m 7.104988,0.01064 c 0.01009,0.007 0.02208,0.01323 0.03426,0.01868 -0.01218,-0.0055 -0.02411,-0.01168 -0.03426,-0.01868 z m 0.291113,0.0096 c -0.02983,0.02205 -0.05941,0.04515 -0.08744,0.06902 v -7.99e-4 c 0.02804,-0.02387 0.05762,-0.04619 0.08744,-0.06824 z m -7.97262,0.0034 c 0.03432,0.03451 0.06892,0.06746 0.105391,0.09885 -0.03665,-0.0314 -0.07093,-0.06435 -0.105391,-0.09885 z m 1.634583,0.01868 c -2.52e-4,0 2.59e-4,5.19e-4 0,7.99e-4 -0.0065,0.0067 -0.01347,0.01167 -0.02023,0.01686 0.0068,-0.0052 0.01378,-0.01116 0.02023,-0.01764 z m -0.899174,7.99e-4 c 0.0055,0.0034 0.01162,0.0073 0.01703,0.0122 2.4e-5,2.56e-4 -3.1e-5,5.2e-4 0,8e-4 -0.0055,-0.0049 -0.01138,-0.0096 -0.01703,-0.01297 z m 10.451472,8e-4 c -0.0093,0.01583 -0.01919,0.0301 -0.03007,0.04307 -0.0075,0.0086 -0.01556,0.01609 -0.02362,0.02413 0.0081,-0.0078 0.01636,-0.01557 0.02362,-0.02413 0.01089,-0.01297 0.02072,-0.02725 0.03007,-0.04307 z m -10.617527,0.0023 c 0.02454,0.0052 0.05049,0.0086 0.07377,0.01479 -0.02331,-0.0062 -0.0492,-0.0096 -0.07377,-0.01479 z m 7.196579,0.0026 c 0.01685,0.0065 0.03321,0.01349 0.04699,0.02257 -0.01378,-0.0091 -0.03007,-0.01609 -0.04699,-0.02257 z m 0.655134,0.0015 c 0.0049,0.0026 0.0096,0.0062 0.01378,0.01064 -0.0043,-0.0041 -0.0089,-0.008 -0.01378,-0.01064 z m -0.03555,0.0023 c 0.01402,0.01998 0.02442,0.03814 0.03167,0.05604 -0.0073,-0.0179 -0.01765,-0.03606 -0.03167,-0.05604 z m -8.45443,7.99e-4 c 0.02571,0.02569 0.05166,0.05189 0.07864,0.07706 -0.02712,-0.02542 -0.05283,-0.05137 -0.07864,-0.07706 z m 7.900488,0.03347 c 0.0031,0.0028 0.0055,0.0055 0.0083,0.0088 -0.0025,-0.0034 -0.0055,-0.006 -0.0083,-0.0088 z m -6.260197,0.0039 c -0.0075,0.0055 -0.01507,0.01168 -0.02257,0.01868 -0.0073,0.0065 -0.01476,0.01245 -0.02282,0.01868 0.0081,-0.0062 0.01556,-0.01297 0.02282,-0.01946 0.0075,-0.007 0.01507,-0.01245 0.02257,-0.0179 z m -0.715065,0.0023 c 0.01101,-2.55e-4 0.02269,10e-4 0.03407,0.0018 -0.01132,-8e-4 -0.02306,-0.0021 -0.03407,-0.0018 z m -0.01624,0.0026 c -0.0078,0.0018 -0.01519,0.0044 -0.02189,0.0096 0.0067,-0.0052 0.01414,-0.0078 0.02189,-0.0096 z m 0.797708,0.02439 c -0.0195,0.0088 -0.04022,0.02361 -0.0607,0.04048 0.02048,-0.01686 0.04127,-0.03165 0.0607,-0.04048 z m -1.53148,0.0023 c 0.02749,0.02361 0.05578,0.04619 0.08593,0.0672 -0.03001,-0.02076 -0.05861,-0.04385 -0.08593,-0.0672 z m 7.56579,0.01375 c 0.0018,7.99e-4 0.0049,0.001 0.0073,7.99e-4 v 8e-4 c -0.0025,2.55e-4 -0.0049,-8e-4 -0.0073,-0.0015 z m -8.136596,0.01219 c 0.0037,0.01557 0.0079,0.03087 0.01052,0.04619 0.01913,0.02491 0.03819,0.0493 0.05836,0.07291 -0.02017,-0.02361 -0.04004,-0.048 -0.05916,-0.07291 -0.0025,-0.01531 -0.0055,-0.03061 -0.0097,-0.04619 z m 8.125175,7.99e-4 c -0.0171,0.001 -0.03192,0.0078 -0.04957,0.01453 0.0179,-0.0067 0.03192,-0.01375 0.04957,-0.01453 z m 6.15e-4,0 c 0.0031,0 0.007,-2.54e-4 0.01064,0 0,2.56e-4 -2.95e-4,8e-4 0,8e-4 -0.0037,-2.55e-4 -0.007,-8e-4 -0.01064,-8e-4 z m 0.769553,0.01141 c 0.0025,0.01686 0.0025,0.03373 0.0018,0.05111 -0.0012,0.01712 -0.0025,0.03477 -0.0049,0.05345 -0.0012,0.01168 -0.0043,0.02335 -0.0073,0.03477 -0.0055,0.02257 -0.01377,0.04437 -0.02257,0.06175 0.0089,-0.01764 0.01685,-0.03892 0.02257,-0.06175 0.0031,-0.01141 0.0049,-0.02309 0.0065,-0.03477 0.0025,-0.01868 0.0049,-0.03632 0.0055,-0.05345 0.0012,-0.01739 6.15e-4,-0.03425 -0.0018,-0.05111 z m -6.955022,0.0041 c -0.02675,0.01739 -0.05578,0.03373 -0.08614,0.0493 0.03038,-0.01557 0.05941,-0.03191 0.08614,-0.0493 z m 9.583588,0.01842 c 2.89e-4,0 6.15e-4,2.55e-4 6.15e-4,0 -0.0083,0.0091 -0.01636,0.01816 -0.02441,0.02854 h -6.15e-4 c 0.0081,-0.01038 0.01611,-0.01946 0.02441,-0.02854 z m -0.322767,0.0026 c 0.0075,0.008 0.01482,0.01583 0.02208,0.02413 -0.0073,-0.008 -0.01451,-0.01635 -0.02208,-0.02413 z m 0.255567,0.03633 c -0.01242,0.0055 -0.02282,0.01297 -0.03241,0.0205 0.0096,-0.0075 0.01999,-0.01505 0.03241,-0.0205 z m -9.520539,0.01064 c -0.01716,0.0049 -0.03296,0.01375 -0.04877,0.02361 -0.02337,0.01479 -0.04569,0.03295 -0.06953,0.0493 -0.01611,0.01116 -0.03321,0.02154 -0.05111,0.02932 0.0179,-0.0078 0.03505,-0.01816 0.05111,-0.02932 0.02386,-0.01635 0.04619,-0.03451 0.06953,-0.0493 0.01581,-0.0099 0.03167,-0.01868 0.04877,-0.02361 z m 8.878382,0.0023 c -0.01322,0.0099 -0.02571,0.02127 -0.03659,0.03347 0.01089,-0.01219 0.02337,-0.02361 0.03659,-0.03347 z m 0.429658,0 c 0.01378,0.01712 0.02774,0.03373 0.04207,0.05034 h -6.15e-4 c -0.01427,-0.0166 -0.02749,-0.03321 -0.04127,-0.05034 z m -1.907794,0.01946 c -0.02386,0.0031 -0.04668,0.008 -0.06823,0.01635 0.02152,-0.0083 0.04434,-0.01324 0.06823,-0.01635 z m 2.048941,0.01635 c -0.0068,0.0041 -0.01347,0.0086 -0.02128,0.01141 0.0081,-0.0031 0.01451,-0.0073 0.02128,-0.01141 z m -10.739215,0.0039 c 0.03063,0.02231 0.06266,0.04333 0.09569,0.06253 0.03302,0.0192 0.0672,0.03659 0.102956,0.05189 -0.03573,-0.01529 -0.06995,-0.03267 -0.10295,-0.05187 -0.03303,-0.0192 -0.06505,-0.04021 -0.09569,-0.06253 z m 0.180821,0.01064 c 0.0018,0.0049 0.0018,0.01141 0.0031,0.01712 -0.0012,-0.0057 -0.0012,-0.01219 -0.0031,-0.01712 z m -0.590271,7.99e-4 c 0.04871,0.05864 0.09862,0.114681 0.145114,0.173577 -0.04649,-0.0589 -0.09641,-0.11494 -0.145114,-0.173577 z m 11.068206,0 c 0.01218,0.0018 0.02282,0.0026 0.03241,0.0015 -0.0093,10e-4 -0.02048,2.55e-4 -0.03241,-0.0015 z m -11.11283,0.0026 c 0.02017,0.01609 0.03856,0.03295 0.05597,0.05007 -0.0174,-0.01712 -0.03579,-0.03399 -0.05597,-0.05007 z m 11.051337,0.0057 c -0.06927,0.01556 -0.130766,0.03866 -0.187327,0.06798 0.05658,-0.02932 0.118312,-0.05241 0.187327,-0.06798 z m -1.657412,0.0055 c 0.02072,0.01012 0.04071,0.0218 0.05763,0.03425 -0.01716,-0.01271 -0.03659,-0.02387 -0.05763,-0.03425 z m -8.753323,0.0083 c 6.15e-4,0.0015 0.0018,0.0028 0.0031,0.0039 0.0025,0.0023 0.0062,0.0026 0.01218,0.0015 0.0107,0.0057 0.02196,0.01141 0.03321,0.01635 -0.0115,-0.0049 -0.02232,-0.0096 -0.03321,-0.01531 -0.0055,7.99e-4 -0.0095,-5.2e-4 -0.01218,-0.0026 -0.0018,-0.001 -0.0025,-0.0023 -0.0031,-0.0039 z m 7.468227,7.99e-4 c 0.0031,0.0086 0.0073,0.0166 0.01218,0.02335 -0.0049,-0.0067 -0.0091,-0.01453 -0.01218,-0.02335 z m 0.890203,0.0096 c -0.0065,0.0055 -0.01347,0.01141 -0.0195,0.0179 -0.0055,0.0065 -0.01064,0.01298 -0.01298,0.02024 0.0025,-0.007 0.0075,-0.01401 0.01298,-0.02024 0.0062,-0.0065 0.01273,-0.01245 0.0195,-0.0179 z m -9.059744,0.01868 c 0.01076,0.01141 0.02214,0.02309 0.03327,0.03399 -0.01125,-0.0109 -0.02238,-0.02257 -0.03327,-0.03399 z m 8.190556,0.0049 c 0.0031,0.0028 0.0068,0.0049 0.01064,0.0073 v 7.99e-4 c -0.0037,-0.0023 -0.0073,-0.0052 -0.01064,-0.008 z m -6.805831,0.02828 c -0.0012,0.0015 -0.0031,0.0028 -0.0065,0.0041 0.0031,-10e-4 0.0049,-0.0028 0.0065,-0.0041 z m 0.117506,0.0065 c -0.02208,0.007 -0.0436,0.01453 -0.06409,0.02439 0.02048,-0.0099 0.04206,-0.01739 0.06409,-0.02439 z m -0.560197,8e-4 c 0.02761,0.0034 0.05566,0.0052 0.08433,0.0065 -0.02872,-0.0013 -0.0567,-0.0031 -0.08433,-0.0065 z m 0.348634,0.0018 c -0.05879,0.0031 -0.118024,0.0062 -0.176743,0.0065 0.05873,-2.55e-4 0.117925,-0.0034 0.176743,-0.0065 z m 9.055856,7.99e-4 c 0.04901,0.0467 0.08043,0.113902 0.08432,0.204193 4.92e-4,0.01505 6.15e-4,0.03087 0,0.04722 -2.96e-4,-2.94e-4 -4.92e-4,-7.99e-4 -6.15e-4,-0.001 6.15e-4,-0.01583 0.0012,-0.03139 6.15e-4,-0.04619 -0.0043,-0.09003 -0.03579,-0.157751 -0.08432,-0.204193 z m -1.629916,0.0039 c 0,2.55e-4 2.96e-4,7.99e-4 0,0.001 -0.0031,0.0044 -0.01298,0.0088 -0.02257,0.01453 0.0096,-0.0057 0.01919,-0.0109 0.02257,-0.01557 z m -0.522805,0.0057 c 0.01248,0.01168 0.0254,0.02257 0.03967,0.03243 -0.01427,-0.0099 -0.02724,-0.02076 -0.03967,-0.03243 z m 0.479996,0.02517 c 0,0 6.15e-4,2.55e-4 6.15e-4,0 -0.0018,0.0021 -0.0031,0.0036 -0.0043,0.0057 4.92e-4,-7.99e-4 0.0081,0.01686 0.0098,0.03165 -0.0018,-0.01479 -0.0093,-0.03243 -0.0098,-0.03165 0.0012,-0.0021 0.0018,-0.0036 0.0031,-0.0057 z m -7.264819,0.0023 c -0.0096,0.0062 -0.01826,0.01349 -0.02675,0.02127 0.0085,-0.0078 0.01716,-0.01505 0.02675,-0.02127 z m 9.166125,0.0091 c -0.0025,0.01712 -0.0037,0.03555 -0.0043,0.05345 2.95e-4,-0.01842 0.0018,-0.03606 0.0043,-0.05345 z m -0.244928,0.0023 c 0.0068,0.0065 0.01298,0.01297 0.0187,0.02024 -0.0055,-0.0073 -0.01218,-0.01401 -0.0187,-0.02024 z m -2.023769,0.0049 c 0.0031,5.19e-4 0.0055,0.0021 0.0091,0.0034 -0.0073,-0.0028 -0.01402,-0.0039 -0.01943,-0.0026 0.0031,-7.99e-4 0.0068,-0.0013 0.01039,-7.99e-4 z m -6.978638,0.0073 c -0.05258,0.0036 -0.101345,0.0099 -0.152426,0.01375 0.05111,-0.0039 0.09981,-0.01012 0.152426,-0.01375 z m 9.470208,0.0023 c -0.01943,0.01531 -0.03838,0.03088 -0.05658,0.04722 0.01814,-0.01635 0.03708,-0.03217 0.05658,-0.04722 z m -1.247735,0.0026 c 0,2.54e-4 6.15e-4,5.19e-4 6.15e-4,7.99e-4 0.0018,0.006 0.0025,0.01168 0.0031,0.0179 -0.0012,-0.0062 -0.0025,-0.01271 -0.0043,-0.01868 z m -0.830265,0.0088 c 0,0 6.15e-4,2.55e-4 6.15e-4,0 0.0174,0.0096 0.0345,0.02076 0.05191,0.03165 -0.0174,-0.0109 -0.0353,-0.02127 -0.05264,-0.03087 z m 1.654048,0.04462 c 0.0049,0.01686 0.0075,0.03269 0.01064,0.04877 -0.0031,-0.01609 -0.0055,-0.03191 -0.01064,-0.04877 z m -0.587933,0.03814 c -0.0098,0.01816 -0.01894,0.03632 -0.02491,0.05526 0.0062,-0.01894 0.01507,-0.0371 0.02491,-0.05526 z m -0.230142,0.0034 c 6.15e-4,0.01972 0.0043,0.0397 0.01377,0.05993 -0.0093,-0.02024 -0.01298,-0.04021 -0.01377,-0.05993 z m 1.130978,7.99e-4 c 2.95e-4,-2.94e-4 6.15e-4,0 6.15e-4,0 -0.0174,0.01739 -0.0345,0.0358 -0.05111,0.05422 0,-2.94e-4 -4.92e-4,-4.9e-4 -6.15e-4,-7.99e-4 0.0166,-0.01843 0.03376,-0.03606 0.05111,-0.05345 z m -1.831511,0.05656 c -0.0018,0.01012 -4.92e-4,0.0192 0.0031,0.02776 -0.0031,-0.0083 -0.0049,-0.0179 -0.0031,-0.02776 z m 0.707021,0.01141 c -0.0065,0.0088 -0.01113,0.0179 -0.01378,0.0275 0.0025,-0.0096 0.0073,-0.01868 0.01378,-0.0275 z m 1.038612,0.0065 c -0.01015,0.0088 -0.02177,0.01686 -0.03475,0.02361 0.01298,-0.0067 0.02466,-0.01479 0.03475,-0.02361 z m -1.052363,0.02179 c -0.0037,0.01297 -0.0043,0.02672 -0.0031,0.04074 -0.0012,-0.01401 -2.96e-4,-0.02776 0.0031,-0.04074 z m -0.77344,0.0067 c 0.0065,0.0067 0.01322,0.01297 0.02103,0.01842 -0.0078,-0.0055 -0.01482,-0.01141 -0.02103,-0.01842 z m -8.284225,0.0047 c 0.0073,0.0086 0.01002,0.02127 0.01624,0.03087 -0.0062,-0.0096 -0.0089,-0.02231 -0.01624,-0.03087 z m 10.016881,0.0122 c -0.04207,0.0122 -0.08847,0.01972 -0.130766,0.02517 0.04231,-0.0055 0.08873,-0.01298 0.130766,-0.02517 z m -1.368642,0.09574 c 0.02571,0.0036 0.05215,0.0057 0.0794,0.0073 -0.02724,-0.0015 -0.05369,-0.0036 -0.0794,-0.0073 z m 0.618548,0.0065 c 0.01482,-2.94e-4 0.02983,0.0013 0.04699,0.0065 -0.01716,-0.0052 -0.03216,-0.0067 -0.04699,-0.0065 z m 0,0 c -0.02208,2.94e-4 -0.04256,0.0044 -0.0672,0.008 0.02411,-0.0034 0.04539,-0.0078 0.0672,-0.008 z m -0.26179,7.99e-4 c -0.04723,0 -0.100152,0.0021 -0.154118,0.0023 0.05449,-2.94e-4 0.106892,-0.0023 0.154118,-0.0023 z" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="73.163963" + y="30.08935" + id="text6641"><tspan + sodipodi:role="line" + id="tspan6639" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="73.163963" + y="30.08935">Farmer</tspan></text> + <g + id="g20748" + transform="translate(33.763864,-9.8749511)"> + <path + d="m 21.677551,59.233303 -2.098905,-0.66097 -0.360479,-0.90155 -0.06369,0.46667 -0.839494,-0.53621 0.327341,-0.37702 -0.488348,-1.21654 1.896754,1.47761 0.09433,0.75622 z m -10.380146,-0.99456 -0.02956,0.0295 -0.06769,-0.0377 z m 11.003754,2.62282 c -1.012697,-0.081 -2.045257,-0.39522 -3.118963,-0.99918 -0.992493,-0.55831 -2.047012,-0.9591 -3.128447,-1.20237 l 0.957754,-0.67304 -0.981868,-1.52118 0.663797,-0.80202 -0.414896,-0.99569 -1.880678,0.88504 1.901435,-1.81847 6.365701,5.31045 -0.09202,0.45942 0.296667,-0.0775 -0.337812,0.28281 -0.09917,0.49506 -0.04687,0.23415 0.350777,-0.12005 -0.409692,0.41407 z m 1.02212,-0.0641 -0.337812,-0.18804 0.369256,0.031 z M 9.1668722,59.590103 c 7.6798988,-1.92007 7.7635428,4.80676 13.6361228,3.33857 -5.668766,2.62662 -6.305185,-4.17874 -13.6361228,-3.33857 m 16.1832158,-0.80774 -4.950611,-4.50147 -1.382876,1.24456 -2.682723,-2.32323 -3.813033,3.81307 -0.01398,-0.0698 -0.375169,-0.14431 0.346897,0.019 -0.09935,-0.51182 -0.247546,-0.0906 h 0.229407 l -0.229407,-1.14518 -0.178376,0.8907 0.178376,-0.0472 -0.193497,0.12264 -0.103139,0.51486 0.296636,-0.0774 -0.33775,0.28278 -0.0992,0.49506 -0.0469,0.23415 0.350809,-0.12005 -0.409692,0.41416 -0.03825,0.19091 -0.02947,-0.14718 -0.06181,-0.30849 -0.375169,-0.14435 0.346897,0.019 -0.09935,-0.51181 -0.247546,-0.0906 h 0.229376 l -0.229376,-1.14518 -0.178407,0.89071 0.178407,-0.0472 -0.193528,0.12263 -0.103108,0.51486 0.296636,-0.0774 -0.337781,0.28272 -0.09917,0.49506 -0.0469,0.23418 0.350808,-0.12005 -0.409723,0.41413 -0.0874,0.43633 c -0.049,0.0135 -0.09793,0.0274 -0.14681,0.0415 l -0.4313108,-0.24012 0.4089528,0.0343 -0.08786,-0.43883 -0.06184,-0.30852 -0.3751378,-0.14432 0.3468658,0.019 -0.09932,-0.51181 -0.2475458,-0.0906 h 0.229407 l -0.229407,-1.14516 -0.178407,0.89071 0.178407,-0.0472 -0.193497,0.12266 -0.103139,0.51487 0.296636,-0.0775 -0.337781,0.28278 -0.09913,0.49506 -0.0469,0.23418 0.350777,-0.12008 -0.409692,0.41419 -0.107142,0.53476 c -0.429495,0.17702 -0.85092,0.38081 -1.2616899,0.61187 1.9391609,-0.60944 3.5902477,-0.96862 5.1902727,-0.89862 l 0.03813,-0.19048 0.204861,-0.20708 -0.175419,0.06 0.02347,-0.11705 0.04958,-0.24752 0.16889,-0.14139 -0.148318,0.0387 0.05155,-0.2574 0.09676,-0.0614 -0.08919,0.0236 0.08919,-0.44536 0.114688,0.57258 h -0.114688 l 0.123773,0.0453 0.04968,0.25589 -0.173449,-0.009 0.187554,0.0721 0.03092,0.15427 0.04395,0.21942 -0.204491,-0.0172 0.226296,0.12599 0.03536,0.17656 c 0.15306,0.0178 0.305906,0.04 0.458751,0.0664 l 0.40963,-0.41404 -0.350746,0.11999 0.04687,-0.23415 0.09917,-0.49506 0.337781,-0.28275 -0.296667,0.0775 0.103139,-0.51487 0.193528,-0.12263 -0.178407,0.0471 0.178407,-0.89071 0.229376,1.14518 h -0.229376 l 0.247546,0.0906 0.09932,0.51181 -0.346866,-0.019 0.375138,0.14429 0.06178,0.30852 0.08793,0.43886 -0.409015,-0.0343 0.452623,0.25198 0.03027,0.15106 c 0.979651,0.31108 1.981445,0.81316 3.059462,1.54764 2.787864,1.89965 7.202947,1.18072 9.286146,-1.49541 -0.892188,0.50193 -1.770456,0.89961 -2.649401,1.15427 l -0.01528,-0.0762 -0.226327,-0.12599 0.204553,0.0171 -0.04401,-0.2194 -0.03089,-0.15423 -0.187553,-0.0722 0.173448,0.01 -0.04971,-0.25598 -0.123742,-0.0453 h 0.114718 l -0.114718,-0.57254 -0.08922,0.44538 0.08922,-0.0236 -0.09676,0.0613 -0.05156,0.25755 0.148319,-0.0388 -0.168922,0.14139 -0.04955,0.24751 -0.02344,0.11703 0.175388,-0.06 -0.204892,0.20708 -0.05962,0.29784 h 3.08e-4 c -0.01799,0.004 -0.03603,0.007 -0.05402,0.0111 l -0.02063,-0.10326 -0.3594,-0.20015 0.324754,0.0272 -0.06982,-0.34844 -0.04906,-0.24502 -0.297929,-0.1146 0.275478,0.0151 -0.0789,-0.40649 -0.196577,-0.0719 h 0.182133 l -0.182133,-0.90937 -0.141666,0.70735 0.141666,-0.0374 -0.153708,0.0974 -0.08186,0.40886 0.235566,-0.0615 -0.268211,0.22455 -0.07878,0.39318 -0.0372,0.18592 0.278589,-0.0953 -0.325401,0.32884 -0.0027,0.0132 -0.06766,-0.33803 -0.06184,-0.30853 -0.375107,-0.14431 0.346866,0.019 -0.09935,-0.51178 -0.247515,-0.0906 h 0.229375 l -0.229375,-1.14521 -0.178407,0.89071 0.178407,-0.0472 -0.193559,0.12266 -0.01004,0.05 -1.648099,-1.56032 2.161145,0.25872 -2.005128,-1.13394 0.117521,0.4909 -1.085531,-0.94725 -0.554099,0.0383 -0.303319,-0.28718 1.770055,0.2351 -0.138278,-0.77439 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.031;stroke-miterlimit:4;stroke-dasharray:none" + id="path2776" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="8.5691204" + y="66.894287" + id="text8379"><tspan + sodipodi:role="line" + id="tspan8377" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="8.5691204" + y="66.894287">landscape</tspan></text> + </g> + <g + id="g20758" + transform="translate(-17.191961,-9.9021151)"> + <g + id="g1709" + transform="matrix(0.03759233,0,0,0.03759233,20.02845,40.979859)"> + <path + d="M 575.833,400 H 424.167 C 411.067,400 400,411.066 400,424.167 v 151.667 c 0,13.1 11.067,24.166 24.167,24.166 H 575.833 C 588.933,600 600,588.934 600,575.842 V 424.167 C 600,411.067 588.933,400 575.833,400 Z m -151.666,8.333 h 151.666 c 8.584,0 15.834,7.25 15.834,15.833 V 450 H 408.333 v -25.833 c 0,-8.584 7.25,-15.834 15.834,-15.834 z M 575.833,591.667 H 424.167 c -8.583,0 -15.833,-7.25 -15.833,-15.834 v -117.5 h 183.333 v 117.5 c 0,8.584 -7.25,15.834 -15.834,15.834 z" + id="path1699" /> + + <path + d="m 462.5,434.167 h 0.833 c 2.3,0 4.167,-1.867 4.167,-4.167 0,-2.3 -1.867,-4.167 -4.167,-4.167 H 462.5 c -2.3,0 -4.167,1.858 -4.167,4.167 0,2.308 1.867,4.167 4.167,4.167 z" + id="path1701" /> + + <path + d="m 537.5,434.167 c 2.3,0 4.167,-1.867 4.167,-4.167 0,-2.3 -1.867,-4.167 -4.167,-4.167 h -0.833 c -2.3,0 -3.75,1.867 -3.75,4.167 0,2.3 2.283,4.167 4.583,4.167 z" + id="path1703" /> + + <path + d="m 536.016,483.6 -17.5,6.667 c -2.158,0.825 -3.233,3.225 -2.408,5.383 0.816,2.15 3.233,3.225 5.375,2.408 l 11.85,-4.517 v 68.125 c 0,2.3 1.867,4.166 4.167,4.166 2.3,0 4.167,-1.866 4.167,-4.166 V 487.5 c 0,-1.375 -0.675,-2.65 -1.809,-3.434 -1.125,-0.783 -2.566,-0.941 -3.842,-0.466 z" + id="path1705" /> + + <path + d="m 479.366,519.45 23.867,-29.325 c 1.017,-1.242 1.217,-2.967 0.533,-4.417 -0.691,-1.45 -2.158,-2.375 -3.767,-2.375 h -44.167 c -2.3,0 -4.167,1.867 -4.167,4.167 0,2.3 1.866,4.167 4.167,4.167 h 35.4 L 467.6,520.7 c -1.05,1.291 -1.233,3.083 -0.458,4.558 0.767,1.483 2.342,2.467 4.008,2.226 4.175,-0.275 16.15,0.149 21.725,6.066 2.684,2.842 3.667,6.684 2.992,11.733 -1.208,9.066 -7.458,12.108 -12.483,13.059 -10.2,1.934 -23.167,-3.009 -27.25,-10.367 -1.117,-2 -3.65,-2.725 -5.667,-1.616 -2.017,1.125 -2.742,3.649 -1.617,5.675 4.958,8.925 17.708,15.075 29.875,15.075 2.1,-0.009 4.183,-0.184 6.208,-0.566 10.767,-2.042 17.75,-9.384 19.191,-20.142 1.017,-7.608 -0.733,-13.851 -5.2,-18.575 -5.291,-5.618 -13.357,-7.668 -19.558,-8.376 z" + id="path1707" /> + +</g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="28.529495" + y="66.894287" + id="text17145"><tspan + sodipodi:role="line" + id="tspan17143" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="28.529495" + y="66.894287">scheduling</tspan></text> + </g> + <g + id="g20772" + transform="translate(24.875916,-9.0367501)"> + <g + id="g2810" + transform="matrix(1.2503212,0,0,1.2503212,-11.47161,-11.896543)"> + <path + d="m 49.989548,60.329899 h 5.689704 c 0.110127,0 0.21638,-0.04023 0.29922,-0.112792 0.304778,-0.266968 0.497239,-0.659004 0.497239,-1.096007 0,-0.804415 -0.652109,-1.456524 -1.456524,-1.456524 -0.01952,0 -0.03894,4.34e-4 -0.05828,0.0012 1e-6,-3.26e-4 1.1e-5,-7.12e-4 1.1e-5,-0.0012 0,-0.804416 -0.652109,-1.456524 -1.456524,-1.456524 -0.265307,0 -0.514021,0.07097 -0.728263,0.194905 -0.214241,-0.123937 -0.462956,-0.194905 -0.728262,-0.194905 -0.804416,0 -1.456524,0.652108 -1.456524,1.456524 0,4.34e-4 1e-5,9.25e-4 1e-5,0.0013 -0.7774,0.03059 -1.398279,0.670364 -1.398279,1.455263 0,0.437003 0.192462,0.82904 0.497238,1.096007 0.08284,0.07256 0.189094,0.112792 0.299222,0.112792 z" + id="path1457" + style="stroke-width:0.00284477" /> + <circle + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path2323" + cx="55.451946" + cy="57.113873" + r="1.9020891" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 55.451946,53.244022 v 1.416725" + id="path2438" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 57.663643,53.64691 -0.708362,1.226919" + id="path2771" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 59.276569,55.206144 -1.317334,0.521287" + id="path2773" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 59.503811,57.113872 -1.416724,10e-7" + id="path2775" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 53.431898,53.64691 0.708362,1.226919" + id="path2777" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 51.919701,55.206144 1.317334,0.521287" + id="path2779" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 57.807403,58.410821 1.317334,0.521287" + id="path2799" + sodipodi:nodetypes="cc" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="49.393562" + y="66.894287" + id="text17149"><tspan + sodipodi:role="line" + id="tspan17147" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="49.393562" + y="66.894287">weather</tspan></text> + </g> + <g + id="g20786" + transform="translate(-37.205577,5.1853828)"> + <g + id="g2298" + transform="matrix(0.04783691,0,0,0.04783691,40.809767,46.207054)"> + <rect + id="rect2296" + style="fill:#ffffff;stroke:#000000;stroke-width:3.75;stroke-linecap:round;stroke-linejoin:round" + height="146" + width="110" + y="180.36" + x="648" /> + <rect + id="rect2294" + style="fill:#ffffff;stroke:#000000;stroke-width:3.75;stroke-linecap:round;stroke-linejoin:round" + height="146" + width="110" + y="198.36" + x="634" /> + <rect + id="rect2280" + style="fill:#ffffff;stroke:#000000;stroke-width:3.75;stroke-linecap:round;stroke-linejoin:round" + height="146" + width="110" + y="214.36" + x="620" /> + <path + id="path2282" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,258.36 h 77.5" /> + <path + id="path2284" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,278.36 h 77.5" /> + <path + id="path2286" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,298.36 h 77.5" /> + <path + id="path2288" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,318.36 h 77.5" /> + <path + id="path2290" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,338.36 h 77.5" /> + <path + id="path2292" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,238.36 h 77.5" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="67.694382" + y="66.894287" + id="text17153"><tspan + sodipodi:role="line" + id="tspan17151" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="67.694382" + y="66.894287">output</tspan></text> + </g> + <g + id="g65798"> + <g + id="g2299" + transform="matrix(0.74874537,0,0,0.74874537,30.945366,-5.3407431)"> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect1783" + width="6.5330334" + height="6.5330334" + x="42.346821" + y="92.094666" /> + <path + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 43.954613,94.209431 2.385742,2.385741 5.336779,-5.336779" + id="path1898" + sodipodi:nodetypes="ccc" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="58.121754" + y="72.052505" + id="text17157"><tspan + sodipodi:role="line" + id="tspan17155" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="58.121754" + y="72.052505">settings</tspan></text> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="6.9151421" + y="41.859329" + id="text26339"><tspan + sodipodi:role="line" + id="tspan26337" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.29167px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="6.9151421" + y="41.859329">core</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="6.9275904" + y="8.6859665" + id="text45985"><tspan + sodipodi:role="line" + id="tspan45983" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.29167px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="6.9275904" + y="8.6859665">nature</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="38.199078" + y="8.6859665" + id="text49203"><tspan + sodipodi:role="line" + id="tspan49201" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.29167px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="38.199078" + y="8.6859665">crop</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="69.25985" + y="8.6859665" + id="text54823"><tspan + sodipodi:role="line" + id="tspan54821" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.29167px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="69.25985" + y="8.6859665">farm</tspan></text> + </g> +</svg> diff --git a/docs/build/assets/model_object.png b/docs/build/assets/model_object.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d84bf9964495dd987ca937bc11fd8776a664cb GIT binary patch literal 92007 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 C?2u*v literal 0 HcmV?d00001 diff --git a/docs/build/assets/model_object.svg b/docs/build/assets/model_object.svg new file mode 100644 index 0000000..9379036 --- /dev/null +++ b/docs/build/assets/model_object.svg @@ -0,0 +1,423 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="100mm" + height="80mm" + viewBox="0 0 100 80" + version="1.1" + id="svg5" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="model_object.svg" + inkscape:export-filename="/home/xo30xoqa/Documents/Promotion/Persephone/docs/src/assets/model_object.png" + inkscape:export-xdpi="300" + inkscape:export-ydpi="300" + 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="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.8" + inkscape:cx="163.61111" + inkscape:cy="143.61111" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + width="100mm" + height="160px" + units="px" /> + <defs + id="defs2"> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath2682"> + <path + d="M 0,660 H 660 V 0 H 0 Z" + id="path2680" + inkscape:connector-curvature="0" /> + </clipPath> + <radialGradient + id="sea"> + <stop + stop-color="#1c546f" + offset=".5" + id="stop3412" /> + <stop + stop-color="#123a51" + offset="1" + id="stop3414" /> + </radialGradient> + <radialGradient + id="land" + gradientUnits="userSpaceOnUse" + cy="-68" + cx="330" + r="1036"> + <stop + stop-color="#eaeaec" + offset=".13" + id="stop3417" /> + <stop + stop-color="#777c41" + offset=".18" + id="stop3419" /> + <stop + stop-color="#9a8d5a" + offset=".27" + id="stop3421" /> + <stop + stop-color="#d1b387" + offset=".37" + id="stop3423" /> + <stop + stop-color="#d3b58d" + offset=".4" + id="stop3425" /> + <stop + stop-color="#d1b287" + offset=".42" + id="stop3427" /> + <stop + stop-color="#b68d64" + offset=".51" + id="stop3429" /> + <stop + stop-color="#968655" + offset=".59" + id="stop3431" /> + </radialGradient> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g20748" + transform="translate(11.497326,-49.185253)"> + <path + d="m 21.677551,59.233303 -2.098905,-0.66097 -0.360479,-0.90155 -0.06369,0.46667 -0.839494,-0.53621 0.327341,-0.37702 -0.488348,-1.21654 1.896754,1.47761 0.09433,0.75622 z m -10.380146,-0.99456 -0.02956,0.0295 -0.06769,-0.0377 z m 11.003754,2.62282 c -1.012697,-0.081 -2.045257,-0.39522 -3.118963,-0.99918 -0.992493,-0.55831 -2.047012,-0.9591 -3.128447,-1.20237 l 0.957754,-0.67304 -0.981868,-1.52118 0.663797,-0.80202 -0.414896,-0.99569 -1.880678,0.88504 1.901435,-1.81847 6.365701,5.31045 -0.09202,0.45942 0.296667,-0.0775 -0.337812,0.28281 -0.09917,0.49506 -0.04687,0.23415 0.350777,-0.12005 -0.409692,0.41407 z m 1.02212,-0.0641 -0.337812,-0.18804 0.369256,0.031 z M 9.1668722,59.590103 c 7.6798988,-1.92007 7.7635428,4.80676 13.6361228,3.33857 -5.668766,2.62662 -6.305185,-4.17874 -13.6361228,-3.33857 m 16.1832158,-0.80774 -4.950611,-4.50147 -1.382876,1.24456 -2.682723,-2.32323 -3.813033,3.81307 -0.01398,-0.0698 -0.375169,-0.14431 0.346897,0.019 -0.09935,-0.51182 -0.247546,-0.0906 h 0.229407 l -0.229407,-1.14518 -0.178376,0.8907 0.178376,-0.0472 -0.193497,0.12264 -0.103139,0.51486 0.296636,-0.0774 -0.33775,0.28278 -0.0992,0.49506 -0.0469,0.23415 0.350809,-0.12005 -0.409692,0.41416 -0.03825,0.19091 -0.02947,-0.14718 -0.06181,-0.30849 -0.375169,-0.14435 0.346897,0.019 -0.09935,-0.51181 -0.247546,-0.0906 h 0.229376 l -0.229376,-1.14518 -0.178407,0.89071 0.178407,-0.0472 -0.193528,0.12263 -0.103108,0.51486 0.296636,-0.0774 -0.337781,0.28272 -0.09917,0.49506 -0.0469,0.23418 0.350808,-0.12005 -0.409723,0.41413 -0.0874,0.43633 c -0.049,0.0135 -0.09793,0.0274 -0.14681,0.0415 l -0.4313108,-0.24012 0.4089528,0.0343 -0.08786,-0.43883 -0.06184,-0.30852 -0.3751378,-0.14432 0.3468658,0.019 -0.09932,-0.51181 -0.2475458,-0.0906 h 0.229407 l -0.229407,-1.14516 -0.178407,0.89071 0.178407,-0.0472 -0.193497,0.12266 -0.103139,0.51487 0.296636,-0.0775 -0.337781,0.28278 -0.09913,0.49506 -0.0469,0.23418 0.350777,-0.12008 -0.409692,0.41419 -0.107142,0.53476 c -0.429495,0.17702 -0.85092,0.38081 -1.2616899,0.61187 1.9391609,-0.60944 3.5902477,-0.96862 5.1902727,-0.89862 l 0.03813,-0.19048 0.204861,-0.20708 -0.175419,0.06 0.02347,-0.11705 0.04958,-0.24752 0.16889,-0.14139 -0.148318,0.0387 0.05155,-0.2574 0.09676,-0.0614 -0.08919,0.0236 0.08919,-0.44536 0.114688,0.57258 h -0.114688 l 0.123773,0.0453 0.04968,0.25589 -0.173449,-0.009 0.187554,0.0721 0.03092,0.15427 0.04395,0.21942 -0.204491,-0.0172 0.226296,0.12599 0.03536,0.17656 c 0.15306,0.0178 0.305906,0.04 0.458751,0.0664 l 0.40963,-0.41404 -0.350746,0.11999 0.04687,-0.23415 0.09917,-0.49506 0.337781,-0.28275 -0.296667,0.0775 0.103139,-0.51487 0.193528,-0.12263 -0.178407,0.0471 0.178407,-0.89071 0.229376,1.14518 h -0.229376 l 0.247546,0.0906 0.09932,0.51181 -0.346866,-0.019 0.375138,0.14429 0.06178,0.30852 0.08793,0.43886 -0.409015,-0.0343 0.452623,0.25198 0.03027,0.15106 c 0.979651,0.31108 1.981445,0.81316 3.059462,1.54764 2.787864,1.89965 7.202947,1.18072 9.286146,-1.49541 -0.892188,0.50193 -1.770456,0.89961 -2.649401,1.15427 l -0.01528,-0.0762 -0.226327,-0.12599 0.204553,0.0171 -0.04401,-0.2194 -0.03089,-0.15423 -0.187553,-0.0722 0.173448,0.01 -0.04971,-0.25598 -0.123742,-0.0453 h 0.114718 l -0.114718,-0.57254 -0.08922,0.44538 0.08922,-0.0236 -0.09676,0.0613 -0.05156,0.25755 0.148319,-0.0388 -0.168922,0.14139 -0.04955,0.24751 -0.02344,0.11703 0.175388,-0.06 -0.204892,0.20708 -0.05962,0.29784 h 3.08e-4 c -0.01799,0.004 -0.03603,0.007 -0.05402,0.0111 l -0.02063,-0.10326 -0.3594,-0.20015 0.324754,0.0272 -0.06982,-0.34844 -0.04906,-0.24502 -0.297929,-0.1146 0.275478,0.0151 -0.0789,-0.40649 -0.196577,-0.0719 h 0.182133 l -0.182133,-0.90937 -0.141666,0.70735 0.141666,-0.0374 -0.153708,0.0974 -0.08186,0.40886 0.235566,-0.0615 -0.268211,0.22455 -0.07878,0.39318 -0.0372,0.18592 0.278589,-0.0953 -0.325401,0.32884 -0.0027,0.0132 -0.06766,-0.33803 -0.06184,-0.30853 -0.375107,-0.14431 0.346866,0.019 -0.09935,-0.51178 -0.247515,-0.0906 h 0.229375 l -0.229375,-1.14521 -0.178407,0.89071 0.178407,-0.0472 -0.193559,0.12266 -0.01004,0.05 -1.648099,-1.56032 2.161145,0.25872 -2.005128,-1.13394 0.117521,0.4909 -1.085531,-0.94725 -0.554099,0.0383 -0.303319,-0.28718 1.770055,0.2351 -0.138278,-0.77439 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.031;stroke-miterlimit:4;stroke-dasharray:none" + id="path2776" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="8.5691204" + y="66.894287" + id="text8379"><tspan + sodipodi:role="line" + id="tspan8377" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="8.5691204" + y="66.894287">landscape</tspan></text> + </g> + <g + id="g67104" + transform="translate(26.537875,21.497315)"> + <g + id="g1709" + transform="matrix(0.03759233,0,0,0.03759233,-30.306482,-10.182581)"> + <path + d="M 575.833,400 H 424.167 C 411.067,400 400,411.066 400,424.167 v 151.667 c 0,13.1 11.067,24.166 24.167,24.166 H 575.833 C 588.933,600 600,588.934 600,575.842 V 424.167 C 600,411.067 588.933,400 575.833,400 Z m -151.666,8.333 h 151.666 c 8.584,0 15.834,7.25 15.834,15.833 V 450 H 408.333 v -25.833 c 0,-8.584 7.25,-15.834 15.834,-15.834 z M 575.833,591.667 H 424.167 c -8.583,0 -15.833,-7.25 -15.833,-15.834 v -117.5 h 183.333 v 117.5 c 0,8.584 -7.25,15.834 -15.834,15.834 z" + id="path1699" /> + + <path + d="m 462.5,434.167 h 0.833 c 2.3,0 4.167,-1.867 4.167,-4.167 0,-2.3 -1.867,-4.167 -4.167,-4.167 H 462.5 c -2.3,0 -4.167,1.858 -4.167,4.167 0,2.308 1.867,4.167 4.167,4.167 z" + id="path1701" /> + + <path + d="m 537.5,434.167 c 2.3,0 4.167,-1.867 4.167,-4.167 0,-2.3 -1.867,-4.167 -4.167,-4.167 h -0.833 c -2.3,0 -3.75,1.867 -3.75,4.167 0,2.3 2.283,4.167 4.583,4.167 z" + id="path1703" /> + + <path + d="m 536.016,483.6 -17.5,6.667 c -2.158,0.825 -3.233,3.225 -2.408,5.383 0.816,2.15 3.233,3.225 5.375,2.408 l 11.85,-4.517 v 68.125 c 0,2.3 1.867,4.166 4.167,4.166 2.3,0 4.167,-1.866 4.167,-4.166 V 487.5 c 0,-1.375 -0.675,-2.65 -1.809,-3.434 -1.125,-0.783 -2.566,-0.941 -3.842,-0.466 z" + id="path1705" /> + + <path + d="m 479.366,519.45 23.867,-29.325 c 1.017,-1.242 1.217,-2.967 0.533,-4.417 -0.691,-1.45 -2.158,-2.375 -3.767,-2.375 h -44.167 c -2.3,0 -4.167,1.867 -4.167,4.167 0,2.3 1.866,4.167 4.167,4.167 h 35.4 L 467.6,520.7 c -1.05,1.291 -1.233,3.083 -0.458,4.558 0.767,1.483 2.342,2.467 4.008,2.226 4.175,-0.275 16.15,0.149 21.725,6.066 2.684,2.842 3.667,6.684 2.992,11.733 -1.208,9.066 -7.458,12.108 -12.483,13.059 -10.2,1.934 -23.167,-3.009 -27.25,-10.367 -1.117,-2 -3.65,-2.725 -5.667,-1.616 -2.017,1.125 -2.742,3.649 -1.617,5.675 4.958,8.925 17.708,15.075 29.875,15.075 2.1,-0.009 4.183,-0.184 6.208,-0.566 10.767,-2.042 17.75,-9.384 19.191,-20.142 1.017,-7.608 -0.733,-13.851 -5.2,-18.575 -5.291,-5.618 -13.357,-7.668 -19.558,-8.376 z" + id="path1707" /> + +</g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="-15.837139" + y="15.731847" + id="text17145"><tspan + sodipodi:role="line" + id="tspan17143" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="-15.837139" + y="15.731847">date</tspan></text> + </g> + <g + id="g69618" + transform="translate(43.57738,24.136259)"> + <g + id="g2298" + transform="matrix(0.04783691,0,0,0.04783691,-43.576989,31.272012)"> + <rect + id="rect2296" + style="fill:#ffffff;stroke:#000000;stroke-width:3.75;stroke-linecap:round;stroke-linejoin:round" + height="146" + width="110" + y="180.36" + x="648" /> + <rect + id="rect2294" + style="fill:#ffffff;stroke:#000000;stroke-width:3.75;stroke-linecap:round;stroke-linejoin:round" + height="146" + width="110" + y="198.36" + x="634" /> + <rect + id="rect2280" + style="fill:#ffffff;stroke:#000000;stroke-width:3.75;stroke-linecap:round;stroke-linejoin:round" + height="146" + width="110" + y="214.36" + x="620" /> + <path + id="path2282" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,258.36 h 77.5" /> + <path + id="path2284" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,278.36 h 77.5" /> + <path + id="path2286" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,298.36 h 77.5" /> + <path + id="path2288" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,318.36 h 77.5" /> + <path + id="path2290" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,338.36 h 77.5" /> + <path + id="path2292" + style="fill:none;stroke:#000000;stroke-width:2.6135" + d="m 636.25,238.36 h 77.5" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="-22.030077" + y="51.959244" + id="text17153"><tspan + sodipodi:role="line" + id="tspan17151" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="-22.030077" + y="51.959244">dataoutputs</tspan></text> + </g> + <g + id="g76635" + transform="translate(43.162525,5.2861854)"> + <g + id="g2299" + transform="matrix(0.74874537,0,0,0.74874537,-6.96828,-6.6072202)"> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect1783" + width="6.5330334" + height="6.5330334" + x="42.346821" + y="92.094666" /> + <path + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 43.954613,94.209431 2.385742,2.385741 5.336779,-5.336779" + id="path1898" + sodipodi:nodetypes="ccc" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="20.208107" + y="70.786034" + id="text17157"><tspan + sodipodi:role="line" + id="tspan17155" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="20.208107" + y="70.786034">settings</tspan></text> + </g> + <g + id="g72496" + transform="translate(49.238297,-50.843325)"> + <g + id="g69756" + transform="translate(-14.528766,-11.628884)"> + <path + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.0401161;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 25.413353,70.903309 c -0.542473,0.332623 -0.05657,0.746334 -0.784018,0.325881 -0.564877,-0.326489 -0.978814,2.333548 -0.476967,2.788262 -0.560202,0.08112 -0.979693,0.512172 -0.855486,0.911295 0.515439,1.656297 1.503146,1.514522 2.266189,1.356968 -0.03784,0.128192 -0.227457,0.436447 0.0065,0.419521 0.915944,-0.06624 1.005904,-0.680354 1.386458,-0.752206 0.02751,-0.0052 0.05147,0.197505 0.0071,0.32615 -0.07413,0.214718 -0.0177,0.305742 0.05899,0.386342 0.0381,0.04004 -0.07143,-0.233217 -0.0327,-0.260707 0.05871,-0.04167 0.03843,-0.351681 0.06967,-0.377546 0.0051,0.04635 0.148056,-0.116355 0.150552,-0.01215 0.0043,0.179397 0.02537,0.45529 0.04537,0.323068 0.06601,-0.436413 0.157255,-0.457155 0.193964,-0.409146 0.09342,0.122174 -0.05766,0.733919 0.05396,0.779427 0.0353,0.01428 -0.02264,-0.123315 0.03242,-0.362155 0.02366,-0.102638 -0.0075,-0.214706 0.02224,-0.357241 0.0073,-0.03502 0.157781,-0.201138 0.175207,-0.225866 0.01698,-0.0241 0.195834,-0.01193 0.241443,0.120106 0.03116,0.09019 -0.05666,0.29176 -0.04812,0.380062 0.02325,0.240141 -0.01549,0.391159 0.02512,0.417836 0.02469,0.01622 0.04046,-0.128472 0.05657,-0.376307 0.01266,-0.1946 0.05963,-0.455039 0.05809,-0.477178 -0.01244,-0.178352 0.04728,-0.239683 0.09455,-0.238579 0.08269,0.002 0.238198,0.007 0.236177,0.107979 -5.13e-4,0.02619 -0.07888,0.150575 -0.07115,0.347749 0.01472,0.375149 -0.07619,0.522323 -0.04588,0.49434 0.137051,-0.126501 0.04336,-0.433469 0.208473,-0.871669 0.02903,-0.07704 -0.306132,-0.195986 -0.296314,-0.224231 0.09475,-0.272574 0.07872,-0.189422 0.181196,-0.442707 0.118241,0.0046 0.361884,-0.369569 0.02651,-0.695433 0,0 -0.114231,0.108687 -0.180628,0.06614 -0.02565,-0.01644 0.511062,-0.238757 1.038124,-0.437527 0.765403,-0.288653 0.961634,-0.470406 0.961634,-0.470406 0.0069,-0.120177 -0.964071,0.460516 -1.621478,0.627766 -0.211458,0.0538 -0.491977,0.250466 -0.50077,0.245514 -0.09954,-0.05605 -0.139439,-0.03209 -0.232211,-0.02775 -0.458469,-0.807837 -1.264128,-2.581897 -2.450815,-3.405605 z" + id="path846" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cscscssssscssscssssssssssssssccssssscc" /> + <path + style="fill:#000000;stroke-width:0.0110775" + d="M 34.264124,76.689956 C 33.911655,76.457 34.189674,75.968745 34.147722,75.62438 c 0.05651,-0.529694 0.173441,-1.052611 0.278806,-1.571187 0.142495,-0.179485 0.03234,-0.526771 -0.173067,-0.235471 -0.269293,0.564661 -0.321999,1.200948 -0.479991,1.801262 -0.08455,0.136325 -0.01198,0.707108 -0.181039,0.537825 -0.0423,-0.520294 0.231691,-1.024102 0.155011,-1.544256 -0.143894,-0.264944 0.03423,-0.948528 -0.182062,-0.970902 -0.112404,0.758016 -0.08766,1.528526 -0.122112,2.292518 -0.290055,-0.01384 -0.02967,-0.561124 -0.101619,-0.779965 0.02978,-0.529319 0.05848,-1.059158 0.120055,-1.585948 -0.325557,0.201834 -0.129049,0.694506 -0.247785,1.015502 -0.05283,0.455417 -0.141956,0.910792 -0.116199,1.37132 -0.354201,0.208478 -0.178088,-0.508011 -0.169144,-0.711275 0.06363,-0.503415 0.158916,-1.002204 0.288882,-1.492102 0.03818,-0.415282 -0.167843,0.228102 -0.197429,0.356919 -0.182347,0.577953 -0.335712,1.166288 -0.426527,1.765864 -0.278001,0.232965 -0.392241,-0.280982 -0.238123,-0.468879 0.12798,-0.609646 0.368815,-1.186628 0.591225,-1.766019 -0.212444,-0.08539 -0.288683,0.505529 -0.372695,0.710446 -0.155241,0.472366 -0.322794,0.944639 -0.461034,1.42001 -0.374127,-0.04002 -0.455199,-0.465723 -0.273287,-0.75795 0.18517,-0.525205 0.416106,-1.036936 0.683089,-1.523008 0.117484,-0.351275 -0.244449,-0.139878 -0.268576,0.07295 -0.261592,0.460545 -0.481165,0.948327 -0.595066,1.466399 -0.04801,0.313915 -0.321776,0.235186 -0.236817,-0.06183 0.113511,-0.341549 0.248144,-0.678133 0.407437,-1.001629 0.159028,-0.33061 0.370745,-0.634259 0.572301,-0.936576 -0.03616,-0.16579 -0.18724,-0.363956 -0.118382,-0.423864 -0.305252,-0.328156 -0.23123,-0.82884 -0.361346,-1.233154 -0.04069,-0.282377 -0.169369,-0.808424 -0.157134,-0.940196 -0.0046,0.157246 0.26724,0.615635 0.253485,0.229436 -0.04374,-0.166577 -0.05049,-0.67573 0.06835,-0.232805 -0.01787,0.153129 -0.04255,0.68369 0.194995,0.391045 0.05406,-0.124452 -0.02407,-0.830329 0.06579,-0.40581 0.150626,0.749408 0.261538,1.504301 0.358573,2.262218 0.0838,0.35231 0.04932,-0.317399 0.0054,-0.441095 -0.03966,-0.152999 -0.0064,-0.542199 0.09538,-0.202612 0.134221,0.336427 -0.01061,0.789739 0.151949,1.076869 7.08e-4,-0.408596 0.03427,-0.836051 -0.112096,-1.226503 -0.270821,-0.353577 -0.142227,-0.838188 -0.247151,-1.247551 -0.02452,-0.288862 -0.13337,-0.820572 -0.05572,-0.963672 0.119894,0.177551 -0.04445,0.82041 0.240445,0.692042 0.02302,-0.167664 -0.252999,-0.510196 0.02381,-0.215767 0.133109,0.05108 0.301896,-0.359322 0.304662,0.0089 -0.02878,0.155347 0.103405,0.412593 0.0907,0.09835 -0.03803,-0.161399 -0.02246,-0.7872 0.05497,-0.294491 0.04268,0.312753 0.02591,0.629558 0.05586,0.943306 0.105277,-0.386991 0.07865,-0.79591 0.183187,-1.18304 0.144359,0.464652 -8.1e-5,0.945872 -0.02575,1.411536 0.109534,-0.320596 0.182737,-0.669442 0.260479,-1.005164 0.0058,-0.181355 0.153147,-0.393485 0.08881,-0.07773 -0.09766,0.237525 -0.09492,1.045891 0.281602,0.669334 0.141283,-0.141024 0.184782,-0.690564 0.23693,-0.628091 -0.05762,0.495418 -0.256015,0.968466 -0.32111,1.458832 0.178693,-0.281874 0.200553,-0.634986 0.3034,-0.949486 0.03977,-0.169948 0.228299,-0.807906 0.140042,-0.326234 -0.02733,0.145995 -0.211147,0.655567 -0.05589,0.601449 0.227513,-0.345008 0.276445,-0.756275 0.147176,-1.141469 0.07384,-0.08553 0.149417,0.466474 0.254312,0.125975 0.07254,-0.308255 -0.07137,0.441321 0.224495,0.203184 0.09506,-0.163954 -0.205825,-0.797087 0.04918,-0.377039 0.22818,0.470818 0.306332,-0.325847 0.548093,-0.39766 0.04085,0.230625 -0.526979,0.604843 -0.272614,0.94905 0.226311,0.467296 0.319057,0.985046 0.520329,1.46207 0.05229,0.208199 1.67e-4,0.635654 0.219793,0.677271 -0.11844,-0.686974 -0.375423,-1.345452 -0.504834,-2.031764 -0.09032,-0.161452 -0.142177,-0.697008 -0.02216,-0.251932 0.02729,0.143374 0.187758,0.576161 0.128743,0.186349 -0.09455,-0.20341 0.12087,-0.288275 0.07376,-0.02498 -0.04123,0.317988 0.510076,0.571412 0.404825,0.09519 -0.04192,-0.150611 -0.139097,-0.83628 -0.0031,-0.436495 0.06681,0.197408 0.178647,0.719387 0.264799,0.696052 -0.0086,-0.280225 -0.199665,-0.693597 -0.08217,-0.892046 0.189707,0.06764 0.113095,0.602887 0.240395,0.514186 0.02951,-0.229926 -0.124255,-0.525978 0.04023,-0.712097 0.03353,0.364127 -0.0087,1.007208 0.415824,1.097926 0.194469,-0.09809 0.312213,-0.332777 -0.01677,-0.260637 -0.294083,0.102461 -0.3094,-0.702143 -0.133211,-0.201316 0.322149,0.274377 0.414143,-0.882542 0.547854,-0.395688 -0.01922,0.424328 -0.109307,0.844121 -0.157215,1.267026 -0.0128,0.178867 -0.114073,0.61111 -0.0712,0.633532 0.150023,-0.367252 0.150362,-0.775693 0.24898,-1.156681 -0.01902,-0.148087 0.06299,-0.760578 0.09589,-0.353336 -0.01988,0.165797 0.04393,0.4404 0.105459,0.110751 -0.007,-0.198214 0.240724,-0.695977 0.11963,-0.221586 -0.115804,0.148801 -0.05372,0.75059 0.136592,0.386521 0.08626,-0.229767 -0.02786,-0.713572 0.16475,-0.790788 0.03771,0.162862 0.05631,0.756462 0.233881,0.32859 0.214361,-0.119315 -0.05412,0.401971 -0.06958,0.525598 0.0012,0.454459 0.176947,-0.175725 0.239526,-0.315908 0.05608,-0.196959 0.226907,-0.30644 0.113462,-0.02786 -0.20534,0.956655 -0.655527,1.830161 -0.975849,2.748233 -0.0682,0.40563 0.505645,0.612331 0.638715,0.981582 0.200033,0.412802 0.471793,0.811758 0.486586,1.284878 -0.204692,-0.660089 -0.527549,-1.29621 -0.978142,-1.821219 -0.133357,-0.169118 -0.397313,-0.180748 -0.160868,0.0487 0.401483,0.502521 0.695548,1.08182 0.93014,1.678285 -0.158144,0.294674 -0.258843,-0.351685 -0.355006,-0.468509 -0.226495,-0.43604 -0.487211,-0.854103 -0.775951,-1.251592 -0.383344,-0.03893 0.105132,0.45138 0.14432,0.614806 0.26179,0.424514 0.448507,0.889405 0.631583,1.350566 0.130137,0.319535 -0.342414,0.477542 -0.359289,0.08882 -0.250697,-0.600453 -0.491908,-1.206529 -0.787043,-1.786922 0.01216,0.368186 0.202615,0.703753 0.25818,1.066499 0.05356,0.3881 0.29052,0.76999 0.280918,1.142017 -0.313894,0.366029 -0.640232,-0.06488 -0.629324,-0.420954 -0.0573,-0.165915 -0.09549,-0.715127 -0.171907,-0.629154 -0.02819,0.372984 0.131477,0.737514 0.12016,1.103835 -0.06906,0.238465 -0.389485,0.01215 -0.37305,0.269276 -0.137396,-0.319928 -0.123578,-0.690808 -0.233965,-1.024387 -0.09909,-0.391017 -0.226762,-0.774584 -0.377279,-1.148752 0.09606,-0.276235 -0.510897,-0.398706 -0.253025,-0.06755 0.238987,0.729135 0.372435,1.485276 0.497294,2.240431 0.09731,0.225219 -0.107666,0.257876 -0.09012,0.0081 -0.111907,-0.781937 -0.311808,-1.547864 -0.531821,-2.304581 -0.236622,-0.386369 -0.02488,0.42097 -0.03136,0.587457 0.08557,0.588337 0.133467,1.181606 0.263235,1.761686 0.08278,0.240462 -0.138857,0.500268 -0.202226,0.143779 -0.01488,-0.394335 -0.08645,-0.778264 -0.09962,-1.17318 -0.03118,-0.510918 -0.06738,-1.022799 -0.155234,-1.527646 -0.230252,0.251886 0.02285,0.705341 -0.06273,1.036722 -0.01275,0.58612 0.01341,1.171191 0.08671,1.752527 0.04059,0.450899 -0.326132,-0.01327 -0.224139,-0.236459 -0.042,-0.660409 -0.03987,-1.322487 -0.02523,-1.984384 0.008,-0.202906 -0.01043,-0.777346 -0.0663,-0.28892 -0.03028,0.868687 -0.06832,1.740669 -0.09573,2.607837 -0.111348,0.325571 -0.423296,0.05521 -0.287409,-0.184767 0.04416,-0.82715 0.04821,-1.659308 0.178343,-2.478664 -0.004,-0.392073 -0.127658,0.275472 -0.134591,0.427907 -0.0723,0.761604 -0.168633,1.521479 -0.195682,2.28685 -0.0034,0.152535 -0.113739,0.145578 -0.230398,0.112323 z m -0.389248,-2.197691 c 0.125773,-0.253547 0.272457,-0.849971 -0.06227,-0.926705 -0.08761,0.241835 -0.0596,0.744542 0.06227,0.926705 z m 2.397619,-0.176935 c -0.05611,-0.217076 0.182935,-0.820289 -0.003,-0.790139 -0.273678,-0.144918 -0.158982,0.500839 -0.124354,0.695464 0.03762,0.131035 0.144903,0.446301 0.127311,0.09467 z m -1.390192,-0.848075 c -0.08486,-0.154457 -0.195277,0.09471 0,0 z m 0.469077,0.01208 c -0.08165,-0.170795 -0.319667,0.09568 0,0 z m -1.723617,-0.141283 c 0.112245,-0.303035 0.488018,-0.65553 0.488458,-0.897639 -0.307173,0.165879 -0.331381,0.600104 -0.526307,0.873052 -0.03849,0.07027 -0.046,0.145115 0.03785,0.02459 z m -0.293653,-0.0068 c -0.0098,-0.271398 0.399122,-0.488986 0.286365,-0.69412 -0.18346,0.138353 -0.377577,0.630825 -0.286382,0.694094 z m 0.634405,0.01843 c 0.283491,-0.06046 0.07386,-0.391834 -0.02914,-0.07657 -0.04078,0.03811 -0.05372,0.134433 0.02914,0.07657 z m 2.374409,-0.03381 c -0.187822,-0.427953 -0.370682,-0.858974 -0.592543,-1.270796 -0.09964,0.312607 0.291593,0.588579 0.328902,0.914638 0.0621,0.11074 0.09661,0.379414 0.263641,0.356158 z m 0.197507,0.0103 c -0.0504,-0.198473 -0.16298,-0.712518 -0.340477,-0.614343 0.121498,0.197709 0.136369,0.476761 0.340477,0.614343 z m -0.441726,-0.05388 c 0.05187,-0.214755 -0.362899,-0.587787 -0.256375,-0.189736 0.07016,0.07559 0.128304,0.220074 0.256375,0.189736 z m 0.830427,4.34e-4 c -0.01396,-0.140496 -0.08999,-0.720937 -0.200849,-0.512678 0.02295,0.172152 -0.02533,0.465475 0.200849,0.512678 z m -0.243367,-0.07131 c 0.03278,-0.190135 -0.224461,-0.554599 -0.109371,-0.15626 0.01867,0.03627 0.04456,0.23328 0.109371,0.15626 z m -2.273147,-0.0883 c 0.173662,-0.272467 0.738763,-0.621411 0.464514,-0.955137 -0.272114,0.212888 0.05423,-0.380458 -0.171343,-0.176431 -0.210907,0.153254 -0.162588,0.55439 0.129956,0.339152 0.259823,0.237737 -0.530522,0.408827 -0.340641,-0.0056 -0.229633,0.02522 -0.190077,0.548382 0.144905,0.337785 0.03786,0.299156 -0.368772,0.213743 -0.420964,-4e-5 -0.154089,0.192284 0.09569,0.311734 0.187124,0.314176 -0.0566,0.08183 -0.169826,0.276693 0.0065,0.146077 z m 2.949253,-0.02668 c 0.09139,-0.123757 0.277619,-0.783265 0.02679,-0.434727 0.0084,0.09384 -0.22545,0.454385 -0.02679,0.434727 z m -0.264217,-0.136999 c 0.0035,-0.331292 0.137359,-0.87274 0.04021,-1.07378 -0.252154,0.251346 -0.06067,0.662925 -0.09521,0.984274 0.0078,0.0075 0.03575,0.252602 0.055,0.08951 z m -1.436511,-0.03072 c -0.07755,-0.187077 -0.494295,-0.268455 -0.176308,-0.03927 0.04198,0.02282 0.1545,0.131894 0.176308,0.03927 z m -2.467983,-0.04964 c 0.06279,-0.222129 0.0079,-0.739532 -0.06809,-0.772466 -0.0061,0.220612 -0.06853,0.696642 0.06809,0.772466 z m -0.557731,-0.04068 c -0.05568,-0.187885 -0.0644,0.145921 0,0 z m 3.081129,-0.06316 c -0.01396,-0.218897 -0.456241,-0.186822 -0.502703,-0.39696 0.163377,0.112835 0.575433,0.08977 0.317524,-0.118759 -0.03301,0.171102 -0.483724,-0.241298 -0.403612,0.136603 0.08751,0.229145 0.353927,0.36995 0.588791,0.379116 z m -3.148864,-0.0992 c 0.109106,-0.214586 -0.208138,0.08032 0,0 z m 1.667827,-0.140398 c 0.272212,-0.359661 0.550881,-0.714421 0.819704,-1.076648 -0.10239,-0.456892 -0.339628,0.329527 -0.478959,0.452649 -0.100298,0.187488 -0.410188,0.509091 -0.340745,0.623999 z m 2.668394,-0.162312 c 0.114502,-0.147076 -0.166915,-0.539525 -0.128341,-0.186242 -0.04757,0.131732 0.148359,0.724501 0.128341,0.186242 z m -3.168029,0.148576 c 0.06886,-0.113628 0.247651,-0.586582 0.118391,-0.494086 -0.01842,0.150316 -0.223633,0.367123 -0.118391,0.494086 z m 2.928764,0.0099 c 0.09772,-0.24243 -0.215177,0.07675 0,0 z m -4.278302,-0.0031 c 0.07921,-0.213246 -0.394757,-0.318755 -0.09625,-0.456712 -0.104719,-0.330539 -0.346888,-0.16083 -0.173763,0.104358 0.02892,0.145543 0.07305,0.373695 0.270013,0.352354 z m 4.004968,-0.02086 c -0.01548,-0.229798 -0.341942,-0.245824 -0.133582,-0.02058 0.03543,0.02672 0.09232,0.05797 0.133582,0.02058 z m -2.882852,-0.01056 c 0.294647,-0.156176 -0.353518,-0.138214 -0.02496,0.0089 l 0.01968,-0.007 0.0053,-0.0019 z m 0.411502,-0.01269 c 0.166733,-0.126411 0.07097,-0.443366 -0.0054,-0.120366 0.0037,4.72e-4 -0.06402,0.186369 0.0054,0.120366 z m 2.598646,-0.195139 c 0.184865,-0.199939 -0.02679,-0.242339 -0.154734,-0.181215 -0.109595,-0.150278 -0.355664,-0.227573 -0.201249,0.02657 0.06206,0.07977 0.271621,0.340018 0.355983,0.154648 z m 1.017479,0.05302 c 0.140475,-0.143425 -0.229073,0.02475 0,0 z m -5.070806,-0.01382 c 0.299732,-0.459276 -0.432591,-0.03291 0,0 z m 4.87332,-0.0058 c 0.04964,-0.185339 -0.114669,-0.362322 -0.05102,-0.07624 1e-4,0.01946 0.0055,0.122505 0.05102,0.07624 z m -3.898163,-0.05689 c 0.19029,-0.114664 -0.126899,-0.540848 -0.09656,-0.172795 -0.01513,0.0709 -0.0389,0.277732 0.09656,0.172795 z m 1.945281,-0.125067 c -0.156132,-0.254206 0.07258,-0.159548 0.07821,-0.181003 -0.161561,-0.213307 -0.455285,-0.659559 -0.55026,-0.171237 -0.113475,0.187649 0.06871,0.313579 0.07753,0.04276 0.133964,-0.354647 -0.02819,0.387755 0.254055,0.09177 -0.04242,0.05191 -0.0028,0.377621 0.140461,0.217711 z m -1.726893,-0.0095 c 0.416515,-0.343104 -0.535945,-0.09204 0,0 z m 3.824348,0.0022 c 0.0885,-0.157578 -0.110565,-0.639208 -0.13846,-0.222666 -0.01842,0.08026 0.01773,0.275145 0.13846,0.222666 z M 34.107213,71.97346 c -0.05083,-0.397551 -0.118951,0.39517 0,0 z m 3.581334,0.05371 c 0.327671,-0.173441 -0.3542,-0.188613 -0.08161,0.03596 l 0.02776,-0.01047 z m -3.412946,-0.0031 c 0.302579,-0.229918 -0.300068,-0.323601 -0.04882,0.0142 z m 2.138656,-0.08251 c 0.178285,-0.0941 0.113393,-0.437477 -0.04707,-0.175866 -0.150278,-0.08106 -0.416944,-0.473036 -0.295772,-0.05059 0.05422,0.09664 0.214253,0.340466 0.342847,0.226455 z m -4.034849,-0.05124 c 0.314218,-0.261753 -0.312522,-0.210922 -0.123169,0.01179 0.03405,0.0278 0.105224,0.04262 0.123169,-0.01179 z m 2.159097,-0.02855 c 0.07784,-0.256751 0.571605,-0.757255 0.31989,-0.867094 -0.138644,0.279244 -0.270364,0.675398 -0.353088,0.911426 l 0.0332,-0.04433 z m 1.100871,-0.01816 c 0.201945,-0.09164 0.05755,-0.378423 -0.06896,-0.138855 -0.117672,-0.02147 -0.362012,-0.196416 -0.212097,0.04322 0.06787,0.04461 0.212084,0.235038 0.281057,0.09564 z m 1.222256,0.04713 c 0.107025,-0.346591 -0.397741,-0.113397 0,0 z m 1.110131,-0.0035 c 0.114438,-0.138845 0.178082,-0.758364 0.04762,-0.295353 -0.0044,0.0838 -0.135404,0.236532 -0.04762,0.295353 z m -4.379529,-0.04115 c 0.197606,-0.150413 -0.17694,-0.634195 -0.148957,-0.196937 -0.02001,0.08757 0.01052,0.342165 0.148957,0.196937 z m -0.597076,-0.0044 c 0.19359,-0.08481 0.15154,-0.417577 -0.01627,-0.146745 -0.205701,-0.03407 -0.164459,0.230711 0.01627,0.146745 z m -0.831813,-0.06335 c 0.159718,-0.224749 -0.32264,-0.404751 -0.117473,-0.06544 0.01305,0.04762 0.06716,0.0878 0.117473,0.06544 z m 5.485027,-0.04557 c -0.0076,-0.194574 -0.170179,-0.629506 -0.224774,-0.189155 -0.02361,0.114416 0.106381,0.27796 0.224774,0.189155 z m -3.821941,-0.0668 c 0.313696,-0.310752 -0.491295,-0.09412 -0.0353,0.03403 z m 3.180148,0.03785 c 0.133452,-0.214752 -0.477624,-0.554477 -0.23311,-0.147381 0.057,0.07779 0.153352,0.10205 0.23311,0.147381 z m 0.80573,-0.0372 c 0.36219,-0.116861 -0.127779,-0.476316 -0.123059,-0.144401 -6.49e-4,0.0693 0.01025,0.256112 0.123059,0.144401 z M 32.86385,71.62564 c 0.0392,-0.352139 -0.243674,-0.159341 -0.03795,0.04128 l 0.01806,-0.01176 z m 1.459205,0.03168 c 0.166134,-0.09804 -0.05103,-0.457881 -0.06437,-0.139273 -0.04045,0.07504 -0.07454,0.21188 0.06437,0.139273 z m 0.181872,-0.06836 c 0.08871,-0.358533 -0.279114,-0.05225 -0.02604,0.01508 z m 1.806939,0.01043 c 0.171498,-0.184528 0.137836,-0.422425 -0.114708,-0.332768 -0.122336,-0.176915 -0.336238,-0.224661 -0.188218,0.04088 0.0778,0.115399 0.172419,0.234428 0.302926,0.291891 z M 32.259369,71.5552 c 0.177975,-0.226766 -0.04753,-0.275547 -0.117314,-0.227342 0.01992,-0.265377 -0.356437,-0.275275 -0.164828,0.0035 0.04671,0.110227 0.155214,0.22299 0.282142,0.223779 z m 3.240248,-0.150588 c 0.133267,-0.138496 -0.0063,-0.423605 -0.08079,-0.137299 -0.320717,0.06204 0.03162,0.456374 0.08079,0.137299 z m -2.53467,0.05193 c 0.03773,-0.258659 0.347052,-0.06421 0.217044,-0.353787 -0.102371,-0.0228 -0.61463,0.315783 -0.217044,0.353787 z m 0.712443,-0.0039 c 0.195802,-0.149744 -0.16082,-0.569967 -0.153852,-0.167671 -0.01896,0.08033 0.06253,0.201966 0.153852,0.167671 z m 3.349618,-0.02368 c 0.32708,-0.213567 -0.3597,-0.49453 -0.310379,-0.552558 0.0273,0.194079 0.103781,0.486559 0.310379,0.552558 z m 0.709697,-0.111204 c 0.219755,-0.19014 -0.315065,-0.611504 -0.193933,-0.17502 0.03275,0.07362 0.07317,0.300471 0.193933,0.17502 z m -4.9361,-0.0415 c 0.274579,-0.147264 -0.248869,-0.652372 -0.07116,-0.169453 0.0096,0.03818 -0.01607,0.263656 0.07116,0.169453 z m 1.131811,-0.04202 c 0.296664,-0.336732 -0.55579,-0.132201 -0.07173,0.0559 l 0.04118,-0.02728 z m 1.293528,0.03729 c 0.08396,-0.265869 -0.300459,-0.158812 0,0 z m -0.686869,-0.04341 c 0.200926,-0.141196 -0.09518,-0.539522 -0.110622,-0.15437 -0.03844,0.08681 -0.03,0.288183 0.110622,0.15437 z m 3.436581,-0.07387 c 0.273078,-0.242232 -0.452975,-0.06654 -0.07033,0.04816 0.01943,0.0014 0.05355,-0.07251 0.07033,-0.04816 z m -5.774631,-0.04815 c 0.0044,-0.240749 -0.52756,-0.336447 -0.20283,-0.05928 0.04714,0.02979 0.163245,0.164525 0.20283,0.05928 z m 4.027966,-0.0078 c 0.133948,-0.116047 0.121892,-0.502673 -0.0792,-0.234729 -0.146052,-0.07099 -0.321838,-0.18974 -0.192579,0.06477 0.05574,0.07515 0.162893,0.236165 0.271784,0.169961 z m -0.91952,-0.01174 c 0.164419,-0.08738 0.15466,-0.662794 -0.04128,-0.308877 -0.170201,0.04277 -0.174748,0.364744 0.04128,0.308877 z m -1.494716,-0.117161 c 0.08131,-0.20709 -0.202321,-0.411386 -0.157445,-0.09389 -0.05052,0.116045 0.07956,0.21737 0.157445,0.09389 z m -0.829341,0.0058 c 0.06127,-0.08807 0.365088,-0.354403 0.13709,-0.312297 -0.17299,0.220701 -0.329261,0.119839 -0.367258,-0.109657 -0.245946,-0.04674 0.06214,0.572054 0.230172,0.421952 z m 4.852048,-0.0051 c 0.159064,-0.189324 -0.278322,-0.6079 -0.193981,-0.18586 0.02988,0.06613 0.08734,0.318158 0.193981,0.18586 z m -0.736197,-0.02977 c 0.319438,-0.221788 -0.209809,-0.08581 -0.234653,-0.260041 -0.07623,-0.295261 -0.272167,-0.13013 -0.117555,0.07152 0.06485,0.108028 0.218312,0.331692 0.352208,0.188526 z m -2.359299,-0.141079 c 0.262643,-0.07793 -0.09714,-0.623258 -0.103838,-0.195772 -0.02513,0.08018 -0.05851,0.375069 0.103838,0.195772 z m 0.349591,0.01477 c 0.02138,-0.270992 -0.194821,0.05246 2.05e-4,-3.2e-5 z m 2.937967,-0.0252 c 0.166761,-0.145385 0.01686,-0.478078 -0.102343,-0.180578 -0.08016,0.06972 -0.01592,0.353688 0.102343,0.180578 z m -2.832565,-0.222572 c 0.142331,-0.161144 -0.03486,-0.447404 -0.08413,-0.130009 -0.122127,0.07516 0.01786,0.419488 0.08413,0.130009 z m -2.26257,0.05953 c 0.139309,-0.112362 0.146997,-0.400459 -0.04729,-0.175822 -0.214713,-0.05492 -0.07418,0.256704 0.04729,0.175822 z m 2.021203,-0.176553 c 0.221399,-0.207734 -0.286949,-0.404224 -0.102946,-0.08408 0.01,0.03373 0.05099,0.145659 0.102946,0.08408 z m -2.949754,1.781 c -0.202237,-0.527853 -0.341318,-1.080104 -0.464792,-1.63106 0.05513,-0.239563 0.143603,0.33281 0.183082,0.429707 0.111886,0.421338 0.228647,0.841787 0.316432,1.269015 -0.01156,-0.02252 -0.0232,-0.04505 -0.03472,-0.06757 z m 1.95442,-1.647686 c 0.0031,-0.141967 0.130036,-0.720348 0.116215,-0.299406 -0.02019,0.10214 -0.0097,0.241941 -0.116215,0.299406 z m 1.994938,-0.109705 c 0.0086,-0.200439 -0.223965,-0.692838 -0.05787,-0.712739 0.03124,0.231111 0.177799,0.488836 0.05787,0.712739 z m 1.045273,-0.375851 c -0.01038,-0.129555 0.05148,-0.783161 0.109281,-0.36618 -0.0089,0.121557 0.01015,0.290904 -0.109281,0.36618 z m -4.197457,-0.218944 c -0.08171,-0.21584 0.08512,-0.524576 0.07738,-0.13216 0.0019,0.03342 -0.02986,0.289342 -0.07738,0.13216 z" + id="path30945" + inkscape:connector-curvature="0" /> + <path + id="polygon11601" + style="fill:#000000;fill-rule:evenodd;stroke-width:0.0148324" + d="m 42.679628,70.913701 c -0.02401,5.72e-4 -0.04568,0.01 -0.05755,0.03384 -0.02626,0.13595 -0.0073,0.300445 -0.01944,0.44822 -0.01037,0.124652 -0.0062,0.233284 -0.0052,0.375913 0.001,0.119 -0.0018,0.244942 -0.0042,0.350415 -0.0021,0.110739 0.0059,0.220158 6.86e-4,0.332409 0.0224,0.05577 0.0058,0.13453 0.0055,0.208099 -0.07194,-0.02151 -0.128447,0.0057 -0.197418,0.0059 -0.06512,2.97e-4 -0.132009,-0.0088 -0.196976,-0.01201 -0.03424,-0.0018 -0.07238,0.01127 -0.101601,-0.0079 -0.03294,0.01632 -0.08276,5.72e-4 -0.116729,-0.0013 -0.02299,-0.0015 -0.0445,0.0053 -0.0663,0.0046 -0.07446,-0.0027 -0.139276,-0.02032 -0.206764,-0.02373 -0.0141,-5.72e-4 -0.02876,0.0062 -0.04405,0.0052 -0.12029,-0.0091 -0.251423,-0.02195 -0.364742,-0.01216 -0.06148,-0.02566 -0.147569,-0.0042 -0.241028,-0.0027 -0.07217,10e-4 -0.159522,-0.02225 -0.240106,-0.01765 -0.05133,0.003 -0.119236,0.01009 -0.149243,-0.01023 -0.05106,0.01142 -0.10107,0.02774 -0.151574,0.0445 -0.05724,0.01913 -0.121017,0.03337 -0.163614,0.06956 -0.01962,0.01676 -0.04647,0.05414 -0.06953,0.08484 -0.03874,0.05162 -0.06211,0.09938 -0.07277,0.160783 v 4.57e-4 c -0.06752,0.155446 -0.06733,0.317861 -0.09781,0.488582 -0.01761,0.09864 -0.04067,0.196085 -0.05979,0.285969 0.0075,0.04969 -0.01508,0.117621 -0.02226,0.181252 -0.0054,0.0485 -6.86e-4,0.07802 -0.02271,0.09789 0.0053,0.08024 -0.02893,0.174429 -0.03616,0.250223 -0.0091,0.09611 -0.02173,0.178582 -0.03013,0.272471 0.01487,0.0074 0.03154,0.0132 0.05052,0.01676 -0.0014,0.119994 0.01698,0.219964 0.07787,0.310145 -0.05638,0.106349 -0.08183,0.245032 -0.09317,0.379562 -0.0047,0.05651 0.0064,0.135271 0.01716,0.194156 0.02398,0.132008 0.07884,0.244141 0.156675,0.350045 0.04711,0.06393 0.09938,0.110649 0.176595,0.13898 0.0076,0.05725 0.02682,0.103826 0.03708,0.158558 0.111614,0.20261 0.224268,0.451498 0.465827,0.534857 0.0039,0.02329 0.03094,0.02551 0.03847,0.04538 0.07658,0.02996 0.161288,0.04034 0.265128,0.02655 0.142127,0.0175 0.260948,-0.02566 0.380528,-0.01676 0.07342,0.0055 0.104864,-0.01246 0.159003,-0.04034 0.03545,-0.01809 0.05503,-0.03619 0.08247,-0.05147 0.01751,-0.0098 0.0396,-0.01217 0.05562,-0.02314 0.02967,-0.02017 0.04998,-0.0531 0.09048,-0.06155 0.02327,-0.0534 0.08084,-0.06986 0.09685,-0.131267 0.01853,-0.0013 0.01452,-0.02729 0.03055,-0.03145 -0.0035,-0.01172 0,-0.0083 10e-4,-0.0218 0.0491,-0.06393 0.08158,-0.126966 0.104273,-0.214625 0.05117,-0.107832 0.09077,-0.222338 0.07371,-0.354643 -0.0092,-0.07179 -0.02092,-0.149214 -0.03101,-0.21685 0.210174,-0.01365 0.399436,-0.111391 0.61599,-0.144616 0.09522,-0.01469 0.177545,-0.0574 0.270248,-0.07609 0.08632,-0.01736 0.168048,-0.04213 0.254373,-0.062 0.0064,-0.0059 0.01276,-0.01187 0.01913,-0.01765 0.02553,0.03901 0.06838,0.06497 0.113913,0.06719 0.07194,-0.01557 0.101154,-0.08173 0.104863,-0.141798 l 0.08751,4.57e-4 c 0.0028,0.01736 0.0083,0.03204 0.0089,0.05147 0.03648,0.0082 0.0482,0.01142 0.08336,0.0033 0.03323,-0.02803 0.02166,-0.06956 0.02373,-0.122961 0.0135,-0.009 0.03055,-0.01958 0.04761,-0.005 -0.0399,0.05636 -0.02728,0.123109 -0.0083,0.189112 0.0166,0.05785 0.02742,0.0838 0.04969,0.130229 0.02345,0.04939 0.04865,0.09508 0.08202,0.123702 0.01663,0.0023 0.03069,0.0071 0.05087,0.0061 0.01009,0.04213 0.02788,0.07698 0.03857,0.118659 0.08262,0.07461 0.142243,0.170425 0.241917,0.229458 0.01529,-0.0023 0.02387,-0.01216 0.04079,-0.01305 0.05028,0.06719 0.105457,0.129635 0.220707,0.137348 0.08633,0.08232 0.22649,0.0844 0.35731,0.0884 0.07327,0.11243 0.159301,0.213587 0.276181,0.285969 0.01529,-0.01038 0.02862,-0.01023 0.04449,-0.0129 0.03901,0.0663 0.07594,0.127114 0.149809,0.16731 0.0141,0.0028 0.02152,-0.0022 0.02967,-0.0061 0.05681,0.04657 0.125332,0.08425 0.188668,0.106644 0.02654,0.0095 0.05354,0.02076 0.07921,0.02922 0.03248,0.01083 0.06274,0.01172 0.101453,0.01899 0.02004,0.0038 0.03782,0.01646 0.05755,0.02047 0.0442,0.0089 0.09789,0.01736 0.141353,0.01706 0.09448,-2.81e-4 0.189262,0.0083 0.285076,-0.0059 0.0288,-0.0043 0.05548,-0.02358 0.08529,-0.02922 0.02479,-0.0047 0.05695,0.0015 0.08766,4.57e-4 0.04346,-0.0016 0.07846,-0.01632 0.113466,-0.0098 0.0577,-0.0129 0.105458,-0.01676 0.165974,-0.02922 0.02686,-0.0267 0.05889,-0.04747 0.07654,-0.08425 0.03678,-0.01483 0.05651,-0.0482 0.09033,-0.06585 0.02953,-0.01543 0.06585,-0.03011 0.10056,-0.04316 0.03129,-0.01172 0.06556,-0.0092 0.09923,-0.0175 0.03175,-0.008 0.05947,-0.02862 0.08617,-0.05102 0.07164,-0.06007 0.148177,-0.130526 0.128004,-0.249926 0.0181,0.0021 0.0166,-0.01706 0.02268,-0.02818 0.02879,-0.03797 0.06764,-0.02596 0.111245,-0.0353 0.04272,-0.009 0.09359,-0.07683 0.114355,-0.115841 0.03871,-0.07209 0.06497,-0.179324 0.05577,-0.274845 -0.03041,-0.01899 -0.03767,-0.05488 0,-0.07698 0.027,0.0083 0.07016,-0.01246 0.09256,-0.03248 0.0224,-0.04138 0.02373,-0.0844 0.03115,-0.126521 0.0031,-0.01869 0.01097,-0.03441 0.0129,-0.05043 0.0039,-0.03041 -0.0052,-0.05369 -0.0074,-0.08766 -0.0028,-0.04361 0.0088,-0.103381 -0.01202,-0.14328 -0.0083,-0.01587 -0.0341,-0.02403 -0.0347,-0.04168 -10e-4,-0.03382 0.05191,-0.05147 0.06155,-0.07045 0.02152,-0.158855 -0.02032,-0.31415 -0.09077,-0.427321 -0.01395,-0.0023 -0.01853,-0.01365 -0.0288,-0.01943 0.0088,-0.01602 0.01438,-0.03545 0.02092,-0.05384 -0.04094,-0.164343 -0.113172,-0.300207 -0.26194,-0.365618 -0.0064,-0.01394 -0.0028,-0.03545 -0.0055,-0.04405 0.03871,0.01068 0.06022,-0.02403 0.08573,-0.0399 0.01544,-0.02774 0.01645,-0.0712 0.03336,-0.0973 0,-0.0482 0.02345,-0.09196 0.01705,-0.138238 -0.0067,-0.0485 -0.03679,-0.08766 -0.04168,-0.132898 -0.07342,-0.08262 -0.167458,-0.142243 -0.246516,-0.211362 0.04138,0.0013 0.05874,0.0062 0.09819,0.01157 -0.0064,0.01617 -0.02669,0.02003 -0.01244,0.03931 0.02285,-0.0018 0.03143,-0.01854 0.04123,-0.03471 0.0329,10e-4 0.0844,0.0261 0.0881,-0.007 l 0.0028,-0.0092 c 2.77e-4,0.0018 6.86e-4,0.0037 0.001,0.0055 0.03619,-0.07149 0.01009,-0.1504 -0.02004,-0.208988 -0.02746,-0.01098 -0.04613,-0.03011 -0.07135,-0.04316 0.0084,-0.0178 -6.86e-4,-0.0488 0.0181,-0.07223 -0.0021,0.0175 -0.008,0.04405 3.51e-4,0.06571 0.02299,-0.02358 0.01645,-0.08484 0.0347,-0.122812 -0.01171,-0.0175 -0.005,-0.08321 0.02461,-0.06808 -0.0025,0.02744 -0.01438,0.06334 -0.01069,0.08707 -0.0099,0.03752 -0.04109,0.101453 -0.0092,0.12385 0.02166,-0.06333 0.03708,-0.154405 0.04628,-0.228122 -0.01691,-0.0135 -0.0353,-0.0093 -0.05043,-0.0129 0.01037,-0.06111 0.02981,-0.114951 0.01705,-0.145654 -0.09612,0.0068 -0.105162,0.118808 -0.115843,0.229012 0.01111,0.01201 0.02314,0.02299 0.03886,0.03056 -0.0018,0.03174 -0.0067,0.07119 -0.01572,0.112726 -0.163453,-0.04598 -0.335361,-0.0135 -0.510237,-0.02225 -0.01378,0.0019 0.0021,0.01246 -0.01171,0.01439 -0.115545,-0.05488 -0.277514,-0.07386 -0.392612,-0.119104 0.0031,0.01112 -0.0083,0.0059 -0.01483,0.0064 -0.123701,-0.02358 -0.249479,-0.04346 -0.371253,-0.03427 -0.01972,0.0015 -0.03886,0.01187 -0.05889,0.01201 -0.0095,1.46e-4 -0.01825,-0.0074 -0.02862,-0.0083 -0.03945,-0.0031 -0.093,0.0098 -0.139128,0.01201 -0.115692,0.0059 -0.204091,0.02373 -0.292494,0.04509 l -0.0021,-0.07743 0.01111,-0.02699 c 0.01944,-0.0047 0.03277,-0.01617 0.05325,-0.01988 0.01557,0.01335 0.03931,0.01602 0.04776,-0.005 -0.02686,-0.02566 -0.05859,-0.01409 -0.08855,-0.0052 l 0.01023,-0.02447 -0.02046,0.01113 -0.01944,0.0022 c 0.0062,-0.005 0.0129,-0.0096 0.02046,-0.01335 -0.008,-0.0031 -0.01631,-0.003 -0.02507,-5.72e-4 l 0.03886,-0.0129 c -0.0025,0.003 -0.0045,0.0061 -0.0059,0.0098 0.105609,-0.0018 0.120291,-0.102937 0.160785,-0.175764 0.0053,-0.08751 -0.08098,-0.13898 -0.145063,-0.18496 -0.07639,-0.01765 -0.137644,-0.04835 -0.210915,-0.02403 0.0035,0.04316 -0.02166,0.132156 -0.02922,0.166864 0.0141,0.07832 0.0035,0.133937 0.02742,0.213141 -0.05681,-0.02729 -0.17072,0.0096 -0.233613,-0.0027 0.0099,-0.03278 0.0574,-0.01557 0.05696,-0.05236 -3.51e-4,-0.0399 -0.07401,-0.04272 -0.104273,-0.03767 0.02819,-0.0178 0.03975,-0.05043 0.0617,-0.07416 0.0276,-0.02981 0.06066,-0.05518 0.08751,-0.08707 0.03738,-0.0445 0.0666,-0.09938 0.10531,-0.145506 0.01972,-0.02373 0.04405,-0.04494 0.06482,-0.07001 0.02046,-0.02477 0.03782,-0.05829 0.05844,-0.07787 0.02401,-0.02299 0.06556,-0.02537 0.06853,-0.06632 0.01544,0.0019 0.03027,0.0018 0.04405,0.0019 -6.86e-4,0.0019 -0.0014,0.0043 -10e-4,0.0074 0.02193,0.02041 0.04434,-0.01246 0.0491,-0.03477 0.07995,0.07357 0.158264,0.148917 0.276772,0.187185 0.02612,0.02195 0.06705,0.05058 0.100121,0.04835 0.01825,-0.0013 0.027,-0.02047 0.04449,-0.01261 0.01926,-0.03649 0.01737,-0.08024 0.0088,-0.123702 -0.0448,-0.08585 -0.103978,-0.166123 -0.168199,-0.248472 -0.0076,-0.0071 -0.02461,-0.0054 -0.02092,-0.02272 -0.0347,-0.01125 -0.05443,-0.03595 -0.07001,-0.06489 -0.008,-0.0043 -0.01839,-0.0068 -0.02553,-0.01205 -0.02935,-0.02732 -0.05429,-0.06282 -0.08336,-0.09132 -0.05518,-0.05417 -0.129783,-0.08416 -0.176208,-0.146455 -0.01572,-0.002 -0.01677,-0.0012 -0.02552,-0.0046 -0.03649,-0.04751 -0.106646,-0.07726 -0.145062,-0.112178 -0.02774,-0.0022 -0.05354,-0.0024 -0.07312,0.0042 -0.008,0.01678 -0.02327,0.02534 -0.02746,0.04635 0.0035,0.005 0.0095,0.0074 0.01023,0.01484 -0.02314,0.140433 0.113171,0.236591 0.164491,0.331875 0.02165,0.01401 0.03752,0.03383 0.06037,0.04681 0.0037,0.01394 -0.0252,0.02536 -0.0052,0.03245 0.0018,8e-4 0.0031,8e-4 0.0047,9.14e-4 -0.0031,0.01566 -0.0028,0.03201 -0.0028,0.04171 -0.0056,0.0058 -0.01009,0.01306 -0.01202,0.02272 10e-4,0.0072 0.01987,0.01658 0.01378,0.019 -0.0749,-0.02753 -0.101155,-0.121908 -0.193267,-0.08899 -0.0028,0.0601 0.1019,0.0813 0.09597,0.143222 -0.0014,0.0155 -0.03189,0.04433 -0.04643,0.05976 -0.05696,0.06111 -0.111983,0.13097 -0.168196,0.17517 -0.08143,0.117324 -0.180511,0.215515 -0.262832,0.33195 -0.0068,-0.0012 -0.0079,0.004 -0.01438,0.0033 -0.02194,0.05429 -0.08781,0.07935 -0.09685,0.13809 l -0.0079,0.0098 c -10e-4,-0.0022 -0.0028,-0.0043 -0.0037,-0.0065 -0.0065,-0.0135 -0.01202,-0.02789 -0.01765,-0.04213 l 0.0056,-0.02003 v -0.0013 c 0.0043,0.0049 0.0098,0.0092 0.01765,0.01246 -6.86e-4,-0.02566 -0.01603,-0.05859 0.01068,-0.07965 0.03488,-0.0047 0.05325,-0.03145 0.09641,-0.03619 -0.004,-0.0053 -0.0082,-0.0085 -0.01262,-0.01068 l 0.01023,-0.01483 c 0.0043,-0.01884 -0.0037,-0.05429 -0.01111,-0.07372 0.02535,-0.04168 0.0617,-0.08899 0.0574,-0.150549 -0.01572,-0.0089 -0.02078,-0.02774 -0.02728,-0.04509 -0.0528,-0.07416 -0.163007,-0.09982 -0.284634,-0.08514 -0.03827,0.03886 -0.0571,0.142688 -0.02967,0.197864 v 0.03427 c -0.02819,-0.02299 -0.06141,-0.04272 -0.07965,-0.07283 -0.208693,-0.04999 -0.414268,-0.04687 -0.626224,-0.04168 -0.01884,-0.105756 -0.158409,-0.05533 -0.246217,-0.04732 -0.0068,0.01409 -0.01691,0.02507 -0.02359,0.03946 -0.237319,-0.01291 -0.526403,-0.007 -0.807031,-0.0018 -0.0076,-0.299422 -6.86e-4,-0.577396 0.0039,-0.843652 0.0047,-0.284605 -0.02285,-0.574845 0.01156,-0.857491 -0.02314,-0.01626 -0.05814,-0.02998 -0.08899,-0.02921 z m -0.0028,0.02874 c 1.44e-4,1.56e-4 2.95e-4,3.15e-4 3.51e-4,4.57e-4 -0.0018,4.22e-4 -0.0035,8e-4 -0.005,0.0014 0.0014,-6.29e-4 0.0028,-0.0014 0.0046,-0.0019 z m -0.01617,0.0102 c 0,-8.4e-5 2.99e-4,8.5e-5 3.52e-4,0 -0.0018,0.0023 -0.0039,0.0049 -0.0052,0.0079 0.0014,-0.003 0.0028,-0.0055 0.0047,-0.0079 z m -0.008,0.01761 c -0.0018,0.0069 -0.0028,0.01457 -0.0031,0.02271 -3.51e-4,0.0081 -2.99e-4,0.01654 -10e-4,0.02503 -0.0021,0.03689 -0.0046,0.07524 -0.0065,0.113569 0.0018,-0.03832 0.0039,-0.07668 0.0061,-0.113569 6.86e-4,-0.0085 10e-4,-0.01689 0.0014,-0.02503 6.86e-4,-0.0081 0.0018,-0.01582 0.0031,-0.02271 z m -0.01572,0.276269 c -0.0031,0.0759 -0.0061,0.14917 -0.0079,0.212741 0.0018,-0.06344 0.0047,-0.137007 0.0079,-0.212741 z m 2.616584,0.581697 c 0.0031,-5.27e-4 0.0031,0.0015 0.0031,0.0037 0.05622,0.02059 0.09745,0.05529 0.134828,0.09318 0.03161,0.03194 0.09582,0.06826 0.140907,0.112162 -0.01069,0.01231 -3.52e-4,0.04088 -0.0098,0.06164 -0.04257,0.01203 -0.07031,0.04034 -0.09078,0.07648 -0.09063,-0.08514 -0.187332,-0.182602 -0.186295,-0.340211 0.0061,0.0016 0.0071,-0.0025 0.0079,-0.007 z m -0.02876,0.03245 c 0.0018,0.01032 0.0042,0.02073 0.0055,0.03337 6.86e-4,0.0042 10e-4,0.0087 0.0014,0.01344 -1.69e-4,-2.52e-4 -2.78e-4,-6.86e-4 -3.51e-4,-9.15e-4 -2.82e-4,-0.0044 -3.52e-4,-0.0086 -10e-4,-0.01252 -0.0014,-0.01263 -0.0035,-0.02305 -0.0055,-0.03337 z m -2.596561,0.02364 c 0,0.04601 -3.52e-4,0.09181 -0.0014,0.1372 10e-4,-0.04538 0.0014,-0.09119 0.0014,-0.1372 z m 3.023437,0.187244 c 0.0092,0.01489 0.01958,0.02902 0.03055,0.04218 -0.01097,-0.01315 -0.02134,-0.02729 -0.03055,-0.04218 z m -3.02581,0.03337 c -1.48e-4,0.05373 0.001,0.103664 0.0028,0.149719 -0.0018,-0.04605 -0.0028,-0.096 -0.0028,-0.149719 z m 3.019281,0.0357 c 0.124889,0.09887 0.268616,0.213839 0.286564,0.384768 -0.08722,-0.07327 -0.164048,-0.14082 -0.242512,-0.225779 0.0064,-0.01709 -0.01129,-0.0342 -0.02359,-0.04497 -0.0028,0.0051 -0.0051,0.009 -0.0074,0.01298 l -0.0083,-0.02363 0.0051,-0.01531 c 0.0025,0.0061 0.0046,0.01235 0.0074,0.01854 0.02802,-0.03486 0.0042,-0.07728 -0.01719,-0.1066 z m -0.311922,0.145076 c 0.01793,0.01357 0.03575,0.02806 0.05429,0.04171 l -0.01244,-4.57e-4 z m 0.285523,0.03662 10e-4,4.57e-4 c 0.0067,0.03244 0.04449,0.04613 0.07268,0.07185 0.03708,0.03391 0.07209,0.07766 0.09641,0.09739 l 10e-4,0.0013 c -0.07847,-0.04568 -0.149215,-0.09881 -0.209879,-0.160842 z m -0.0528,0.0139 c -0.001,0.0011 -0.0021,0.0018 -0.0046,0.0014 z m -0.109315,0.0445 c -0.0014,0.0018 -0.0025,0.0034 -0.0039,0.0051 0.001,-0.0024 0.0025,-0.0042 0.0039,-0.0051 z m -2.819641,0.04678 c 0.0021,0.08173 0.0021,0.16019 0.0028,0.237318 h -3.51e-4 c -6.86e-4,-0.07713 -1.48e-4,-0.155592 -0.0025,-0.237318 z m 3.260756,0.100119 c 0.0043,0.0034 0.008,0.0074 0.01129,0.01157 z m -3.015133,0.151142 h 0.008 0.005 l -0.005,4.56e-4 z m 1.375707,0.02047 c 0.02788,-1.46e-4 0.05429,0.0012 0.07327,0.0092 z m 1.379413,0.07772 c 6.86e-4,8.57e-4 0.0014,0.0016 0.0018,0.0023 0,5.71e-4 -1.68e-4,0.0012 0,0.0019 l -3.51e-4,-0.0019 z m 1.741465,0.153956 c -1.68e-4,0.01394 -0.0018,0.0267 -0.0037,0.03886 0.0021,-0.01216 0.0035,-0.02492 0.0037,-0.03886 z m -2.370812,0.0037 c -0.005,0.02003 0.01557,0.0218 0.02032,0.04123 -0.0035,0.01261 -0.0068,0.02537 -0.01023,0.03797 l -0.03752,0.0019 c -0.01378,-0.0088 -0.03589,-0.005 -0.0528,-4.57e-4 0.02714,-0.02641 0.04687,-0.06096 0.08024,-0.08069 z m 0.04776,0.03515 c -0.0018,2.97e-4 -0.0028,0.0012 -0.0039,0.0019 10e-4,-8.57e-4 0.0021,-0.0015 0.0039,-0.0019 z m 2.314302,0.02417 c -0.0035,0.01394 -0.0077,0.02729 -0.01171,0.04124 0.0039,-0.01379 0.0083,-0.02744 0.01171,-0.04124 z m -0.01396,0.05147 c -0.0047,0.01794 -0.0092,0.03664 -0.01111,0.05785 0.0018,-0.02121 0.0064,-0.0399 0.01111,-0.05785 z m -1.346041,0.111243 c -0.04331,0 -0.08647,0.0016 -0.128447,0.0046 0.04197,-0.003 0.08514,-0.0046 0.128447,-0.0046 z m 0.06526,8.58e-4 c 0.04376,0.0013 0.08707,0.0038 0.130377,0.0074 -0.04316,-0.0034 -0.08677,-0.0061 -0.130377,-0.0074 z m 0.336104,0.03619 c 0.01051,5.72e-4 0.02046,2.97e-4 0.03055,0.0013 -0.01009,-0.001 -0.02004,-7.43e-4 -0.03055,-0.0013 z m 0.03797,0.0028 c 0.0025,4.58e-4 0.0055,5.72e-4 0.008,0.0013 0.0028,8.58e-4 0.0052,0.0024 0.0079,0.0037 -0.0028,-0.0013 -0.0055,-0.0023 -0.0084,-0.0033 -0.0025,-7.44e-4 -0.0049,-0.0013 -0.0074,-0.0018 z m 0.411601,0.146396 c 0.01244,0.007 0.02553,0.01275 0.03752,0.01899 -0.01202,-0.0062 -0.02507,-0.01201 -0.03752,-0.01899 z m 0.07698,0.05102 c 0.01083,0.0049 0.02152,0.01008 0.03203,0.01528 -0.01055,-0.0052 -0.0212,-0.0099 -0.03203,-0.01484 0,-1.46e-4 1.69e-4,-2.97e-4 0,-4.57e-4 z m 0.06304,0.03145 c 0.02046,0.01127 0.0399,0.02299 0.05933,0.0353 -0.01944,-0.01231 -0.03886,-0.02403 -0.05933,-0.0353 z m -6.823351,0.0019 c -0.0079,0.03471 -0.01638,0.06927 -0.02271,0.104717 0.0063,-0.03545 0.0148,-0.07001 0.02271,-0.104717 z m 5.931629,0.03471 c 0.02493,0.0052 0.05043,0.01157 0.07505,0.01632 -0.02461,-0.0047 -0.05014,-0.01113 -0.07505,-0.01632 z m 0.171462,0.01305 c 0.0035,0.0018 0.0079,0.0034 0.01244,0.0046 -0.0046,-0.0012 -0.0089,-0.0023 -0.01244,-0.0042 -0.0085,0.0042 -0.01765,0.0067 -0.02788,0.0079 -0.01009,0.0012 -0.02137,0.001 -0.03277,0 0.01143,0.001 0.02268,0.0012 0.03277,0 0.01023,-0.0012 0.01944,-0.0042 0.02788,-0.0083 z m 0.118213,0.01661 c 0.0056,0.001 0.01111,0.0021 0.01617,0.0037 v 4.57e-4 c -0.0049,-0.0015 -0.01069,-0.0031 -0.01617,-0.0042 z m 0.08291,0.0065 c -0.0092,0.0021 -0.01751,0.0052 -0.02507,0.0098 0.0076,-0.0046 0.01586,-0.0077 0.02507,-0.0098 z m -0.582173,0.0083 c 0.01452,0.0016 0.0288,0.004 0.04213,0.0074 -0.01336,-0.0034 -0.0276,-0.0058 -0.04213,-0.0074 z m 0.703205,0.0042 c 0.03189,0.0098 0.06422,0.02299 0.09315,0.03619 -0.02893,-0.0132 -0.06126,-0.02641 -0.09315,-0.03619 z m -0.812077,0.0023 c -0.01392,0.0033 -0.02714,0.0077 -0.03945,0.0129 0.0123,-0.0052 0.02553,-0.0096 0.03945,-0.0129 z m 0.462477,0.0129 c 0,0.0022 -1.69e-4,0.0043 -3.52e-4,0.0065 h -3.66e-4 c 2.81e-4,-0.0022 10e-4,-0.0043 10e-4,-0.0065 z m 0.108572,0.01809 c 0.0068,8.58e-4 0.01276,0.0022 0.01853,0.0042 -0.0056,-0.0018 -0.01188,-0.0033 -0.01853,-0.0042 z m 0.06482,0.0057 c 0.0028,0.0028 0.0052,0.0055 0.0074,0.0088 -0.0021,-0.0031 -0.0047,-0.0059 -0.0074,-0.0088 z m -0.03842,0.0013 c 0.0079,0.0034 0.01483,0.0082 0.02134,0.01306 -0.0065,-0.0049 -0.0135,-0.0096 -0.02134,-0.01306 z m -0.549245,0.0028 c -0.01244,0.0028 -0.02566,0.0074 -0.03752,0.01112 0.01185,-0.0037 0.02507,-0.0083 0.03752,-0.01112 z m -0.113618,0.02462 c -0.0028,0.008 -0.0025,0.01201 -0.0051,0.02596 0.0025,-0.01394 0.0025,-0.01795 0.0051,-0.02596 z m 0.08484,0.02907 c 3.51e-4,0.0025 0.001,0.0049 0.001,0.008 -1.69e-4,-1.46e-4 -2.81e-4,0 -3.52e-4,0 1.69e-4,-0.0031 0,-0.0055 -3.51e-4,-0.008 z m -0.254525,0.0052 c -0.01972,0.007 -0.03916,0.01543 -0.05784,0.02403 0.01867,-0.0086 0.03812,-0.01706 0.05784,-0.02403 z m 0.08529,0.02269 c -0.01557,0.0016 -0.03115,0.0038 -0.04584,0.007 0.01484,-0.0031 0.03009,-0.0053 0.04584,-0.007 z m -0.08796,0.01988 c -0.01322,0.0055 -0.02553,0.01216 -0.03664,0.02047 0.01128,-0.0085 0.02327,-0.01498 0.03664,-0.02047 z m 0.414269,0.02136 c 0.0028,0 0.0059,2.98e-4 0.0089,8.57e-4 -0.0059,-10e-4 -0.01185,-5.71e-4 -0.01765,5.72e-4 0.0028,-5.72e-4 0.0059,-0.0013 0.0088,-0.0015 z m -0.06897,0.0098 c 0.0018,0.0013 0.0043,0.0022 0.0079,0.0027 -0.0035,-4.58e-4 -0.0059,-0.0013 -0.0079,-0.0027 z m 0.968259,4.57e-4 c 1.69e-4,0 2.82e-4,-1.46e-4 3.52e-4,0 3.51e-4,0.0043 6.86e-4,0.0077 0.0014,0.01068 -6.86e-4,-0.0031 -0.0014,-0.0062 -0.0018,-0.01068 z m 0.0031,0.01483 c 0.001,0.0037 0.0031,0.0071 0.0055,0.01023 -0.0025,-0.0031 -0.0042,-0.0065 -0.0055,-0.01023 z m 0.09968,0.0079 c 0.0025,-1.46e-4 0.0052,-1.46e-4 0.0079,0 -0.0077,-2.97e-4 -0.01557,5.72e-4 -0.02373,0.0028 0.0055,-0.0015 0.01055,-0.0025 0.01586,-0.0028 z m -1.086472,0.01572 c -1.69e-4,8.57e-4 -1.69e-4,0.0018 0,0.0028 0.0025,0.0035 0.0043,0.0074 0.0064,0.01112 -0.0021,-0.0037 -0.0045,-0.0076 -0.007,-0.01112 0,-0.001 3.51e-4,-0.0019 6.86e-4,-0.0028 z m 0.978342,0.0047 c 0.0053,0.0012 0.01023,0.0033 0.01483,0.005 -0.0047,-0.0019 -0.0095,-0.0033 -0.01483,-0.0046 0,-1.46e-4 1.69e-4,-4.57e-4 0,-4.57e-4 z m 0.01544,0.005 c 0.0095,0.0037 0.01779,0.0085 0.02595,0.01335 -0.0082,-0.0049 -0.0166,-0.0096 -0.02595,-0.01335 z m 0.03708,0.0037 c 3.52e-4,0.001 6.86e-4,0.0019 10e-4,0.0033 -2.81e-4,-0.0012 -6.86e-4,-0.0022 -10e-4,-0.0033 z m -0.01069,0.0096 c 0.01231,0.0076 0.02359,0.01602 0.0356,0.02373 -0.01202,-0.0076 -0.02345,-0.01617 -0.0356,-0.02373 z m -1.494367,0.0015 c -0.0079,0.01409 -0.01765,0.02625 -0.02595,0.0399 0.0083,-0.01365 0.01797,-0.02581 0.02595,-0.0399 z m 0.486655,4.57e-4 c 0.0037,0.0076 0.0067,0.01542 0.0092,0.02314 -0.0025,-0.0077 -0.0055,-0.01557 -0.0092,-0.02314 z m 0.978493,0.01721 c 0,0 -1.69e-4,2.98e-4 0,4.58e-4 -0.0031,0.0023 -0.0064,0.005 -0.0094,0.0079 0.0031,-0.003 0.0058,-0.0058 0.0094,-0.0083 z m -0.828836,8.58e-4 c 0.0051,0.0077 0.0082,0.01602 0.01069,0.02403 0.0028,0.0082 0.0051,0.01631 0.0094,0.02418 0.0028,0.0049 0.0061,0.0095 0.0096,0.01394 -0.0035,-0.0045 -0.007,-0.009 -0.0096,-0.01394 -0.0043,-0.0079 -0.0067,-0.01602 -0.0094,-0.02418 -0.0025,-0.008 -0.0055,-0.01617 -0.01069,-0.02403 z m 0.81074,0.01617 c 0,0 3.52e-4,1.46e-4 3.52e-4,0 -0.0052,0.0062 -0.01023,0.01306 -0.01438,0.02003 0.0042,-0.0071 0.0088,-0.01364 0.01396,-0.02003 z m -0.945122,0.01216 c 0.0031,0.01557 0.004,0.03159 0.0031,0.04717 6.86e-4,-0.01557 -1.68e-4,-0.03159 -0.0031,-0.04717 z m 0.909375,0.05191 c -0.0051,0.01068 -0.01069,0.02092 -0.01705,0.03011 0.0064,-0.0093 0.01188,-0.01943 0.01705,-0.03011 z m -1.449868,0.01617 c -0.0086,1.46e-4 -0.01691,0.001 -0.02493,0.0022 0.0079,-0.0012 0.01645,-0.0021 0.02493,-0.0022 z m 0.01304,0 c 0.0088,2.98e-4 0.01765,0.0013 0.02641,0.0028 -0.0088,-0.0015 -0.01765,-0.0025 -0.02641,-0.0028 z m 1.181994,0.0074 c 0.01129,0.01053 0.02387,0.01943 0.03842,0.0264 0.0096,0.0046 0.02032,0.0083 0.03161,0.01113 -0.01129,-0.0028 -0.02194,-0.0065 -0.03161,-0.01113 -0.01452,-0.007 -0.02714,-0.01587 -0.03842,-0.0264 z m -0.658706,0.01706 c -0.0043,0.01483 -0.01037,0.02907 -0.01765,0.04227 0.0073,-0.0132 0.01336,-0.02744 0.01765,-0.04227 z m 0.882082,0.0061 c -0.0028,0.0025 -0.0056,0.0049 -0.0089,0.007 0.0031,-0.0021 0.0061,-0.0045 0.0089,-0.007 z m 0.145951,0.07194 v 0.0013 c -0.0042,0.01231 -0.0065,0.02447 -0.007,0.03619 -2.81e-4,0.008 1.69e-4,0.01587 0.0014,0.02358 10e-4,0.0077 0.0031,0.01543 0.0059,0.0227 -0.0028,-0.0073 -0.0047,-0.01498 -0.0059,-0.0227 -0.0014,-0.0077 -0.0018,-0.01557 -0.0014,-0.02358 3.52e-4,-0.01216 0.0025,-0.02477 0.007,-0.03752 z m -1.353456,0.01424 c 0.0047,0.0089 0.0092,0.01587 0.01262,0.01899 -1.69e-4,0 -3.52e-4,1.45e-4 -6.86e-4,0 -0.0031,-0.0031 -0.0073,-0.01009 -0.01202,-0.01899 z m 1.683031,0.007 c 0.0067,0.0092 0.01322,0.0178 0.01944,0.0264 0,0.0012 -3.52e-4,0.0025 -10e-4,0.0033 3.51e-4,-7.43e-4 3.51e-4,-0.0021 3.51e-4,-0.0033 -0.0061,-0.0085 -0.01244,-0.0175 -0.01899,-0.0264 z m -7.193268,0.02789 c -0.01849,0.09152 -0.03791,0.18585 -0.05516,0.287304 0.01726,-0.101454 0.03667,-0.195788 0.05516,-0.287304 z m 5.627114,0.0028 c 0.0079,0.001 0.01631,0.0019 0.02507,0.0022 -0.0089,-2.96e-4 -0.01705,-0.001 -0.02507,-0.0022 z m 1.562892,0.0022 h 3.51e-4 c -0.0018,0.0049 -0.0039,0.0095 -0.0059,0.01394 0.0021,-0.0045 0.0037,-0.009 0.0055,-0.01394 z m 0.03946,0.02358 c 0.0046,0.01023 0.01097,0.02076 0.01617,0.03159 -0.0052,-0.01112 -0.01157,-0.02121 -0.01617,-0.03159 z m 0.04361,0.0057 c 0.004,0.01157 0.0084,0.02403 0.01156,0.03664 -0.0031,-0.01261 -0.0076,-0.02507 -0.01156,-0.03664 z m -1.823941,0.01528 c 0.0051,0.01098 0.01009,0.02151 0.01483,0.03056 -1.69e-4,0.0033 -6.86e-4,0.0065 -0.0014,0.0098 6.86e-4,-0.0033 0.001,-0.0065 0.001,-0.0098 -0.0047,-0.0091 -0.0094,-0.01958 -0.01438,-0.03056 z m 1.796944,0.01113 c 0.0062,0.0129 0.01023,0.0264 0.008,0.04213 0.0021,-0.01543 -0.0018,-0.02937 -0.008,-0.04213 z m -0.358199,0.01483 c 0.0025,0.0031 0.0055,0.0059 0.0083,0.0089 -0.0028,-0.0031 -0.0058,-0.0057 -0.0083,-0.0089 z m -0.639722,0.01854 c -1.69e-4,4.57e-4 -1.69e-4,10e-4 0,0.0019 h -3.52e-4 c -1.69e-4,-8.58e-4 2.81e-4,-0.0015 3.52e-4,-0.0019 z m 0.853305,0.01438 c -0.0076,0.0031 -0.01498,0.0059 -0.02268,0.0079 0.0076,-0.0019 0.01529,-0.0047 0.02268,-0.0079 z m 0.151145,0.0013 c -10e-4,0.0047 -0.0028,0.0093 -0.0055,0.01439 0.0025,-0.005 0.0043,-0.0096 0.0055,-0.01439 z m -1.116585,0.001 c -0.03604,0.0067 -0.0709,0.01513 -0.104715,0.02492 0.03382,-0.0098 0.06867,-0.01824 0.104715,-0.02492 z m 1.09849,0.01572 c -0.0014,-1.46e-4 -0.0031,1.45e-4 -0.0055,8.57e-4 -0.0028,8.58e-4 -0.0053,0.0019 -0.0079,0.0037 -0.0077,0.0053 -0.01543,0.01469 -0.02226,0.02595 0.0068,-0.01127 0.01452,-0.02061 0.02226,-0.02595 0.0025,-0.0018 0.0052,-0.0033 0.0079,-0.0042 0.0021,-7.43e-4 0.004,-5.72e-4 0.0055,-4.57e-4 z m -1.785824,0.0055 c -0.0025,0.0077 -0.0047,0.01632 -0.0061,0.02507 0.0014,-0.0088 0.0035,-0.01736 0.0061,-0.02507 z m 0.830024,0.0052 c -0.02078,0.0052 -0.03069,0.0067 -0.04346,0.0055 0.0123,0.001 0.0224,-4.57e-4 0.04346,-0.0055 z m 0.963661,0.0088 h 3.51e-4 c 10e-4,0.0015 0.0021,0.0038 0.0039,0.0065 -0.0018,-0.0027 -0.0031,-0.005 -0.0043,-0.0065 z m -1.26209,0.0061 c 2.81e-4,-1.46e-4 6.86e-4,0 10e-4,0 -0.01645,0.0057 -0.03308,0.01172 -0.0491,0.01809 0.01586,-0.0064 0.03189,-0.01246 0.0482,-0.01809 z m 0.133046,4.57e-4 c -0.01705,0.0035 -0.03336,0.0076 -0.04969,0.01201 0.01632,-0.0045 0.03263,-0.0085 0.04969,-0.01201 z m 1.079057,0.01661 c -0.0042,0.0085 -0.008,0.0175 -0.01111,0.02699 0.0031,-0.0095 0.007,-0.01854 0.01111,-0.02699 z m -1.260754,0.001 c -0.04791,0.01913 -0.09359,0.04123 -0.137644,0.06571 0.04405,-0.02447 0.08973,-0.04657 0.137644,-0.06571 z m 1.322459,0.0018 c 1.65e-4,0.0037 -1.69e-4,0.0074 -0.0018,0.01112 h -3.52e-4 c 0.0018,-0.0037 0.0025,-0.0074 0.0025,-0.01112 z m -1.284043,0.02373 c -0.02996,0.01142 -0.05918,0.02388 -0.08751,0.03649 0.02834,-0.01261 0.05755,-0.02507 0.08751,-0.03649 z m 0.655888,0.02537 c 0.01853,0.0083 0.03693,0.0175 0.05473,0.02744 -0.01779,-0.01008 -0.03604,-0.01913 -0.05473,-0.02744 z m -0.410117,0.0052 c 0.0052,-1.46e-4 0.01055,2.97e-4 0.01572,4.57e-4 -0.01023,-4.57e-4 -0.02134,-2.97e-4 -0.03203,4.57e-4 -0.0098,7.43e-4 -0.01944,0.0021 -0.02819,0.0037 0.0088,-0.0018 0.01825,-0.003 0.02819,-0.0037 0.0053,-4.57e-4 0.01097,-8.58e-4 0.01631,-8.58e-4 z m -1.086025,0.02774 c 0.01097,0.0079 0.02078,0.01661 0.03055,0.02329 0.0031,0.0021 0.0064,0.0038 0.0098,0.0055 0.0046,0.0023 0.0098,0.0049 0.01526,0.007 -0.0055,-0.0021 -0.01068,-0.0042 -0.01526,-0.0065 -0.0035,-0.0016 -0.0065,-0.0038 -0.0098,-0.0059 -0.0098,-0.0067 -0.01959,-0.01543 -0.03055,-0.02329 z m 0.620142,0.0074 c -0.02862,0.01736 -0.05637,0.03604 -0.08351,0.05518 0.02714,-0.01913 0.05488,-0.03782 0.08351,-0.05518 z m 0.793531,0.01484 c 0.0035,0.0013 0.007,0.0025 0.01069,0.0042 0.01097,0.005 0.02137,0.01023 0.03143,0.01528 -0.01009,-0.005 -0.02046,-0.0098 -0.03143,-0.01484 -0.0037,-0.0015 -0.0073,-0.0033 -0.01069,-0.0046 z m 0.630824,0.001 c 0.0021,0.0071 0.0056,0.01335 0.01023,0.01795 -0.0047,-0.0046 -0.008,-0.01068 -0.01023,-0.01795 z m -1.892913,0.01943 c -0.01023,5.71e-4 -0.02137,0.003 -0.03203,0.0037 0.01083,-7.44e-4 0.02165,-0.0031 0.03203,-0.0037 z m 2.134383,0 c 0.0092,0.01112 0.01765,0.02284 0.02553,0.03515 -0.0079,-0.01231 -0.01631,-0.02403 -0.02553,-0.03515 z m -1.707504,0.03337 c -0.0218,0.01469 -0.04331,0.02966 -0.06497,0.04628 0.02165,-0.01661 0.04316,-0.03159 0.06497,-0.04628 z m 0.145948,0.01157 c -0.0095,0.0061 -0.01871,0.01275 -0.02728,0.01943 0.0086,-0.0067 0.01779,-0.01335 0.02728,-0.01943 z m -0.824086,0.0129 c 1.69e-4,0.0055 -0.001,0.01068 3.52e-4,0.01632 -0.0014,-0.0057 -2.78e-4,-0.01083 -3.52e-4,-0.01632 z m 2.426432,0.0028 c 0.0059,0.01083 0.01111,0.0218 0.01617,0.03337 -0.0049,-0.01142 -0.01023,-0.02255 -0.01617,-0.03337 z m -7.497334,0.0079 c -0.0018,0.01127 -0.0038,0.02121 -0.0055,0.03159 0.0018,-0.01023 0.004,-0.02032 0.0055,-0.03159 z m 7.271139,0.0019 c 1.69e-4,-1.46e-4 3.52e-4,0 3.52e-4,0 -0.0018,0.0019 -0.0035,0.0038 -0.0046,0.0059 10e-4,-0.0022 0.0025,-0.004 0.0042,-0.0059 z m -0.0042,0.0065 c -0.0025,0.0043 -0.0035,0.0088 -0.0037,0.01379 1.69e-4,-0.0049 0.0014,-0.0095 0.0037,-0.01379 z m -2.194306,0.0013 c 6.86e-4,0.0015 0.0018,0.0027 0.0028,0.0042 h -3.51e-4 c -10e-4,-0.0015 -0.0018,-0.0027 -0.0025,-0.0042 z m 0.554434,0.0013 c -0.02595,0.02061 -0.05117,0.04242 -0.07609,0.06407 -0.01793,0.0359 -0.03648,0.07268 -0.05606,0.109315 0.01959,-0.03664 0.03812,-0.07342 0.05606,-0.109315 l -3.52e-4,-5.71e-4 c 0.02493,-0.02165 0.05043,-0.04286 0.07653,-0.06348 z m 1.644914,0.04316 c 0.0055,0.01083 0.01305,0.0218 0.02046,0.03144 -0.0074,-0.0096 -0.01498,-0.02062 -0.02046,-0.03144 z m -2.111244,0.0092 c 0.0051,0.0061 0.0096,0.01246 0.0135,0.01958 0.0039,0.007 0.007,0.01498 0.0096,0.02313 -0.0028,-0.0082 -0.0058,-0.01617 -0.0096,-0.02313 -0.0039,-0.0071 -0.0084,-0.0135 -0.0135,-0.01958 z m 1.806736,0.02551 c 0.0098,0.009 0.01944,0.0178 0.02876,0.02684 -0.0094,-0.0089 -0.01899,-0.01795 -0.02876,-0.02684 z m 0.56882,0.0023 c 0,-1.46e-4 2.81e-4,0 3.51e-4,0 0.0014,0.0028 0.0025,0.0055 0.0037,0.0083 -0.0014,-0.0028 -0.0028,-0.0055 -0.0042,-0.0083 z m -0.179914,0.01157 c 0.0046,0.0025 0.0094,0.0047 0.01438,0.0065 -0.0051,-0.0018 -0.0096,-0.004 -0.01438,-0.0065 z m 0.187332,0.0042 c 0.0046,0.01127 0.008,0.0224 0.0092,0.03337 -10e-4,-0.01083 -0.0046,-0.0221 -0.0092,-0.03337 z m -1.520914,0.01484 c -0.0031,0.0021 -0.0068,0.0042 -0.01055,0.0061 -0.0068,0.0033 -0.01392,0.0057 -0.0218,0.0083 0.0077,-0.0027 0.01512,-0.0055 0.0218,-0.0088 0.0037,-0.0019 0.0073,-0.0035 0.01055,-0.0057 z m -0.830615,0.02462 c 3.51e-4,0.0047 10e-4,0.0098 10e-4,0.01484 l -3.52e-4,4.57e-4 c -1.69e-4,-0.0052 -1.69e-4,-0.01038 -6.86e-4,-0.01528 z m 2.354792,0.02862 c -0.0021,0.0037 -0.004,0.0076 -0.007,0.01127 -1.69e-4,0 -2.82e-4,-1.46e-4 -3.52e-4,0 -0.0094,8.57e-4 -0.01825,0.0027 -0.02654,0.0055 0.0085,-0.003 0.01705,-0.0046 0.02654,-0.0055 0.0028,-0.0037 0.0053,-0.0076 0.0074,-0.01127 z m -1.859243,0.01127 c -0.0021,0 -0.0045,7.43e-4 -0.0065,0.0013 0.0021,-7.43e-4 0.0042,-0.0013 0.0065,-0.0013 z m 0.01438,0.0018 c 0.02018,0.0052 0.0439,0.01928 0.05844,0.01988 -0.01452,-4.57e-4 -0.03827,-0.01469 -0.05844,-0.01988 z m 1.018837,0.0218 c 0.0088,0.0099 0.0187,0.02003 0.02774,0.031 -0.009,-0.01098 -0.01899,-0.02106 -0.02774,-0.031 z m 0.806437,0.0022 c 0,0.004 0.0014,0.0064 0.0028,0.0089 -0.0014,-0.0023 -0.0028,-0.0052 -0.0028,-0.0089 z m -0.896468,0.02373 c -0.0021,8.58e-4 -0.0043,0.0018 -0.0064,0.0023 v -5.72e-4 c 0.0021,-4.57e-4 0.0043,-8.57e-4 0.0064,-0.0018 z m 0.820082,0.0055 c -0.0079,0.01172 -0.0141,0.02477 -0.01913,0.03901 0.005,-0.01424 0.01129,-0.02729 0.01913,-0.03901 z m -7.443195,0.04183 c 0.0028,0.01795 0.006,0.03427 0.0097,0.04999 -0.0037,-0.01572 -0.007,-0.03204 -0.0097,-0.04999 z m 5.42406,0.0092 c -0.0073,0.01142 -0.01603,0.0224 -0.02461,0.03337 0.0086,-0.01098 0.01737,-0.02195 0.02461,-0.03337 z m 0.03619,0.0052 c -0.0056,0.0098 -0.01156,0.01854 -0.01765,0.02685 0.0061,-0.0083 0.01202,-0.01706 0.01765,-0.02685 z m -0.31934,0.0046 c -0.0049,0.0018 -0.01245,0.0068 -0.02092,0.0129 0.0088,-0.0062 0.01603,-0.01112 0.02092,-0.0129 z m 2.274844,0.0083 c -0.0021,0.01038 -0.0035,0.02121 -0.0042,0.03248 6.86e-4,-0.01127 0.0021,-0.0221 0.0042,-0.03248 z m 0.198902,0.03901 c 0.0065,0.01528 0.01202,0.0313 0.01705,0.04761 -0.005,-0.01631 -0.01051,-0.03233 -0.01705,-0.04761 z m -2.704093,8.57e-4 c -0.03069,0.0073 -0.06126,0.01543 -0.09003,0.02551 0.0288,-0.01008 0.05933,-0.01824 0.09003,-0.02551 z m 0.159449,0.0027 c -0.0028,0.0021 -0.0052,0.0037 -0.0065,0.0043 -0.0035,0.0013 -0.0067,0.0025 -0.01023,0.0037 0.0035,-0.0012 0.0068,-0.0028 0.01023,-0.0042 0.0014,-5.71e-4 0.0037,-0.0018 0.0065,-0.0038 z m 2.363394,0.01809 c 6.86e-4,4.57e-4 0.0018,4.57e-4 0.0028,5.71e-4 -1.68e-4,0 0,2.98e-4 0,4.57e-4 -10e-4,-1.46e-4 -0.0021,-5.72e-4 -0.0028,-10e-4 z m -2.553546,0.007 c 1.44e-4,1.45e-4 0,4.57e-4 0,4.57e-4 -0.01498,0.0062 -0.03027,0.01202 -0.04539,0.01809 -0.02774,0.01142 -0.05458,0.02344 -0.07921,0.03797 v -4.56e-4 c 0.02461,-0.01453 0.05162,-0.02625 0.07921,-0.03753 0.01512,-0.0061 0.03041,-0.01246 0.04539,-0.01854 z m 2.541533,4.57e-4 c -6.86e-4,0.0021 -0.0018,0.0034 -0.0028,0.0047 10e-4,-0.0013 0.0021,-0.003 0.0028,-0.0047 z m -0.0079,0.007 h 3.52e-4 c -0.0028,0.0132 -0.0045,0.02655 -0.0047,0.03946 2.81e-4,-0.0129 0.0014,-0.02625 0.0043,-0.03946 z m -2.057949,0.06097 c -0.0052,0.01558 -0.01322,0.031 -0.02092,0.04583 0.0077,-0.01483 0.01572,-0.03026 0.02092,-0.04583 z m 1.679325,0.01246 c 0.0051,0.02358 0.0095,0.04835 0.01336,0.07327 -0.0039,-0.02492 -0.0083,-0.04969 -0.01336,-0.07327 z m 0.38134,0.02225 c 0.0035,0.01187 0.0079,0.02314 0.0135,0.03382 -0.0056,-0.01068 -0.01009,-0.02195 -0.0135,-0.03382 z m -2.544648,0.01023 c 3.52e-4,0.0043 0.001,0.0086 0.0031,0.01113 -0.0025,-0.0025 -0.0028,-0.0068 -0.0031,-0.01113 z m 0.109463,0.0022 c 0.0084,0.0042 0.01663,0.0089 0.02447,0.01394 -0.0077,-0.0049 -0.01603,-0.0098 -0.02447,-0.01394 z m 1.241621,0.0033 c 0.0056,4.57e-4 0.01156,0.0015 0.01765,0.0028 -0.0061,-0.0013 -0.01202,-0.0025 -0.01765,-0.0028 z m -0.01009,4.57e-4 c -0.0059,5.72e-4 -0.01111,0.0016 -0.01572,0.0037 0.0045,-0.0019 0.0099,-0.0033 0.01572,-0.0037 z m -0.04924,0.0019 c 0.0028,2.96e-4 0.01069,0.0019 0.01958,0.0022 -0.0089,-2.96e-4 -0.01677,-0.0019 -0.01958,-0.0022 z m -0.0537,0.01068 c 0.004,1.45e-4 0.0085,0.0015 0.0135,0.0028 -0.0074,-0.0021 -0.01396,-0.003 -0.01958,-0.0023 0.0018,-1.46e-4 0.004,-5.72e-4 0.0061,-4.57e-4 z m -0.03841,0.007 c 0.001,0 0.0018,5.72e-4 0.0021,8.57e-4 -10e-4,-5.71e-4 -0.0028,-0.001 -0.0055,-4.56e-4 10e-4,-2.98e-4 0.0025,-5.72e-4 0.0031,-4.58e-4 z m 0.01438,0.0033 c 0,-1.45e-4 2.81e-4,0 3.52e-4,0 -0.0014,0.0015 -0.0028,0.0031 -0.0037,0.005 0.001,-0.0019 0.0018,-0.0035 0.0031,-0.005 z m -0.08113,0.01424 c 0.0014,0.0023 10e-4,0.0055 -0.0031,0.0093 0.0043,-0.0038 0.0046,-0.007 0.0031,-0.0093 z m -0.01765,5.71e-4 c -0.0018,0.0018 -0.0028,0.0045 -0.0028,0.0079 0,0.0049 0.0018,0.01053 0.0056,0.01484 0.0061,-0.0052 0.0083,-0.004 0.01009,-0.0019 -0.0018,-0.0019 -0.0042,-0.0023 -0.01009,0.0023 -1.69e-4,-1.46e-4 0,-4.57e-4 0,-4.57e-4 -0.0035,-0.0042 -0.0056,-0.01008 -0.0056,-0.01484 0,-0.0034 10e-4,-0.0061 0.0028,-0.0079 z m 1.462771,0.0096 c 0.0039,0.0046 0.0082,0.0089 0.01262,0.01305 -0.0045,-0.0042 -0.0086,-0.0085 -0.01262,-0.01305 z m -7.408783,0.0098 c -0.01135,0.03204 -0.02215,0.06482 -0.03154,0.09819 0.0094,-0.03338 0.02015,-0.06615 0.03154,-0.09819 z m 5.978051,8.58e-4 c 0,1.46e-4 2.81e-4,2.97e-4 3.51e-4,4.57e-4 -0.0094,0.0061 -0.01336,0.0057 -0.01586,0.0037 0.0028,0.0016 0.0065,0.0015 0.01543,-0.0042 z m 10e-4,0.0019 c 0.0014,0.0025 0.0025,0.005 0.0021,0.0092 2.81e-4,-0.0042 -10e-4,-0.0067 -0.0021,-0.0092 z m -5.922875,0.0055 c 0.0021,-1.46e-4 0.0043,-2.97e-4 0.0065,0 -6.3e-5,1.45e-4 7.4e-5,2.97e-4 0,4.57e-4 -0.0021,-2.97e-4 -0.0045,-5.72e-4 -0.0065,-4.57e-4 z m 0,0 c -0.0041,1.45e-4 -0.0078,0.001 -0.01111,0.0028 0.0035,-0.0018 0.0071,-0.0027 0.01111,-0.0028 z m 6.312966,0.01068 c 0.0031,0.0073 0.0064,0.01528 0.0088,0.02358 0.005,0.01661 0.0082,0.03471 0.01023,0.05339 -0.0021,-0.01869 -0.0052,-0.03679 -0.01023,-0.05339 -0.0025,-0.0083 -0.0053,-0.01632 -0.0088,-0.02358 z m -0.241024,0.01528 c -0.0089,5.72e-4 -0.01779,0.0019 -0.02595,0.0042 0.0082,-0.0022 0.01705,-0.0035 0.02595,-0.0042 z m -1.111986,0.01572 c 0.0059,0.0092 0.01129,0.01854 0.01617,0.02788 -0.0049,-0.0093 -0.01023,-0.01869 -0.01617,-0.02788 z m 2.597598,0.0074 c -10e-4,0.0095 -0.0018,0.01928 -0.0031,0.02878 h -3.52e-4 c 0.0014,-0.0095 0.0028,-0.01928 0.0037,-0.02878 z m -1.579204,0.01765 c 0.0014,0 0.0028,2.97e-4 0.0042,4.57e-4 -0.0031,-2.97e-4 -0.0052,-7.43e-4 -0.0088,8.57e-4 0.0014,-5.71e-4 0.0031,-0.0013 0.0046,-0.0013 z m -0.258234,0.02136 c -0.0049,0.01275 -0.0089,0.02596 -0.01245,0.03886 0.0035,-0.0129 0.0076,-0.0261 0.01245,-0.03886 z m 0.462624,0.0096 c 0.0028,0.0038 0.0047,0.0082 0.0065,0.01261 -0.0018,-0.0045 -0.0039,-0.0088 -0.0065,-0.01261 z m 0.08247,0.0057 c 0.004,0.01112 0.0071,0.02284 0.0088,0.03471 -0.0018,-0.01187 -0.0047,-0.02358 -0.0088,-0.03471 z m 1.261197,0.0013 c -0.0031,0.0031 -0.0061,0.0058 -0.01009,0.0079 0.0037,-0.0019 0.0071,-0.0049 0.01009,-0.0079 z m -0.03009,0.0061 c 0.0031,0 0.0065,1.46e-4 0.0098,4.57e-4 -0.0065,-5.71e-4 -0.0129,-4.57e-4 -0.01899,0 0.0028,-1.46e-4 0.0061,-4.57e-4 0.0092,-4.57e-4 z m -1.695491,0.01661 c 0.004,-1.46e-4 0.0083,4.56e-4 0.0129,0.0015 -0.0046,-0.001 -0.0089,-0.0016 -0.0129,-0.0015 z m 1.699643,0 c 0.0031,0.0031 -0.0053,0.01187 -0.0096,0.02092 0.0043,-0.009 0.01276,-0.0178 0.0096,-0.02092 z m -1.705725,0.001 c -0.0053,0.0012 -0.01009,0.0035 -0.01378,0.007 0.0037,-0.0034 0.0084,-0.0058 0.01378,-0.007 z m 0.379266,0.0129 c 0.0021,0.0031 0.0045,0.0061 0.0068,0.0089 -0.0025,-0.0028 -0.0047,-0.0058 -0.0068,-0.0089 z m 0.161228,0.0019 c 0,0.01794 -6.86e-4,0.03515 -0.0018,0.04999 -2.81e-4,0.0055 -0.001,0.01098 -0.0018,0.01631 6.86e-4,-0.0055 0.001,-0.01112 0.0014,-0.01676 10e-4,-0.01484 0.0025,-0.03159 0.0025,-0.04954 z m 0.445861,0.0018 c 0.0014,0.0067 0.0021,0.0132 0.0025,0.02003 0,-0.0068 -0.001,-0.01335 -0.0025,-0.02003 z m 0.622515,0.01023 c 1.69e-4,-1.46e-4 3.52e-4,0 3.52e-4,0 -0.0039,0.0045 -0.0077,0.0093 -0.01114,0.01439 0.0035,-0.005 0.0068,-0.0099 0.01069,-0.01439 z m -0.435183,0.0037 c 6.86e-4,0.02477 2.81e-4,0.0488 -3.52e-4,0.07223 6.86e-4,-0.02343 10e-4,-0.04747 3.52e-4,-0.07223 z m -0.955354,0.0055 c 0.0071,1.46e-4 0.01336,0.001 0.01853,0.0028 -0.0052,-0.0018 -0.01143,-0.0027 -0.01853,-0.0028 z m -5.850939,5.72e-4 c -0.0062,0.02878 -0.01079,0.05607 -0.01343,0.08291 0.0028,-0.02685 0.0072,-0.05414 0.01343,-0.08291 z m 3.554291,0.0064 c 0.0014,0.0028 0.0021,0.0061 0.0028,0.0098 -6.86e-4,-0.0034 -0.0018,-0.0065 -0.0031,-0.0093 0,-1.46e-4 2.95e-4,-2.98e-4 3.51e-4,-4.57e-4 z m 2.354644,0.0093 c -1.69e-4,0.0021 2.78e-4,0.0047 0.0014,0.0074 -0.001,-0.0027 -0.0014,-0.0053 -0.0014,-0.0074 z m -0.889946,0.01528 c -0.0025,0.02699 -0.0035,0.05429 -0.0042,0.08202 6.86e-4,-0.02774 0.0018,-0.05503 0.0042,-0.08202 z m 2.323941,0 c 0.0018,0.0016 0.0031,0.0034 0.0047,0.005 -0.0018,-0.0016 -0.0031,-0.0034 -0.0047,-0.005 z m -1.640316,0.01706 c 1.69e-4,0 2.82e-4,1.46e-4 3.52e-4,0 0,0.0052 -2.81e-4,0.01023 0,0.01543 -2.81e-4,-0.0052 -3.52e-4,-0.01023 -3.52e-4,-0.01543 z m 0.02046,0.0023 c 0.0018,0.0031 0.0031,0.0073 0.0042,0.01201 -10e-4,-0.0047 -0.0025,-0.0089 -0.0042,-0.01201 z m 0.928805,0.0057 c -1.68e-4,2.97e-4 -2.81e-4,8.57e-4 -3.51e-4,0.0013 0,1.45e-4 -3.52e-4,-1.46e-4 -3.52e-4,0 2.78e-4,-4.57e-4 0.001,-8.58e-4 0.001,-0.0013 z m -0.446754,0.0022 c 0.0014,0.0045 0.0021,0.0096 0.0018,0.01484 2.78e-4,-0.0052 -2.81e-4,-0.01038 -0.0018,-0.01484 z m -3.41427,0.0019 c -0.007,0.0013 -0.01396,0.003 -0.02092,0.0037 -0.04435,0.0049 -0.08781,0.0089 -0.130676,0.0129 0.04287,-0.004 0.08633,-0.0086 0.130676,-0.01335 0.007,-8.58e-4 0.01392,-0.0019 0.02092,-0.0033 z m -2.879859,0.01157 c -0.0047,0.03189 -0.0077,0.06467 -0.0092,0.0973 0.0018,-0.03263 0.0046,-0.06541 0.0092,-0.0973 z m 3.077724,0.01112 c 0.0098,-4.56e-4 0.01959,2.98e-4 0.02968,0.0022 -0.0099,-0.0019 -0.02004,-0.0027 -0.02968,-0.0022 z m -0.03101,0.0042 c -0.02064,0.0043 -0.04079,0.01083 -0.0617,0.01483 -0.02373,0.0046 -0.04805,0.01008 -0.07268,0.01617 0.02461,-0.0061 0.04895,-0.01157 0.07268,-0.01617 0.02078,-0.004 0.04109,-0.01053 0.0617,-0.01483 z m 3.247403,8.57e-4 c 10e-4,0.0018 0.0021,0.0033 0.0037,0.0046 -0.0014,-0.0013 -0.0028,-0.0027 -0.0037,-0.0046 z m -1.155591,0.0019 c 6.86e-4,0.0059 10e-4,0.01172 10e-4,0.0175 0,0.0042 -10e-4,0.0082 -0.0018,0.01216 0.001,-0.004 0.0014,-0.008 0.0014,-0.01216 1.69e-4,-0.0058 1.69e-4,-0.01157 -3.51e-4,-0.0175 z m -3.320678,0.0037 c 0.01069,0.01172 0.02106,0.02344 0.03069,0.03604 -0.0096,-0.01246 -0.02018,-0.02432 -0.03069,-0.03604 z m 3.415311,0.0022 c 0.0014,0.01083 0.0031,0.02003 0.0055,0.02284 -0.0021,-0.0028 -0.004,-0.01201 -0.0055,-0.02284 z m 0.386976,0.0028 c 6.86e-4,0.0129 0.0021,0.02596 0.0042,0.03842 -0.0021,-0.01246 -0.0035,-0.02551 -0.0042,-0.03842 z m 1.272767,0.0023 c -0.0018,0.0224 -0.0039,0.04361 -0.007,0.06348 0.0031,-0.01988 0.0053,-0.04109 0.007,-0.06348 z m -0.972411,0.0028 c 0.0089,0.0077 0.01884,0.01409 0.03009,0.01899 -0.01111,-0.0049 -0.0212,-0.01142 -0.03009,-0.01899 z m -0.119103,0.0027 c 0.0031,0.0085 0.0079,0.01557 0.0129,0.02092 -0.0052,-0.0055 -0.0095,-0.01231 -0.0129,-0.02092 z m -3.036048,0.01157 c -0.01853,0.0058 -0.0399,0.01008 -0.06259,0.0135 0.02285,-0.0034 0.0439,-0.0076 0.06259,-0.0135 z m 0.0014,5.71e-4 c 6.86e-4,2.98e-4 0.0014,7.44e-4 0.0018,0.0013 -6.86e-4,-4.57e-4 -10e-4,-10e-4 -0.0018,-0.0013 z m 3.473155,0.0013 c -0.0035,0.009 -0.0077,0.01765 -0.01202,0.02596 0.0043,-0.0082 0.0085,-0.01706 0.01202,-0.02596 z m -6.396471,0.005 c -0.0018,0.02329 -0.0028,0.04702 -0.0028,0.07045 1.66e-4,0.02433 0.0014,0.0485 0.0037,0.07238 -0.0025,-0.02388 -0.0035,-0.04805 -0.0037,-0.07238 -1.65e-4,-0.02358 10e-4,-0.04702 0.0028,-0.07045 z m 1.954614,0.0098 c 0.01899,0.02492 0.03693,0.05058 0.0534,0.07787 -0.01645,-0.02729 -0.03442,-0.0531 -0.0534,-0.07787 z m 3.443489,0.0033 c 6.86e-4,0.01231 0.0025,0.02418 0.0046,0.0356 -0.0021,-0.01142 -0.004,-0.02329 -0.0046,-0.0356 z m -0.543756,0.01201 c -0.0018,0.0019 -0.0035,0.0045 -0.0046,0.0074 10e-4,-0.003 0.0028,-0.0055 0.0046,-0.0074 z m -0.04301,0.0057 c 0.0035,-1.45e-4 0.0076,0 0.01157,4.57e-4 -1.44e-4,1.46e-4 0,2.97e-4 0,4.57e-4 -0.008,-8.58e-4 -0.01544,-7.43e-4 -0.02226,4.57e-4 0.0035,-5.72e-4 0.007,-0.0013 0.01069,-0.0013 z m -4.217146,0.0046 c -0.01895,0.02862 -0.03651,0.05844 -0.05283,0.08855 0.01631,-0.03011 0.03389,-0.05992 0.05283,-0.08855 z m 4.18689,0.0028 c -0.01202,0.0057 -0.02285,0.01409 -0.03294,0.02358 0.01009,-0.0095 0.02092,-0.01809 0.03294,-0.02358 z m 0.477453,0.0059 c -10e-4,0.01884 -0.0021,0.03797 -0.0042,0.05696 0.0021,-0.01899 0.0031,-0.03812 0.0042,-0.05696 z m -4.701427,0.0037 c -6.86e-4,0.0016 -0.0014,0.0031 -0.0025,0.0046 -0.02296,0.03352 -0.04721,0.07045 -0.06952,0.110353 0.02327,-0.04153 0.04792,-0.08054 0.07183,-0.114951 z m 2.2968,8.58e-4 c -0.01691,0.0037 -0.03456,0.0057 -0.05191,0.0079 -0.01751,0.0023 -0.0347,0.0049 -0.05102,0.0093 0.01632,-0.0045 0.03354,-0.007 0.05102,-0.0093 0.01737,-0.0022 0.03501,-0.0042 0.05191,-0.0079 z m 3.508309,0.007 c -0.0055,0.0073 -0.01143,0.01409 -0.01765,0.02047 0.0062,-0.0064 0.01217,-0.0132 0.01765,-0.02047 z m -5.078763,0.0057 c -6.3e-5,0.0031 3.51e-4,0.0062 0.001,0.0088 -6.86e-4,-0.0027 -0.001,-0.0053 -0.001,-0.0088 z m 4.659301,0.02032 c -0.0025,0.0055 -0.0031,0.01098 -0.0042,0.01632 0.001,-0.0053 0.0018,-0.01083 0.0042,-0.01632 z m -3.225159,4.58e-4 c -0.0037,0.0018 -0.0071,0.0034 -0.01111,0.0042 -0.05873,0.0129 -0.09092,0.0178 -0.147432,0.02655 0.05651,-0.0088 0.08825,-0.01409 0.146989,-0.02699 0.004,-8.58e-4 0.0079,-0.0019 0.01157,-0.0037 z m -0.654108,0.0019 h 6.86e-4 c 3.52e-4,0.0035 10e-4,0.0071 0.0018,0.01113 0.0047,0.01973 0.01529,0.04331 0.02686,0.06348 -0.01156,-0.02017 -0.02211,-0.04376 -0.02686,-0.06348 -0.001,-0.004 -0.0018,-0.0076 -0.0025,-0.01113 z m 4.271288,0.0013 c -0.0065,0.0061 -0.01305,0.01157 -0.02032,0.01676 0.0071,-0.0052 0.01396,-0.01083 0.02032,-0.01676 z m 1.106941,0.0042 h 3.52e-4 c -0.0031,0.01306 -0.0043,0.02581 -0.0037,0.03812 -6.86e-4,-0.01231 1.69e-4,-0.02507 0.0031,-0.03812 z m -3.602491,5.72e-4 c 0.0025,0.0024 0.0045,0.0046 0.0061,0.0074 -0.0018,-0.0027 -0.0037,-0.0052 -0.0061,-0.0074 z m -2.52418,0.0064 c 3.52e-4,0.0016 3.52e-4,0.0031 -3.51e-4,0.0061 6.86e-4,-0.0025 6.86e-4,-0.0046 3.51e-4,-0.0061 z m 4.753193,0.0033 h 6.86e-4 c 0.001,0.0027 0.0018,0.0052 0.0031,0.0074 -0.0014,-0.0022 -0.0028,-0.0047 -0.0039,-0.0074 z m -0.05606,0.0033 c 0.0035,0.003 0.0074,0.0057 0.01157,0.0079 -0.0043,-0.0022 -0.008,-0.0049 -0.01157,-0.0079 z m -3.992143,0.0055 c 0.0077,0.01409 0.01529,0.02848 0.02226,0.04316 0.007,0.01483 0.0135,0.02981 0.01944,0.04538 -0.0059,-0.01558 -0.01245,-0.03056 -0.01944,-0.04538 -0.007,-0.01469 -0.01452,-0.02907 -0.02226,-0.04316 z m 3.912937,0.0052 c -0.001,0.0018 -0.0021,0.0037 -0.0037,0.0055 -1.69e-4,0 -2.82e-4,1.46e-4 -3.52e-4,0 0.0018,-0.0018 0.0031,-0.0037 0.0042,-0.0055 z m -4.009349,4.57e-4 c 0.004,0.003 0.0079,0.0064 0.01157,0.0098 -0.0037,-0.0034 -0.0076,-0.0068 -0.01157,-0.0098 z m 4.3677,0.0023 c -0.01572,0.0088 -0.03277,0.01646 -0.05058,0.02225 0.01797,-0.0058 0.03488,-0.01335 0.05058,-0.02225 z m -1.462475,0.005 c 0.0028,-1.46e-4 0.0053,1.46e-4 0.0079,4.57e-4 -0.0052,-5.71e-4 -0.01055,-1.45e-4 -0.01572,8.58e-4 -0.0077,0.0016 -0.01483,0.0049 -0.02226,0.0093 0.0073,-0.0045 0.0147,-0.0077 0.02226,-0.0093 0.0025,-4.57e-4 0.0053,-0.0012 0.0079,-0.0013 z m 0.464993,0.0023 c 0.0025,0.01943 0.0056,0.03812 0.0092,0.05606 -0.0035,-0.01795 -0.0067,-0.03663 -0.0092,-0.05606 z m -0.495549,0.0083 c -0.0098,0.0059 -0.01912,0.01409 -0.02834,0.02269 0.0092,-0.0088 0.01838,-0.01676 0.02834,-0.02269 z m 1.140316,0.0028 c 1.69e-4,5.72e-4 6.86e-4,10e-4 0.0014,0.0018 -6.86e-4,-7.44e-4 -10e-4,-0.001 -0.0014,-0.0018 z m 0.122217,0 c 0.0046,0.0031 0.01055,0.0057 0.01632,0.0088 -0.0058,-0.0031 -0.01171,-0.0057 -0.01632,-0.0088 z m 0.767726,0.0013 c -0.0045,0.01246 -0.0092,0.02492 -0.01438,0.03664 0.0052,-0.01172 0.0099,-0.02417 0.01438,-0.03664 z m -5.275739,0.0037 c 0.01069,0.0068 0.02064,0.01424 0.02968,0.02225 -0.009,-0.008 -0.01898,-0.01543 -0.02968,-0.02225 z m 2.485321,0 c -0.004,0.0052 -0.0077,0.01112 -0.01114,0.01765 0.0035,-0.0067 0.0071,-0.01246 0.01114,-0.01765 z m 1.88238,0.0042 c 0.0014,0.0013 0.0031,0.0027 0.0051,0.0037 -0.0018,-0.001 -0.0035,-0.0023 -0.0051,-0.0037 z m 0.02314,0 c -10e-4,5.72e-4 -0.0018,0.0013 -0.0025,0.0019 10e-4,-7.43e-4 0.0014,-0.0012 0.0025,-0.0019 z m -2.097894,0.0052 c 6.86e-4,-1.45e-4 10e-4,5.72e-4 0.0018,8.58e-4 -0.0014,-7.43e-4 -0.0028,-0.0012 -0.0037,0 3.51e-4,-5.72e-4 0.001,-8.58e-4 0.0018,-8.58e-4 z m -3.36043,0.0138 c -0.03104,0.05562 -0.05933,0.116137 -0.07927,0.177988 0.01983,-0.062 0.04818,-0.122367 0.07927,-0.177988 z m 4.270842,0.0052 c 0,-1.46e-4 2.98e-4,0 3.52e-4,0 -0.0088,0.0092 -0.01691,0.01854 -0.02461,0.02685 -0.0047,0.005 -0.0094,0.01068 -0.01395,0.01617 0.0046,-0.0055 0.0088,-0.01112 0.0135,-0.01617 0.0077,-0.0083 0.01589,-0.01765 0.02461,-0.02685 z m -3.963958,4.57e-4 c -0.0093,0.01469 -0.01993,0.02759 -0.03013,0.04123 0.0102,-0.01364 0.02085,-0.02655 0.03013,-0.04123 z m 3.173095,0.0096 c -0.0018,0.0043 -0.0028,0.0088 -0.0037,0.01306 10e-4,0.0021 10e-4,0.004 0.0014,0.0059 -3.51e-4,-0.0019 -10e-4,-0.0038 -0.0018,-0.0059 10e-4,-0.0043 0.0025,-0.0088 0.0042,-0.01306 z m -3.716408,0.0057 c 0.0043,0.01676 0.0079,0.03575 0.01251,0.05428 -0.0046,-0.01854 -0.0082,-0.03752 -0.01251,-0.05428 z m 4.790424,0.005 c 0.0025,0.0028 0.0051,0.0053 0.0074,0.0083 -0.0021,-0.003 -0.0049,-0.0055 -0.0074,-0.0083 z m 2.57624,0.01157 c -2.81e-4,0.0099 10e-4,0.02299 3.52e-4,0.03575 6.86e-4,-0.01275 -6.86e-4,-0.02581 -3.52e-4,-0.03575 z m -5.97746,0.0057 c 0.0042,0.004 0.0079,0.0091 0.01009,0.01484 -0.0021,-0.0058 -0.0059,-0.01083 -0.01009,-0.01484 z m 0.474637,0.0037 h 3.52e-4 c 6.86e-4,0.0046 10e-4,0.0092 0.0018,0.01394 -6.86e-4,-0.0047 -0.0014,-0.0093 -0.0021,-0.01394 z m -0.430141,0.0018 c 10e-4,0.0019 0.0018,0.0035 0.0031,0.0052 0.0055,0.0073 0.01185,0.01483 0.01853,0.02269 -0.0067,-0.0079 -0.0135,-0.01543 -0.01913,-0.02269 -10e-4,-0.0016 -0.0018,-0.0034 -0.0028,-0.0052 z m 4.455209,0.001 c 0.0021,0.0045 0.0056,0.0085 0.0098,0.01201 -0.0042,-0.0035 -0.0077,-0.0076 -0.0098,-0.01201 z m -1.078611,0.0042 c 0.0039,0.0068 0.0073,0.01439 0.01023,0.02225 -0.0028,-0.0079 -0.0064,-0.01542 -0.01023,-0.02225 z m 2.551174,0.04405 c -0.0018,0.0037 -0.0045,0.0067 -0.0079,0.0096 0.0031,-0.0028 0.0061,-0.0061 0.0079,-0.0096 z m -6.295318,0.0022 c 0.01754,0.0061 0.03382,0.0132 0.04868,0.0218 -0.01484,-0.0086 -0.03112,-0.01572 -0.04868,-0.0218 z m 5.456398,0.01023 c 1.66e-4,-1.46e-4 3.52e-4,1.45e-4 3.52e-4,0 -0.0014,0.0021 -0.0031,0.0045 -0.0046,0.0065 0.0014,-0.0021 0.0028,-0.0045 0.0042,-0.0065 z m 0.819488,0.005 c 2.81e-4,0.0058 -1.65e-4,0.01083 -10e-4,0.01528 -6.86e-4,0.0046 -0.0021,0.0085 -0.0037,0.01216 0.0014,-0.0037 0.0028,-0.0076 0.0037,-0.01216 6.86e-4,-0.0045 10e-4,-0.0095 10e-4,-0.01528 z m -7.561263,0.0052 c 0.0075,0.0227 0.01578,0.04346 0.02458,0.06304 -0.0088,-0.01958 -0.01712,-0.04034 -0.02458,-0.06304 z m 1.354792,0.01528 c 0.0067,0.0049 0.01318,0.01008 0.01899,0.01572 -0.0058,-0.0057 -0.0123,-0.01083 -0.01899,-0.01572 z m -1.212029,0.0065 c 0.004,0.01469 0.0085,0.02907 0.01343,0.04301 -0.0049,-0.01394 -0.0095,-0.02833 -0.01343,-0.04301 z m 1.517947,0.0092 c 0.0059,0.01394 0.0123,0.02922 0.01765,0.0445 -0.0053,-0.01528 -0.01171,-0.03041 -0.01765,-0.0445 z m 5.807334,8.58e-4 c -0.007,0.001 -0.01396,0.0027 -0.02046,0.0047 -0.0099,0.003 -0.01899,0.0073 -0.02728,0.01246 0.0082,-0.005 0.01751,-0.0095 0.02728,-0.01246 0.0067,-0.0021 0.01336,-0.0037 0.02046,-0.0047 z m -5.7351,0.0085 c 3.51e-4,0.0037 2.99e-4,0.0079 6.86e-4,0.01157 -2.96e-4,-0.0037 -1.44e-4,-0.0079 -6.86e-4,-0.01157 z m 0.332394,4.57e-4 c 6.86e-4,0.0028 6.86e-4,0.0057 -0.0014,0.0083 -0.001,0.0013 -0.0025,0.0023 -0.0042,0.0037 0.0018,-0.0013 0.0031,-0.0023 0.0042,-0.0037 0.0018,-0.0027 0.0018,-0.0055 0.0014,-0.0083 z m 5.39766,0.0138 c 6.86e-4,0.001 10e-4,0.0019 3.52e-4,0.0033 3.51e-4,-0.0012 0,-0.0022 -3.52e-4,-0.0033 z m -6.344561,0.0023 c -0.0014,10e-4 -0.0031,0.0023 -0.0046,0.0037 0.0014,-0.0015 0.0028,-0.0027 0.0046,-0.0037 z m 0.279504,0.0019 c 0.0047,0.0067 0.009,0.0138 0.0129,0.02121 -0.0037,-0.0074 -0.0083,-0.01469 -0.0129,-0.02121 z m 3.885644,0.0018 c 0.0077,0.01913 0.01645,0.03723 0.02595,0.05473 -0.0095,-0.0175 -0.01825,-0.0356 -0.02595,-0.05473 z m -4.516911,0.0013 c -0.0063,0.01068 -0.0123,0.0218 -0.01761,0.03352 0.0053,-0.01172 0.01135,-0.02284 0.01761,-0.03352 z m -0.127012,0.0033 c -0.0049,0.01676 -0.0091,0.03411 -0.01297,0.05191 0.0039,-0.01765 0.0081,-0.0353 0.01297,-0.05191 z m 0.583108,0.01023 c 0.0039,-2.97e-4 0.0078,-1.46e-4 0.01206,0 -0.02116,-5.72e-4 -0.03819,0.0046 -0.05331,0.01068 -0.02116,0.0085 -0.03835,0.01854 -0.05885,0.01765 0.02028,7.43e-4 0.03785,-0.0092 0.05885,-0.01765 0.0121,-0.0049 0.02559,-0.0095 0.04126,-0.01068 z m -0.631773,0.0019 c -0.0018,0.01884 -0.0053,0.03723 -0.0097,0.05562 0.0044,-0.01839 0.0081,-0.03679 0.0097,-0.05562 z m 4.976867,8.58e-4 c 0.0021,2.97e-4 0.0043,0.0012 0.0068,0.0024 -0.0046,-0.0021 -0.0089,-0.0025 -0.0129,-0.0019 0.0018,-2.97e-4 0.004,-7.43e-4 0.0061,-4.57e-4 z m -0.01217,0.0018 c -0.0056,0.0021 -0.01083,0.0057 -0.01617,0.008 0.0053,-0.0023 0.01051,-0.0059 0.01617,-0.008 z m -5.186147,5.72e-4 c -0.0021,0.0077 -0.0041,0.01528 -0.006,0.02313 -0.0045,0.01824 -0.0088,0.03575 -0.01297,0.05325 0.0041,-0.01736 0.008,-0.035 0.01251,-0.05325 V 75.621 c 0.0018,-0.0077 0.0043,-0.01513 0.0065,-0.0227 z m 0.06212,0 c -0.008,0.02492 -0.016,0.04999 -0.02226,0.07505 0.0063,-0.02507 0.01427,-0.05014 0.02226,-0.07505 z m -0.267915,0.0046 c 0.0054,0.0135 0.01125,0.0267 0.01761,0.03931 -0.0064,-0.0126 -0.01223,-0.02581 -0.01761,-0.03931 z m 4.129041,0.0129 c 6.86e-4,7.43e-4 0.001,0.0013 0.0021,0.0019 -10e-4,-4.57e-4 -0.0018,-0.0012 -0.0021,-0.0019 z m -3.951054,0.0047 c -0.0018,0.01201 -0.0039,0.02403 -0.006,0.03604 0.0021,-0.01187 0.0039,-0.02373 0.0055,-0.0356 1.09e-4,-2.97e-4 3.51e-4,-2.97e-4 3.51e-4,-4.56e-4 z m 0.950209,0.0018 c 0.0051,0.0028 0.01055,0.0055 0.0167,0.0074 -0.0061,-0.0019 -0.01153,-0.0046 -0.0167,-0.0074 z m 6.145807,0.0033 c -0.0021,0.0067 -0.0052,0.01216 -0.0098,0.01617 0.0046,-0.004 0.0077,-0.0095 0.0098,-0.01617 z m -0.771287,0.0079 c -0.0052,0.0088 -0.01262,0.01661 -0.02046,0.02507 0.0079,-0.0085 0.01529,-0.01632 0.02046,-0.02507 z m -0.151141,0.0055 c 0.0039,0.0028 0.0065,0.0045 0.0088,0.0047 -0.0021,-2.97e-4 -0.0049,-0.0019 -0.0088,-0.0047 z m 0.03249,0.0015 h 3.51e-4 c -1.68e-4,0.0037 -10e-4,0.0064 -0.0014,0.0083 3.52e-4,-0.0021 6.86e-4,-0.0045 10e-4,-0.0083 z m -2.541976,0.0037 c 0.0021,0.004 0.0035,0.0088 0.0037,0.01439 -1.48e-4,-0.0057 -0.0018,-0.01038 -0.0037,-0.01439 z m 3.427767,0.01023 c 10e-4,0.0018 0.0028,0.0034 0.0042,0.005 -0.0014,-0.0016 -0.0028,-0.0033 -0.0042,-0.005 z m -0.817709,0.01068 c 2.82e-4,0.001 6.86e-4,0.0021 3.52e-4,0.0035 0,0 -2.81e-4,1.46e-4 -3.52e-4,0 1.69e-4,-0.0015 2.82e-4,-0.0025 0,-0.0035 z m -0.08024,4.58e-4 h 6.86e-4 c 1.69e-4,0.0012 2.82e-4,0.0022 10e-4,0.0031 -6.86e-4,-8.58e-4 -10e-4,-0.0019 -0.0014,-0.0031 z m -6.491846,8.57e-4 c 0.01241,0.02092 0.02475,0.04183 0.038,0.06215 -0.01325,-0.02032 -0.02556,-0.04123 -0.038,-0.06215 z m 1.008602,0.0065 c -0.0057,0.01127 -0.01051,0.02329 -0.01392,0.03708 0.0035,-0.01365 0.0083,-0.02596 0.01392,-0.03708 z m 3.989471,0.0046 c -0.0058,-1.46e-4 -0.01068,10e-4 -0.01438,0.0033 -0.0018,0.001 -0.0035,0.0027 -0.0052,0.0042 0.0018,-0.0016 0.0031,-0.003 0.0052,-0.0042 0.0037,-0.0022 0.0083,-0.0034 0.01438,-0.0033 z m -0.854346,0.007 c -10e-4,0.007 -0.0021,0.0135 -0.0021,0.02032 1.48e-4,-0.0068 10e-4,-0.01335 0.0021,-0.02032 z m 1.15144,0 c 0.0096,0.01661 0.01884,0.03308 0.02728,0.04954 -0.0084,-0.01646 -0.01765,-0.03293 -0.02728,-0.04954 z m -5.125484,0.01112 c 0.01178,0.01646 0.02482,0.03174 0.03893,0.04538 -0.01413,-0.01364 -0.02714,-0.02893 -0.03893,-0.04538 z m 0.190507,0.0027 c -0.0031,0.01661 -0.0051,0.03278 -0.0055,0.0488 -1.8e-4,0.0065 1.62e-4,0.01365 10e-4,0.02076 -6.86e-4,-0.0071 -0.0014,-0.01424 -0.0014,-0.02076 3.51e-4,-0.01602 0.0028,-0.03218 0.006,-0.0488 z m 5.154259,0 c 0.0065,0.01306 0.0147,0.02447 0.02359,0.0353 -0.0089,-0.01083 -0.01705,-0.02225 -0.02359,-0.0353 z m -1.299764,0.0047 c -0.0018,8.58e-4 -0.0039,0.0022 -0.0059,0.0027 v -4.57e-4 c 0.0021,-4.57e-4 0.0043,-0.0013 0.0059,-0.0022 z m 0.749483,0.0042 c -0.001,0.0018 -0.0021,0.0034 -0.0035,0.005 -1.68e-4,1.46e-4 -3.51e-4,0 -6.86e-4,0 0.0014,-0.0016 0.0028,-0.0033 0.0042,-0.005 z m -3.797541,0.0018 c 0.0031,0 0.0063,4.57e-4 0.0093,10e-4 -0.0028,-5.72e-4 -0.0062,-5.72e-4 -0.0093,-4.57e-4 -0.0039,0 -0.0077,4.57e-4 -0.0116,0.0013 -0.0078,0.0018 -0.01554,0.0052 -0.02317,0.0096 0.0076,-0.0045 0.01533,-0.0079 0.02317,-0.0096 0.0039,-8.58e-4 0.0077,-0.0018 0.0116,-0.0019 z m 3.033672,0.007 c 1.44e-4,0 3.51e-4,1.46e-4 6.86e-4,0 0.0018,0.0018 0.0028,0.0037 0.0042,0.0057 -0.001,-0.0019 -0.0028,-0.0038 -0.0047,-0.0057 z m -2.997927,0.0033 c 0.006,0.0025 0.01238,0.0049 0.01899,0.0065 0.0066,0.0016 0.01364,0.0022 0.02134,0.0013 -0.0077,8.57e-4 -0.0147,2.97e-4 -0.02134,-0.0013 -0.0066,-0.0016 -0.01297,-0.004 -0.01899,-0.0065 z m 3.004898,0.0083 c 10e-4,0.004 10e-4,0.0079 0,0.01216 10e-4,-0.0043 10e-4,-0.0082 0,-0.01216 z m 0.717592,0.0015 c -0.02299,0.01127 -0.04494,0.02388 -0.06541,0.03797 0.02046,-0.01424 0.04227,-0.02655 0.06541,-0.03797 z m -3.933852,0.0028 c -10e-4,0.0077 -0.0014,0.01587 -0.0014,0.02447 h -3.51e-4 c 6.3e-5,-0.0086 10e-4,-0.01676 0.0018,-0.02447 z m -0.343933,0.0068 c -6.86e-4,1.46e-4 -10e-4,5.72e-4 -0.0018,0.001 6.86e-4,-5.72e-4 10e-4,-8.58e-4 0.0018,-0.001 z m 4.017357,0 c 0.0083,0.01839 0.01838,0.03589 0.02728,0.05384 -0.009,-0.01794 -0.01884,-0.0353 -0.02728,-0.05384 z m 1.799318,0.0065 c 1.69e-4,0.001 3.51e-4,0.0021 10e-4,0.0028 -3.52e-4,-7.43e-4 -6.86e-4,-0.0018 -10e-4,-0.0028 z m -5.484724,0.0033 c 6.86e-4,0 10e-4,5.72e-4 0.0014,8.58e-4 -3.51e-4,-2.97e-4 -6.86e-4,-2.97e-4 -0.0014,-4.57e-4 0,-1.46e-4 -1.7e-5,-2.97e-4 0,-4.57e-4 z m 5.489323,0.0042 c 6.86e-4,8.58e-4 0.0018,0.0019 0.0018,0.0033 -2.81e-4,-0.0012 -0.0014,-0.0023 -0.0018,-0.0033 z m -5.033227,0.0015 c 6.86e-4,0.003 2.95e-4,0.0058 -3.52e-4,0.0088 6.86e-4,-0.0028 0.001,-0.0059 3.52e-4,-0.0088 z m -0.450105,0.0018 c 3.52e-4,2.97e-4 10e-4,8.57e-4 0.0018,8.57e-4 -6.86e-4,0 -0.0014,-4.57e-4 -0.0018,-8.57e-4 z m 5.463071,0.0018 c -0.0043,-1.46e-4 -0.0084,2.97e-4 -0.01023,0.0019 0.0018,-0.0016 0.0059,-0.0021 0.01023,-0.0019 z m 0.968259,0 c -0.0018,0.01706 -0.0047,0.03367 -0.0083,0.05014 0.0035,-0.01632 0.0064,-0.03323 0.0083,-0.05014 z m -7.357316,5.72e-4 c 0.01072,0.01439 0.02226,0.02788 0.03477,0.04079 -0.01251,-0.0129 -0.02405,-0.0264 -0.03477,-0.04079 z m 6.372297,0.0042 c 0.0028,1.46e-4 0.008,0.003 0.0088,0.0027 -6.86e-4,2.97e-4 -0.0059,-0.0025 -0.0088,-0.0027 z m -0.0088,0.0022 c 0.001,-1.46e-4 0.0021,0 0.0031,0 h 3.51e-4 c -0.001,0.0016 -0.0021,0.0034 -0.0031,0.0047 0.001,-0.0013 0.0018,-0.0031 0.0028,-0.0047 -0.0028,-1.46e-4 -0.0045,4.56e-4 -0.0061,0.0015 6.86e-4,-4.57e-4 0.0018,-0.0012 0.0028,-0.0015 z m -5.341149,0.0085 c -0.0054,0.0088 -0.01002,0.01824 -0.01392,0.02774 0.0039,-0.0095 0.0085,-0.01899 0.01392,-0.02774 z m 5.338329,8.57e-4 c 0.0021,0.0016 0.0061,0.0013 0.0094,0.0018 -0.0031,-4.57e-4 -0.0073,-1.46e-4 -0.0094,-0.0018 z m -6.129937,0.0037 c -0.0014,0.01706 -0.0021,0.03411 -0.0025,0.05102 7.3e-5,-0.01691 10e-4,-0.03396 0.0025,-0.05102 z m 4.540051,0.01201 c -0.0044,0.004 -0.009,0.0088 -0.01336,0.01306 0.0045,-0.0045 0.0086,-0.0089 0.01336,-0.01306 z m -4.471523,4.57e-4 c 0.0025,0.01498 0.0055,0.03011 0.0069,0.04494 -0.0014,-0.01484 -0.0045,-0.02996 -0.0069,-0.04494 z m 5.047318,4.57e-4 c 0.0094,0.01187 0.01853,0.02432 0.02862,0.03619 -0.01009,-0.01187 -0.01926,-0.02432 -0.02862,-0.03619 z m -5.299026,0.02092 c 0.0088,0.008 0.01782,0.01572 0.02781,0.02269 -0.0099,-0.007 -0.01905,-0.01469 -0.02781,-0.02269 z m 5.499264,0.0019 c 0.007,0.0015 0.01364,0.0034 0.02032,0.0059 -0.0065,-0.0025 -0.0135,-0.0045 -0.02032,-0.0059 z m 0.766538,4.57e-4 c 1.69e-4,0 3.52e-4,-1.46e-4 3.52e-4,0 -3.52e-4,4.57e-4 -0.0014,0.0015 -0.0021,0.0031 6.86e-4,-0.0013 0.0014,-0.0025 0.0018,-0.0031 z m -1.568528,0.0022 c -0.01216,0.01409 -0.02299,0.02966 -0.03189,0.04732 0.0089,-0.01765 0.01972,-0.03323 0.03189,-0.04732 z m -3.493029,4.57e-4 c 0.0014,0.0018 0.0031,0.0035 0.0046,0.0052 -2.96e-4,0.0025 -6.86e-4,0.0053 -0.001,0.0079 1.47e-4,-0.0027 1.47e-4,-0.0052 3.51e-4,-0.0079 -0.0018,-0.0016 -0.0028,-0.0034 -0.0042,-0.0052 z m 5.045835,0.0093 c -6.86e-4,5.71e-4 -0.001,8.57e-4 -0.0018,0.0013 6.86e-4,-2.97e-4 10e-4,-8.57e-4 0.0018,-0.0013 z m -4.712998,0.0028 c 0.0061,2.97e-4 0.01217,0 0.01811,4.57e-4 v 4.57e-4 c -0.0061,-2.97e-4 -0.01217,-4.57e-4 -0.01811,-8.58e-4 z m 4.724568,0 c 2.78e-4,7.43e-4 6.86e-4,0.0018 0.0014,0.0022 -10e-4,-4.56e-4 -10e-4,-0.0013 -0.0014,-0.0022 z m -5.145361,0.01113 c 1.44e-4,-1.46e-4 3.23e-4,0 3.51e-4,0 -0.001,10e-4 -0.0018,0.0018 -0.0018,0.0027 2.07e-4,-7.43e-4 6.86e-4,-0.0018 0.0014,-0.0027 z m -1.072578,0.0046 c 0.01055,0.0064 0.02187,0.01216 0.03385,0.01706 -0.01213,-0.005 -0.02317,-0.01068 -0.03385,-0.01706 z m 4.806589,0.0055 c -0.01572,0.0077 -0.03115,0.01557 -0.04494,0.02047 0.01378,-0.0049 0.02922,-0.01275 0.04494,-0.02047 z m -4.668941,0.0037 c 3.51e-4,0.01676 0.0018,0.03352 0.0031,0.05014 -0.0018,-0.01661 -0.0028,-0.03337 -0.0031,-0.05014 z m 1.366447,0 c -0.0028,0.0025 -0.0059,0.0047 -0.0088,0.007 0.0028,-0.0024 0.0059,-0.0043 0.0088,-0.007 z m -0.465855,0.01854 c 0.0031,0.0023 0.007,0.004 0.01111,0.0052 -0.0042,-0.0012 -0.008,-0.0028 -0.01111,-0.0052 z m 4.297688,0.0019 c 1.68e-4,0 3.51e-4,-1.46e-4 3.51e-4,0 -6.86e-4,0.0037 6.86e-4,0.007 0.0031,0.01068 -0.0025,-0.0037 -0.0043,-0.007 -0.0037,-0.01068 z m -4.261051,0.0018 c -3.2e-5,1.46e-4 4.2e-5,4.57e-4 0,4.57e-4 -0.0039,0.0016 -0.0081,0.0022 -0.01251,0.0023 0.0044,-1.45e-4 0.0086,-0.0012 0.01251,-0.0028 z m 4.500743,0.0057 c 0.0042,0.0027 0.0083,0.0049 0.01202,0.007 v 4.57e-4 c -0.0039,-0.0021 -0.0077,-0.0046 -0.01202,-0.0074 z m -0.837141,0.0018 c 1.69e-4,0 3.52e-4,1.45e-4 3.52e-4,0 -0.01262,0.0135 -0.02447,0.03145 -0.03428,0.05191 0.0098,-0.02047 0.0212,-0.03842 0.03382,-0.05191 z m -3.571792,0.0019 c -0.0014,2.97e-4 -0.0031,0.0013 -0.0046,0.0023 0,-1.46e-4 -1.47e-4,-4.57e-4 0,-5.72e-4 0.0014,-8.57e-4 0.0031,-0.0015 0.0046,-0.0018 z m 0.0074,0.0013 c 0.0021,10e-4 0.0039,0.0022 0.0059,0.0033 0.0021,0.001 0.0045,0.0016 0.007,8.57e-4 -0.0025,7.43e-4 -0.0047,1.46e-4 -0.007,-8.57e-4 -0.0021,-0.001 -0.0037,-0.0022 -0.0059,-0.0033 z m 4.866364,0.01201 c -6.86e-4,0.0018 -0.0018,0.0027 -0.0028,0.0038 0.001,-0.0012 0.0021,-0.0022 0.0028,-0.0038 z m -4.886832,10e-4 c -0.0036,0.007 -0.0067,0.01439 -0.0116,0.01988 0.0048,-0.0053 0.0081,-0.0129 0.0116,-0.01988 z m 3.45224,0.0018 c -0.0021,0.0068 -0.0039,0.01365 -0.0055,0.02092 h -3.52e-4 c 0.0018,-0.0073 0.0039,-0.01409 0.0059,-0.02092 z m 1.090627,0 c 0.01839,0.003 0.03916,0.0045 0.05889,0.0065 -0.01972,-0.0021 -0.04049,-0.0035 -0.05889,-0.0065 z m 1.529222,0.001 c -0.01037,0.0221 -0.0224,0.04286 -0.03619,0.062 0.01378,-0.01913 0.02581,-0.0399 0.03619,-0.062 z m -1.328983,0.01424 c 6.86e-4,0.0025 0.0021,0.0045 0.0018,0.0057 2.81e-4,-0.0012 -10e-4,-0.0031 -0.0018,-0.0057 z m -4.44364,0.0015 c 0.0037,-4.57e-4 0.0053,5.71e-4 0.0056,0.0018 -6.86e-4,-0.001 -0.0025,-0.0022 -0.0056,-0.0018 z m 4.487249,0.0037 c -2.81e-4,0.0012 -10e-4,0.0019 -0.0018,0.0022 6.86e-4,-4.57e-4 0.0014,-0.0012 0.0018,-0.0022 z m -0.01336,8.58e-4 c 0,-1.46e-4 2.81e-4,1.46e-4 3.51e-4,0 -6.86e-4,7.43e-4 -10e-4,0.0018 -0.0014,0.0028 -1.65e-4,8.58e-4 -2.78e-4,0.0021 -3.51e-4,0.0033 -1.69e-4,-1.46e-4 -2.82e-4,0 -3.52e-4,0 1.69e-4,-0.0012 6.86e-4,-0.0023 0.001,-0.0033 2.81e-4,-10e-4 3.52e-4,-0.0021 10e-4,-0.0028 z m -0.612282,0.007 c 0.0058,0.0071 0.0123,0.01409 0.01839,0.02076 0,0 -2.81e-4,1.45e-4 -3.51e-4,0 -0.0062,-0.0067 -0.01217,-0.01365 -0.01797,-0.02076 z m -4.428508,0.0079 c -0.0038,0.0013 -0.0074,0.0015 -0.01065,8.58e-4 0.0031,5.71e-4 0.0068,4.57e-4 0.01065,-8.58e-4 z m 0.04312,0.0013 c 0.0085,0.0083 0.01712,0.01617 0.02503,0.02329 -0.008,-0.0073 -0.01649,-0.01498 -0.02503,-0.02329 z m 3.768322,0.01216 c -0.0045,0.01083 -0.0083,0.0221 -0.01156,0.03382 -0.0031,0.01142 -0.0059,0.02344 -0.0079,0.03515 0.0018,-0.01187 0.0046,-0.02358 0.0079,-0.03515 0.0031,-0.01172 0.0071,-0.02299 0.01156,-0.03382 z m -3.645953,0.0042 c -0.0014,0.0013 -0.0028,0.0025 -0.0046,0.0037 0.0018,-0.001 0.0031,-0.0025 0.0046,-0.0037 z m 5.911157,0.0079 c 0.0082,-2.97e-4 0.01659,4.57e-4 0.02507,0.0022 -0.0086,-0.0018 -0.01677,-0.0027 -0.02507,-0.0022 z m -6.855833,0.0028 c 0.0031,0.01646 0.0065,0.03174 0.01019,0.04628 0.0037,0.01453 0.0075,0.02862 0.01251,0.04168 -0.005,-0.01306 -0.0088,-0.02714 -0.01251,-0.04168 -0.0037,-0.01454 -0.0071,-0.02981 -0.01019,-0.04628 z m 6.92169,0.01617 c 0.0059,0.0035 0.01171,0.007 0.01659,0.01112 -0.0049,-0.0042 -0.01069,-0.0076 -0.01659,-0.01112 z m -0.113172,0.005 c -10e-4,0.0019 -0.0021,0.004 -0.0031,0.0061 h -3.52e-4 c 0.001,-0.0021 0.0025,-0.0042 0.0037,-0.0061 z m -6.683334,0.01439 c 0.0064,0.03708 0.01473,0.0712 0.02503,0.104271 -0.0103,-0.03308 -0.0186,-0.06719 -0.02503,-0.104271 z m 6.864584,0.02418 c 0.0094,7.43e-4 0.01884,0.0028 0.02922,0.0059 -0.01037,-0.0031 -0.01987,-0.0052 -0.02922,-0.0059 z m -6.688523,0.01068 c 0.0048,0.01231 0.01027,0.02433 0.01624,0.03604 -0.006,-0.01172 -0.01139,-0.02373 -0.01624,-0.03604 z m 6.624597,0.0083 c -0.01083,0.0079 -0.02268,0.01602 -0.03336,0.02551 0.01069,-0.0096 0.0224,-0.01765 0.03336,-0.02551 z m -5.523735,0.03248 c -0.0028,0.0023 -0.0055,0.0047 -0.0083,0.0068 0.0028,-0.0021 0.0056,-0.0045 0.0083,-0.0068 z m -1.326997,0.01854 c 0.005,0.01528 0.01065,0.03085 0.01621,0.04583 0.0104,0.01365 0.02021,0.02862 0.02967,0.0445 0.0094,0.01587 0.01807,0.03278 0.02595,0.05013 -0.0079,-0.01736 -0.01652,-0.03427 -0.02595,-0.05013 -0.0095,-0.01587 -0.01972,-0.03085 -0.03013,-0.0445 -0.0055,-0.01498 -0.01076,-0.03056 -0.01575,-0.04583 z m 4.85865,0.0031 c -0.0018,0.0095 -0.0043,0.01795 -0.0074,0.02551 0.0031,-0.0076 0.0058,-0.01602 0.0074,-0.02551 z m -4.867847,0.03071 c 3.16e-4,4.57e-4 6.86e-4,8.57e-4 10e-4,0.0013 10e-4,0.0052 0.0021,0.01098 0.0037,0.01676 -0.0018,-0.0062 -0.0037,-0.0126 -0.0046,-0.01809 z m 1.1519,8.57e-4 c 6.86e-4,0.0061 -1.45e-4,0.01216 3.52e-4,0.01721 -6.86e-4,-0.005 1.44e-4,-0.01112 -3.52e-4,-0.01721 z m 5.639873,0.01809 c -0.001,0.02032 -3.52e-4,0.04183 -0.0042,0.06155 0.0037,-0.01988 0.0031,-0.04109 0.0042,-0.06155 z m -1.957877,0.0135 c -0.008,0.008 -0.0166,0.01543 -0.02535,0.02269 0.0088,-0.0073 0.01751,-0.01484 0.02535,-0.02269 z m -4.349453,0.01291 c 0.0154,0.01335 0.03234,0.02477 0.05098,0.03471 -0.01864,-0.0099 -0.03557,-0.02136 -0.05098,-0.03471 z m 4.307032,0.02418 c -0.01129,0.0096 -0.02226,0.02032 -0.03055,0.03323 0.0085,-0.01306 0.01913,-0.02343 0.03055,-0.03323 z m -0.220559,0.0083 c 0.0071,0.0073 0.01452,0.01469 0.02225,0.0218 0.02268,0.02106 0.04687,0.04049 0.07134,0.06022 -0.02447,-0.01973 -0.04865,-0.03916 -0.07134,-0.06022 -0.0077,-0.0071 -0.01498,-0.01439 -0.02225,-0.0218 z m -4.016022,0.01201 c 0.01951,0.009 0.04008,0.01676 0.06165,0.02358 -0.02155,-0.0068 -0.04213,-0.01453 -0.06165,-0.02358 z m 0.149721,0.01157 c 0.0057,0.0023 0.01167,0.0042 0.01761,0.0061 0.0035,10e-4 0.0071,0.0021 0.01065,0.0027 -0.0036,-5.72e-4 -0.0071,-0.0012 -0.01065,-0.0022 -0.0059,-0.0018 -0.01192,-0.0042 -0.01761,-0.0065 z m 4.061705,0.0061 c 0.0058,0.004 0.01262,0.0076 0.01958,0.01068 -0.007,-0.0031 -0.01378,-0.0067 -0.01958,-0.01068 z m 0.16642,0.0055 c -0.01705,0.01261 -0.03396,0.02581 -0.04999,0.03946 v -4.57e-4 c 0.01603,-0.01365 0.03294,-0.0264 0.04999,-0.03901 z m -4.557703,0.0019 c 0.01962,0.01973 0.0394,0.03857 0.06025,0.05651 -0.02095,-0.01795 -0.04055,-0.03679 -0.06025,-0.05651 z m 0.934441,0.01068 c -1.44e-4,0 1.48e-4,2.96e-4 0,4.56e-4 -0.0037,0.0038 -0.0077,0.0067 -0.01156,0.0096 0.0039,-0.003 0.0079,-0.0064 0.01156,-0.01008 z m -0.514031,4.56e-4 c 0.0031,0.0019 0.0066,0.0042 0.0097,0.007 1.4e-5,1.46e-4 -1.8e-5,2.97e-4 0,4.57e-4 -0.0031,-0.0028 -0.0065,-0.0055 -0.0097,-0.0074 z m 5.974788,4.58e-4 c -0.0053,0.009 -0.01097,0.01721 -0.01719,0.02462 -0.0043,0.0049 -0.0089,0.0092 -0.0135,0.01379 0.0046,-0.0045 0.0094,-0.0089 0.0135,-0.01379 0.0062,-0.0074 0.01185,-0.01558 0.01719,-0.02462 z m -6.069716,0.0013 c 0.01403,0.003 0.02886,0.0049 0.04217,0.0085 -0.01333,-0.0035 -0.02813,-0.0055 -0.04217,-0.0085 z m 4.114065,0.0015 c 0.0096,0.0037 0.01898,0.0077 0.02686,0.0129 -0.0079,-0.0052 -0.01719,-0.0092 -0.02686,-0.0129 z m 0.37452,8.57e-4 c 0.0028,0.0015 0.0055,0.0035 0.0079,0.0061 -0.0025,-0.0023 -0.0051,-0.0046 -0.0079,-0.0061 z m -0.02032,0.0013 c 0.008,0.01142 0.01396,0.0218 0.0181,0.03204 -0.0042,-0.01023 -0.01009,-0.02061 -0.0181,-0.03204 z m -4.83314,4.57e-4 c 0.0147,0.01469 0.02953,0.02966 0.04496,0.04405 -0.0155,-0.01453 -0.0302,-0.02937 -0.04496,-0.04405 z m 4.516468,0.01913 c 0.0018,0.0016 0.0031,0.0031 0.0047,0.005 -0.0014,-0.0019 -0.0031,-0.0034 -0.0047,-0.005 z m -3.578764,0.0022 c -0.0043,0.0031 -0.0086,0.0067 -0.0129,0.01068 -0.0042,0.0037 -0.0084,0.0071 -0.01305,0.01068 0.0046,-0.0035 0.0089,-0.0074 0.01305,-0.01113 0.0043,-0.004 0.0086,-0.0071 0.0129,-0.01023 z m -0.40878,0.0013 c 0.0063,-1.46e-4 0.01297,5.72e-4 0.01948,0.001 -0.0065,-4.57e-4 -0.01318,-0.0012 -0.01948,-0.001 z m -0.0093,0.0015 c -0.0045,0.001 -0.0087,0.0025 -0.01251,0.0055 0.0038,-0.003 0.0081,-0.0045 0.01251,-0.0055 z m 0.456025,0.01394 c -0.01115,0.005 -0.02299,0.0135 -0.0347,0.02314 0.01171,-0.0096 0.02359,-0.01809 0.0347,-0.02314 z m -0.8755,0.0013 c 0.01572,0.0135 0.03189,0.02641 0.04912,0.03842 -0.01716,-0.01187 -0.0335,-0.02507 -0.04912,-0.03842 z m 4.325131,0.0079 c 0.001,4.57e-4 0.0028,5.72e-4 0.0042,4.57e-4 v 4.57e-4 c -0.0014,1.46e-4 -0.0028,-4.57e-4 -0.0042,-8.58e-4 z m -4.651444,0.007 c 0.0021,0.0089 0.0045,0.01765 0.006,0.02641 0.01094,0.01424 0.02183,0.02818 0.03336,0.04168 -0.01153,-0.0135 -0.02289,-0.02744 -0.03382,-0.04168 -0.0014,-0.0088 -0.0031,-0.0175 -0.0055,-0.02641 z m 4.644915,4.57e-4 c -0.0098,5.72e-4 -0.01825,0.0045 -0.02834,0.0083 0.01023,-0.0038 0.01825,-0.0079 0.02834,-0.0083 z m 3.52e-4,0 c 0.0018,0 0.004,-1.45e-4 0.0061,0 0,1.47e-4 -1.68e-4,4.58e-4 0,4.58e-4 -0.0021,-1.46e-4 -0.004,-4.58e-4 -0.0061,-4.58e-4 z m 0.43993,0.0065 c 0.0014,0.0096 0.0014,0.01928 10e-4,0.02922 -6.86e-4,0.0098 -0.0014,0.01988 -0.0028,0.03056 -6.86e-4,0.0067 -0.0025,0.01335 -0.0042,0.01988 -0.0031,0.0129 -0.0079,0.02537 -0.0129,0.0353 0.0051,-0.01008 0.0096,-0.02225 0.0129,-0.0353 0.0018,-0.0065 0.0028,-0.0132 0.0037,-0.01988 0.0014,-0.01068 0.0028,-0.02076 0.0031,-0.03056 6.86e-4,-0.0099 3.52e-4,-0.01958 -10e-4,-0.02922 z m -3.975974,0.0023 c -0.01529,0.0099 -0.03189,0.01928 -0.04924,0.02818 0.01737,-0.0089 0.03396,-0.01824 0.04924,-0.02818 z m 5.478645,0.01053 c 1.65e-4,0 3.51e-4,1.46e-4 3.51e-4,0 -0.0047,0.0052 -0.0094,0.01038 -0.01395,0.01632 h -3.52e-4 c 0.0046,-0.0059 0.0092,-0.01112 0.01396,-0.01632 z m -0.184516,0.0015 c 0.0043,0.0046 0.0085,0.0091 0.01262,0.0138 -0.0042,-0.0046 -0.0083,-0.0093 -0.01262,-0.0138 z m 0.1461,0.02077 c -0.0071,0.0031 -0.01305,0.0074 -0.01853,0.01172 0.0055,-0.0043 0.01143,-0.0086 0.01853,-0.01172 z m -5.442602,0.0061 c -0.0098,0.0028 -0.01884,0.0079 -0.02788,0.0135 -0.01336,0.0085 -0.02612,0.01884 -0.03975,0.02818 -0.0092,0.0064 -0.01899,0.01231 -0.02922,0.01676 0.01023,-0.0045 0.02004,-0.01038 0.02922,-0.01676 0.01364,-0.0093 0.02641,-0.01973 0.03975,-0.02818 0.009,-0.0057 0.0181,-0.01068 0.02788,-0.0135 z m 5.0755,0.0013 c -0.0076,0.0057 -0.0147,0.01216 -0.02092,0.01913 0.0062,-0.007 0.01336,-0.0135 0.02092,-0.01913 z m 0.245622,0 c 0.0079,0.0098 0.01586,0.01928 0.02405,0.02878 h -3.52e-4 c -0.0082,-0.0095 -0.01572,-0.01899 -0.02359,-0.02878 z m -1.090627,0.01112 c -0.01364,0.0018 -0.02669,0.0046 -0.039,0.0093 0.0123,-0.0047 0.02535,-0.0076 0.039,-0.0093 z m 1.171317,0.0093 c -0.0039,0.0023 -0.0077,0.0049 -0.01217,0.0065 0.0046,-0.0018 0.0083,-0.0042 0.01217,-0.0065 z m -6.139282,0.0022 c 0.01751,0.01275 0.03582,0.02477 0.0547,0.03575 0.01888,0.01098 0.03842,0.02092 0.05886,0.02966 -0.02043,-0.0087 -0.03999,-0.01868 -0.05885,-0.02965 -0.01888,-0.01098 -0.03719,-0.02299 -0.0547,-0.03575 z m 0.10337,0.0061 c 0.001,0.0028 0.001,0.0065 0.0018,0.0098 -6.86e-4,-0.0033 -6.86e-4,-0.007 -0.0018,-0.0098 z m -0.33744,4.57e-4 c 0.02785,0.03352 0.05638,0.06556 0.08296,0.09923 -0.02658,-0.03367 -0.05512,-0.06571 -0.08296,-0.09923 z m 6.327356,0 c 0.007,0.001 0.01304,0.0015 0.01853,8.57e-4 -0.0053,5.72e-4 -0.01171,1.46e-4 -0.01853,-8.57e-4 z m -6.352866,0.0015 c 0.01153,0.0092 0.02204,0.01884 0.032,0.02862 -0.0099,-0.0098 -0.02046,-0.01943 -0.032,-0.02862 z m 6.317712,0.0033 c -0.0396,0.0089 -0.07476,0.0221 -0.107089,0.03886 0.03234,-0.01676 0.06764,-0.02996 0.107089,-0.03886 z m -0.947492,0.0031 c 0.01184,0.0058 0.02327,0.01246 0.03295,0.01958 -0.0098,-0.0073 -0.02092,-0.01365 -0.03295,-0.01958 z m -5.004008,0.0047 c 3.52e-4,8.57e-4 0.001,0.0016 0.0018,0.0022 0.0014,0.0013 0.0035,0.0015 0.007,8.58e-4 0.0061,0.0033 0.01255,0.0065 0.01899,0.0093 -0.0066,-0.0028 -0.01276,-0.0055 -0.01899,-0.0088 -0.0031,4.57e-4 -0.0054,-2.97e-4 -0.007,-0.0015 -10e-4,-5.72e-4 -0.0014,-0.0013 -0.0018,-0.0022 z m 4.269358,4.56e-4 c 0.0018,0.0049 0.0042,0.0095 0.007,0.01335 -0.0028,-0.0038 -0.0052,-0.0083 -0.007,-0.01335 z m 0.508902,0.0055 c -0.0037,0.0031 -0.0077,0.0065 -0.01115,0.01023 -0.0031,0.0037 -0.0061,0.0074 -0.0074,0.01157 0.0014,-0.004 0.0043,-0.008 0.0074,-0.01157 0.0035,-0.0037 0.0073,-0.0071 0.01115,-0.01023 z m -5.17918,0.01068 c 0.0062,0.0065 0.01266,0.0132 0.01902,0.01943 -0.0064,-0.0062 -0.01279,-0.0129 -0.01902,-0.01943 z m 4.682292,0.0028 c 0.0018,0.0016 0.0039,0.0028 0.0061,0.0042 v 4.56e-4 c -0.0021,-0.0013 -0.0042,-0.003 -0.0061,-0.0046 z m -3.890686,0.01617 c -6.86e-4,8.58e-4 -0.0018,0.0016 -0.0037,0.0023 0.0018,-5.72e-4 0.0028,-0.0016 0.0037,-0.0023 z m 0.06717,0.0037 c -0.01262,0.004 -0.02493,0.0083 -0.03664,0.01394 0.01171,-0.0057 0.02404,-0.0099 0.03664,-0.01394 z m -0.320247,4.57e-4 c 0.01578,0.0019 0.03182,0.003 0.04821,0.0037 -0.01642,-7.43e-4 -0.03241,-0.0018 -0.04821,-0.0037 z m 0.199303,0.001 c -0.03361,0.0018 -0.06747,0.0035 -0.101039,0.0037 0.03357,-1.45e-4 0.06742,-0.0019 0.101039,-0.0037 z m 5.176957,4.57e-4 c 0.02802,0.0267 0.04598,0.06511 0.0482,0.116731 2.81e-4,0.0086 3.52e-4,0.01765 0,0.02699 -1.69e-4,-1.68e-4 -2.81e-4,-4.56e-4 -3.52e-4,-5.71e-4 3.52e-4,-0.0091 6.86e-4,-0.01794 3.52e-4,-0.02641 -0.0025,-0.05147 -0.02046,-0.09018 -0.0482,-0.116731 z m -0.931773,0.0022 c 0,1.46e-4 1.69e-4,4.57e-4 0,5.71e-4 -0.0018,0.0025 -0.0074,0.005 -0.0129,0.0083 0.0055,-0.0033 0.01097,-0.0062 0.0129,-0.0089 z m -0.298872,0.0033 c 0.0071,0.0067 0.01452,0.0129 0.02268,0.01854 -0.0082,-0.0057 -0.01557,-0.01187 -0.02268,-0.01854 z m 0.274399,0.01439 c 0,0 3.52e-4,1.46e-4 3.52e-4,0 -0.001,0.0012 -0.0018,0.0021 -0.0025,0.0033 2.82e-4,-4.57e-4 0.0046,0.0096 0.0056,0.01809 -10e-4,-0.0085 -0.0053,-0.01854 -0.0056,-0.01809 6.86e-4,-0.0012 0.001,-0.0021 0.0018,-0.0033 z m -4.153076,0.0013 c -0.0055,0.0035 -0.01044,0.0077 -0.01529,0.01216 0.0049,-0.0045 0.0098,-0.0086 0.01529,-0.01216 z m 5.239995,0.0052 c -0.0014,0.0098 -0.0021,0.02032 -0.0025,0.03056 1.69e-4,-0.01053 10e-4,-0.02061 0.0025,-0.03056 z m -0.140018,0.0013 c 0.0039,0.0037 0.0074,0.0074 0.01069,0.01157 -0.0031,-0.0042 -0.007,-0.008 -0.01069,-0.01157 z m -1.156927,0.0028 c 0.0018,2.97e-4 0.0031,0.0012 0.0052,0.0019 -0.0042,-0.0016 -0.008,-0.0022 -0.01111,-0.0015 0.0018,-4.57e-4 0.0039,-7.44e-4 0.0059,-4.57e-4 z m -3.989475,0.0042 c -0.03006,0.0021 -0.05794,0.0057 -0.08714,0.0079 0.02922,-0.0022 0.05706,-0.0058 0.08714,-0.0079 z m 5.413829,0.0013 c -0.01111,0.0088 -0.02194,0.01765 -0.03234,0.02699 0.01037,-0.0093 0.0212,-0.01839 0.03234,-0.02699 z m -0.713292,0.0015 c 0,1.45e-4 3.52e-4,2.96e-4 3.52e-4,4.56e-4 10e-4,0.0034 0.0014,0.0067 0.0018,0.01023 -6.86e-4,-0.0035 -0.0014,-0.0073 -0.0025,-0.01068 z m -0.474637,0.005 c 0,0 3.52e-4,1.46e-4 3.52e-4,0 0.0099,0.0055 0.01972,0.01187 0.02968,0.01809 -0.0099,-0.0062 -0.02018,-0.01216 -0.03009,-0.01765 z m 0.945569,0.02551 c 0.0028,0.0096 0.0043,0.01869 0.0061,0.02788 -0.0018,-0.0092 -0.0031,-0.01824 -0.0061,-0.02788 z m -0.336103,0.0218 c -0.0056,0.01038 -0.01083,0.02076 -0.01424,0.03159 0.0035,-0.01083 0.0086,-0.02121 0.01424,-0.03159 z m -0.131566,0.0019 c 3.52e-4,0.01127 0.0025,0.0227 0.0079,0.03426 -0.0053,-0.01157 -0.0074,-0.02299 -0.0079,-0.03426 z m 0.646546,4.57e-4 c 1.69e-4,-1.68e-4 3.52e-4,0 3.52e-4,0 -0.0099,0.0099 -0.01972,0.02047 -0.02922,0.031 0,-1.68e-4 -2.82e-4,-2.8e-4 -3.52e-4,-4.57e-4 0.0095,-0.01054 0.0193,-0.02061 0.02922,-0.03056 z m -1.047019,0.03233 c -0.001,0.0058 -2.81e-4,0.01098 0.0018,0.01587 -0.0018,-0.0047 -0.0028,-0.01023 -0.0018,-0.01587 z m 0.404182,0.0065 c -0.0037,0.005 -0.0064,0.01023 -0.0079,0.01572 0.0014,-0.0055 0.0042,-0.01068 0.0079,-0.01572 z m 0.593743,0.0037 c -0.0058,0.005 -0.01244,0.0096 -0.01987,0.0135 0.0074,-0.0038 0.0141,-0.0085 0.01987,-0.0135 z m -0.601604,0.01246 c -0.0021,0.0074 -0.0025,0.01528 -0.0018,0.02329 -6.86e-4,-0.008 -1.69e-4,-0.01587 0.0018,-0.02329 z m -0.442152,0.0038 c 0.0037,0.0038 0.0076,0.0074 0.01202,0.01053 -0.0045,-0.0031 -0.0085,-0.0065 -0.01202,-0.01053 z m -4.735839,0.0027 c 0.0042,0.0049 0.0057,0.01216 0.0093,0.01765 -0.0035,-0.0055 -0.0051,-0.01275 -0.0093,-0.01765 z m 5.726346,0.007 c -0.02405,0.007 -0.05058,0.01127 -0.07476,0.01439 0.02419,-0.0031 0.05072,-0.0074 0.07476,-0.01439 z m -0.782411,0.05473 c 0.0147,0.0021 0.02981,0.0033 0.04539,0.0042 -0.01557,-8.57e-4 -0.03069,-0.0021 -0.04539,-0.0042 z m 0.353605,0.0037 c 0.0085,-1.68e-4 0.01705,7.43e-4 0.02686,0.0037 -0.0098,-0.003 -0.01838,-0.0038 -0.02686,-0.0037 z m 0,0 c -0.01262,1.68e-4 -0.02433,0.0025 -0.03842,0.0046 0.01378,-0.0019 0.02595,-0.0045 0.03842,-0.0046 z m -0.149657,4.57e-4 c -0.027,0 -0.05725,0.0012 -0.0881,0.0013 0.03115,-1.69e-4 0.06111,-0.0013 0.0881,-0.0013 z" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="14.672322" + y="68.529076" + id="text69765"><tspan + sodipodi:role="line" + id="tspan69763" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="14.672322" + y="68.529076">agents</tspan></text> + </g> + <g + id="g81155" + transform="translate(0,-1.9848942)"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="43.218731" + y="55.738956" + id="text26339"><tspan + sodipodi:role="line" + id="tspan26337" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.29167px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="43.218731" + y="55.738956">model</tspan></text> + <g + id="g69652" + transform="matrix(0.03465928,0,0,0.03465928,36.829475,23.859814)"> + <path + d="m 760,380 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z" + fill="url(#sea)" + id="path3433" + style="fill:#000000" /> + <path + d="m 10,380 c 0,69 19,133 52,188 l 5,-90 C 25,419 15,394 14,324 c -3,18 -4,37 -4,56 z M 97,142 147,125 C 180,82 246,31 313,31 287,39 212,75 206,98 234,80 257,77 285,77 L 346,43 326,14 C 234,27 154,74 97,142 Z m 49,239 c 0,22 22,68 48,68 h 64 l 8,13 c 20,0 20,14 20,32 0,24 30,28 30,66 0,10 -12,14 -12,30 0,14 37,86 60,86 40,0 84,-36 84,-52 0,-38 34,-28 34,-54 0,-118 48,-62 66,-164 l -41,16 c -44,-37 -70,-91 -70,-111 13,0 53,60 67,96 34,-14 69,-39 78,-75 l -18,-8 -6,-12 -14,18 c -5,0 -28,-17 -35,-41 32,21 47,21 103,21 26,0 41,75 66,88 0,-41 3,-74 18,-107 14,0 37,23 53,68 C 740,195 624,59 469,21 l 23,19 h -25 c 0,53 -16,35 -52,75 0,-10 0,-14 8,-19 -15,-9 -29,-12 -39,-12 -15,0 -56,26 -68,52 l 21,-2 8,18 c 18,-11 12,-47 39,-47 0,8 -11,11 -11,25 l 25,-1 c -23,26 -35,32 -66,32 l -5,-16 c -9,23 -36,35 -58,37 0,12 -1,19 -8,30 l -26,-5 -17,38 33,7 c 15,-24 33,-37 58,-42 l 32,35 c 0,4 -6,7 -20,7 l 12,8 18,-22 c -16,-9 -22,-19 -22,-31 38,11 29,50 46,53 0,-45 31,-4 31,-58 22,0 60,13 60,29 -57,0 -73,2 -73,20 0,9 49,-5 49,42 -40,0 -58,0 -80,-12 l -7,20 c -24,-7 -49,-20 -49,-48 l -58,9 -16,-10 c -40,50 -86,44 -86,129 z m 106,-217 15,-3 7,-14 c -14,0 -21,9 -22,17 z m 9,11 32,-5 -5,-39 c -19,10 3,25 -27,44 z m 2,-72 c 13,0 24,-2 24,-11 l -19,-4 z m 218,98 c 27,0 46,33 46,47 l -24,-2 c 0,-16 -9,-33 -22,-45 z m 10,431 c 24,0 48,-37 48,-77 l -38,32 z" + fill="url(#land)" + id="path3435" + style="fill:#ffffff" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="32.382271" + y="60.07893" + id="text75428"><tspan + sodipodi:role="line" + id="tspan75426" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="32.382271" + y="60.07893">::AgentBasedModel</tspan></text> + </g> + <g + id="g81435" + transform="translate(0,2.6027248)"> + <g + id="g5042" + transform="matrix(0.03318832,0,0,0.03318832,80.941666,18.331834)"> + <g + id="g5558" + style="fill:#d5d5d5" + transform="matrix(0.94393,0,0,0.94393,14.85,31.044)"> + <path + id="path3066" + style="fill:#000000" + d="m 116.37,838.02 c -12.35,0 -23.442,5.2648 -31.237,13.647 l -121.78,98.892 c -10.533,12.077 -16.933,27.871 -16.933,45.155 0,37.96 30.777,68.737 68.737,68.737 25.274,0 47.364,-13.661 59.304,-33.982 l 23.583,-38.621 43.183,4.9485 -0.5025,1.1211 c -2.4461,7.0559 -3.7887,14.65 -3.7887,22.539 0,37.96 30.777,68.737 68.737,68.737 37.06,0 67.249,-29.355 68.66,-66.07 l 2.8221,-122.44 c 0.16218,-1.5114 0.23199,-3.0461 0.23199,-4.6005 0,-0.92104 -0.0192,-1.8383 -0.0777,-2.7448 l 0.0382,-1.9717 -0.19313,-0.0386 c -2.3604,-21.344 -20.475,-37.964 -42.449,-37.964 -17.052,0 -31.741,10.019 -38.583,24.472 h -0.0768 l -14.459,31.353 -28.26,-7.268 c 0.90322,-1.6028 1.7547,-3.2246 2.5128,-4.9098 2.0794,-5.0255 3.2088,-10.538 3.2088,-16.314 0,-23.579 -19.102,-42.68 -42.68,-42.68 z m -11.946,10.4 -73.879,79.175 -30.928,2.8222 95.103,-78.48 9.7036,-3.5181 z m 107.98,17.513 -22.075,89.227 -24.742,11.482 40.632,-95.413 6.1856,-5.2964 z m -197.24,74.77 c 30.368,0 55.013,24.645 55.013,55.013 0,30.368 -24.645,54.974 -55.013,54.974 -30.368,0 -54.974,-24.606 -54.974,-54.974 0,-30.368 24.606,-55.013 54.974,-55.013 z m 190.52,24.742 c 30.368,0 55.013,24.645 55.013,55.013 0,30.368 -24.645,54.974 -55.013,54.974 -30.368,0 -54.974,-24.607 -54.974,-54.974 0,-30.368 24.606,-55.013 54.974,-55.013 z m -155.41,4.6778 c -4.8776,33.073 -24.482,58.046 -49.214,59.304 -6.5962,0.3357 -13.052,-1.0063 -19.059,-3.8273 8.5567,10.305 21.702,16.584 36.108,15.85 24.263,-1.2347 42.949,-21.897 41.714,-46.16 -0.48607,-9.5519 -4.005,-18.223 -9.5489,-25.168 z m 190.52,24.742 c -4.8776,33.073 -24.482,58.046 -49.214,59.304 -6.5962,0.3357 -13.052,-1.0063 -19.059,-3.8273 8.5566,10.305 21.702,16.584 36.108,15.851 24.263,-1.2348 42.949,-21.897 41.714,-46.16 -0.48607,-9.5519 -4.0052,-18.223 -9.5489,-25.168 z" /> + </g> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="78.343216" + y="56.720932" + id="text76628"><tspan + sodipodi:role="line" + id="tspan76626" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="78.343216" + y="56.720932">logger</tspan></text> + </g> + <g + id="g80986" + transform="translate(21.330012,-37.850443)"> + <g + id="g2091" + transform="matrix(0.28429111,0,0,0.28429111,53.631813,58.093451)"> + <path + id="path2093" + style="fill:none;stroke:#ffffff;stroke-width:5.5124;stroke-linecap:round;stroke-linejoin:round" + d="m 43.399,34.31 c 0,7.418 -6.02,13.438 -13.438,13.438 -7.418,0 -13.438,-6.02 -13.438,-13.438 0,-7.418 6.02,-13.438 13.438,-13.438 7.418,0 13.438,6.02 13.438,13.438 z" /> + <path + id="path2095" + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:2.7562;stroke-linecap:round;stroke-linejoin:round" + d="m 43.399,34.31 c 0,7.418 -6.02,13.438 -13.438,13.438 -7.418,0 -13.438,-6.02 -13.438,-13.438 0,-7.418 6.02,-13.438 13.438,-13.438 7.418,0 13.438,6.02 13.438,13.438 z" /> + <path + id="path2097" + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:2.7562;stroke-linecap:round;stroke-linejoin:round" + d="M 29.961,34.169 V 25.446" /> + <path + id="path2099" + style="fill:none;stroke:#000000;stroke-width:2.7562;stroke-linecap:round;stroke-linejoin:round" + d="m 29.986,34.464 5.869,3.389" /> + <path + id="path2101" + style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.7226;stroke-linecap:round;stroke-linejoin:round" + d="m 31.178,34.31 c 0,0.672 -0.545,1.217 -1.217,1.217 -0.672,0 -1.217,-0.545 -1.217,-1.217 0,-0.672 0.545,-1.218 1.217,-1.218 0.672,0 1.217,0.546 1.217,1.218 z" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="55.806686" + y="75.079605" + id="text79455"><tspan + sodipodi:role="line" + id="tspan79453" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="55.806686" + y="75.079605">events</tspan></text> + </g> + <g + id="g82065" + transform="translate(3.3894536,-1.2489369)"> + <path + id="path3924" + sodipodi:nodetypes="cccccccccccssssccssssccssssccccccccccccssssccssssccsssssccssssccccccccccccssssccsssssccsssssccsssssccsssssccsssssccssssc" + style="fill:#000000;stroke-width:0.0280907" + d="m 13.036308,47.746123 c -0.0292,-0.0058 -0.06214,-0.0041 -0.104666,0.0025 l -4.6782367,0.525756 c -0.038544,0.0022 -0.038134,0.01251 -0.0115,0.04176 l 3.3961767,3.845704 c 0.06214,0.07304 0.09503,0.08652 0.201904,0.07295 l 4.69785,-0.757853 c 0.108157,-0.0195 0.116807,-0.02736 0.02426,-0.114568 l -3.387957,-3.52513 c -0.05259,-0.05282 -0.08962,-0.08146 -0.138291,-0.09096 z m -0.57463,0.293151 c 0.08871,0.0149 0.180532,0.04102 0.273736,0.0793 0.372879,0.153061 0.606322,0.438295 0.520134,0.635303 -0.08619,0.197004 -0.458161,0.232391 -0.831036,0.07931 -0.372877,-0.153071 -0.606675,-0.436275 -0.520488,-0.633283 0.06464,-0.14776 0.291634,-0.205955 0.557625,-0.160638 z m -2.6413236,0.322433 c 0.088709,0.0149 0.1825526,0.04137 0.2757576,0.07965 0.372879,0.153062 0.604655,0.43592 0.518468,0.632929 -0.08619,0.197011 -0.458516,0.23441 -0.8313929,0.08134 -0.3728774,-0.153062 -0.6043006,-0.43794 -0.5181138,-0.634949 0.064652,-0.147757 0.2892562,-0.204291 0.555253,-0.158972 z m 3.7655976,0.860795 c 0.08871,0.0149 0.1822,0.04339 0.275401,0.08168 0.372878,0.153061 0.604655,0.435921 0.518467,0.63293 -0.08619,0.197007 -0.458161,0.232391 -0.831037,0.07931 -0.372878,-0.153062 -0.604654,-0.435922 -0.518467,-0.63293 0.06466,-0.147747 0.28961,-0.20631 0.555634,-0.160986 z M 7.9294426,48.48227 c -0.00849,7.44e-4 -0.013313,0.01287 -0.023278,0.0376 l -1.8832834,4.84107 c -0.020835,0.05014 -0.021079,0.06343 0.019611,0.113924 l 3.2336692,3.952662 c 0.073759,0.100245 0.092564,0.102417 0.1228574,7.12e-4 l 2.0029022,-4.893094 c 0.03542,-0.06523 0.01816,-0.10758 -0.01596,-0.14663 l -3.4204986,-3.8745 c -0.01744,-0.02087 -0.027699,-0.03199 -0.036185,-0.03136 z m 2.9937114,1.115162 c 0.08871,0.0149 0.182553,0.04137 0.275757,0.07965 0.372879,0.153062 0.604655,0.435921 0.518469,0.63293 -0.08619,0.19701 -0.458162,0.232389 -0.831039,0.07932 -0.372878,-0.153062 -0.604655,-0.435922 -0.518468,-0.632929 0.06464,-0.147763 0.28926,-0.20429 0.555254,-0.158976 z m 3.810881,0.841646 c 0.08871,0.0149 0.182552,0.04137 0.275758,0.07964 0.372878,0.153071 0.604655,0.435921 0.518469,0.632929 -0.08619,0.197012 -0.458516,0.234411 -0.831394,0.08134 -0.372879,-0.153061 -0.604301,-0.437939 -0.518114,-0.634949 0.06466,-0.147748 0.289259,-0.204281 0.555281,-0.158964 z M 8.0140953,49.449725 c 0.015219,10e-4 0.031445,0.0047 0.046508,0.0082 0.1807973,0.04167 0.3484017,0.24738 0.4156203,0.541931 0.089616,0.392726 -0.033679,0.794214 -0.273976,0.896191 -0.2402954,0.101976 -0.5080707,-0.133185 -0.5976752,-0.52593 -0.089616,-0.392727 0.033667,-0.794217 0.2739761,-0.896193 0.045057,-0.01913 0.08996,-0.02759 0.1355629,-0.02417 z m 4.0522517,1.390525 c 0.08871,0.0149 0.182552,0.04137 0.275757,0.07965 0.372879,0.153061 0.604655,0.43592 0.51847,0.632928 -0.0862,0.197007 -0.458162,0.232391 -0.831039,0.07932 -0.372876,-0.153072 -0.604654,-0.435921 -0.518467,-0.632929 0.06464,-0.147757 0.289255,-0.204288 0.555251,-0.158972 z m 4.628738,0.955956 c -0.0088,2.87e-4 -0.02129,0.0011 -0.03615,0.0041 l -4.824882,0.779656 c -0.09933,0.02187 -0.09928,0.03794 -0.126801,0.104905 l -1.9980643,4.8774 c -0.016944,0.074 -0.050325,0.103164 0.044559,0.0787 l 4.7751823,-0.888138 c 0.09425,-0.02635 0.112201,-0.03072 0.136667,-0.113595 l 2.040223,-4.796992 c 0.01583,-0.03354 0.01567,-0.0465 -0.01074,-0.04565 z m -0.882508,0.69354 c 0.127679,0.02464 0.217258,0.104457 0.240716,0.231926 0.04691,0.254918 -0.1915,0.607925 -0.534308,0.787972 -0.3428,0.18006 -0.658742,0.118609 -0.705648,-0.136317 -0.04691,-0.25492 0.191489,-0.607926 0.534313,-0.788 0.171405,-0.09003 0.337249,-0.12014 0.464935,-0.09561 z m -5.589581,-0.528387 c 0.183962,0.03715 0.355081,0.246215 0.423345,0.545366 0.08962,0.392727 -0.03165,0.79457 -0.27195,0.896549 -0.240297,0.101978 -0.5077152,-0.135215 -0.5973211,-0.527952 -0.089616,-0.392727 0.033313,-0.792197 0.2736221,-0.894172 0.04506,-0.01913 0.08995,-0.0276 0.135561,-0.02417 0.01235,9.49e-4 0.02448,0.002 0.03677,0.0043 z m -1.7267352,0.301542 c 0.1839599,0.03715 0.3550794,0.24622 0.423346,0.545369 0.089616,0.392727 -0.031653,0.794569 -0.2719503,0.896547 -0.2402957,0.101978 -0.5077146,-0.135214 -0.5973196,-0.52795 -0.089616,-0.392727 0.033325,-0.792195 0.2736217,-0.894173 0.045057,-0.01913 0.08995,-0.0276 0.1355604,-0.02417 0.01235,9.49e-4 0.02448,0.002 0.036766,0.0043 z m -1.7014017,0.299715 c 0.015219,0.001 0.031435,0.0047 0.046508,0.0082 0.1807972,0.04167 0.3460268,0.249048 0.4132461,0.543595 0.089616,0.392727 -0.031299,0.792551 -0.2715961,0.894529 -0.240297,0.101978 -0.5080694,-0.133185 -0.5976737,-0.525932 -0.089617,-0.392725 0.033679,-0.794213 0.2739759,-0.896192 0.045057,-0.01913 0.08996,-0.02759 0.1355629,-0.02417 z m 6.9441999,1.718653 c 0.124601,0.02602 0.21358,0.10574 0.236668,0.231214 0.04691,0.254921 -0.193508,0.607573 -0.536327,0.787618 -0.3428,0.180061 -0.658742,0.118612 -0.705648,-0.136317 -0.04691,-0.254918 0.193519,-0.60757 0.536327,-0.787617 0.149981,-0.07878 0.294612,-0.111945 0.414031,-0.102454 0.01918,0.0015 0.03717,0.0038 0.05496,0.0075 z m -4.8288423,0.826616 c 0.015219,10e-4 0.031435,0.0047 0.046508,0.0082 0.1807937,0.04167 0.3484007,0.247377 0.4156203,0.541931 0.089616,0.392726 -0.033679,0.794215 -0.2739764,0.896193 -0.2402957,0.101978 -0.5060474,-0.13285 -0.595654,-0.525577 -0.089616,-0.392727 0.031653,-0.79457 0.2719503,-0.896548 0.045055,-0.01912 0.08996,-0.02759 0.13556,-0.02416 z m 2.5993303,0.998024 c 0.127681,0.02464 0.217607,0.102447 0.241068,0.229901 0.04691,0.254919 -0.191489,0.607927 -0.534307,0.787972 -0.342801,0.18006 -0.659097,0.120628 -0.706002,-0.134308 -0.04691,-0.254916 0.191489,-0.607927 0.534312,-0.788001 0.171407,-0.09003 0.33725,-0.120132 0.464935,-0.0956 z" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:25%;font-family:'Latin Modern Mono Caps';-inkscape-font-specification:'Latin Modern Mono Caps, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="8.1108866" + y="60.572594" + id="text81428"><tspan + sodipodi:role="line" + id="tspan81426" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583" + x="8.1108866" + y="60.572594">rng</tspan></text> + </g> + </g> +</svg> diff --git a/docs/build/crops.html b/docs/build/crops.html index b77af4d..ce7fa37 100644 --- a/docs/build/crops.html +++ b/docs/build/crops.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Crop submodel · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li class="is-active"><a class="tocitem" href="crops.html">Crop submodel</a><ul class="internal"><li><a class="tocitem" href="#crops.jl"><span>crops.jl</span></a></li></ul></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="crops.html">Crop submodel</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="crops.html">Crop submodel</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/crops.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Crop-submodel"><a class="docs-heading-anchor" href="#Crop-submodel">Crop submodel</a><a id="Crop-submodel-1"></a><a class="docs-heading-anchor-permalink" href="#Crop-submodel" title="Permalink"></a></h1><p>Eventually, Persephone will include a full-blown crop-growth model (an adaptation of AquaCrop, created by the FAO). At the moment, we are only working with a very basic mock-up.</p><h2 id="crops.jl"><a class="docs-heading-anchor" href="#crops.jl">crops.jl</a><a id="crops.jl-1"></a><a class="docs-heading-anchor-permalink" href="#crops.jl" title="Permalink"></a></h2><p>This includes the types and functions needed for all crop growth model, which are also referenced by the other submodels.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.CropType" href="#Persephone.CropType"><code>Persephone.CropType</code></a> — <span class="docstring-category">Type</span></header><section><div><p>The crop types simulated by the model</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L6">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.FarmPlot" href="#Persephone.FarmPlot"><code>Persephone.FarmPlot</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">FarmPlot</code></pre><p>This represents one field, i.e. a collection of pixels with the same management. This is the spatial unit with which the crop growth model and the farm model work.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L11-L16">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.averagefieldsize-Tuple{Agents.AgentBasedModel}" href="#Persephone.averagefieldsize-Tuple{Agents.AgentBasedModel}"><code>Persephone.averagefieldsize</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">averagefieldsize(model)</code></pre><p>Calculate the average field size in hectares for the model landscape.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L65-L69">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.cropheight-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.cropheight-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.cropheight</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">cropheight(model, position)</code></pre><p>Return the height of the crop at this position, or nothing if there is no crop here (utility wrapper).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L90-L95">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.croptype-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.croptype-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.croptype</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">croptype(model, position)</code></pre><p>Return the crop at this position, or nothing if there is no crop here (utility wrapper).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L80-L84">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initfields!-Tuple{Agents.AgentBasedModel}" href="#Persephone.initfields!-Tuple{Agents.AgentBasedModel}"><code>Persephone.initfields!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initfields!(model)</code></pre><p>Initialise the model with its farm plots.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L34-L38">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.stepagent!-Tuple{FarmPlot, Agents.AgentBasedModel}" href="#Persephone.stepagent!-Tuple{FarmPlot, Agents.AgentBasedModel}"><code>Persephone.stepagent!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">stepagent!(farmplot, model)</code></pre><p>Update a farm plot by one day.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L25-L29">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="species.html">« Species</a><a class="docs-footer-nextpage" href="farm.html">Farm submodel »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Crop submodel · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li class="is-active"><a class="tocitem" href="crops.html">Crop submodel</a><ul class="internal"><li><a class="tocitem" href="#crops.jl"><span>crops.jl</span></a></li></ul></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="crops.html">Crop submodel</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="crops.html">Crop submodel</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/crops.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Crop-submodel"><a class="docs-heading-anchor" href="#Crop-submodel">Crop submodel</a><a id="Crop-submodel-1"></a><a class="docs-heading-anchor-permalink" href="#Crop-submodel" title="Permalink"></a></h1><p>Eventually, Persephone will include a full-blown crop-growth model (an adaptation of AquaCrop, created by the FAO). At the moment, we are only working with a very basic mock-up.</p><h2 id="crops.jl"><a class="docs-heading-anchor" href="#crops.jl">crops.jl</a><a id="crops.jl-1"></a><a class="docs-heading-anchor-permalink" href="#crops.jl" title="Permalink"></a></h2><p>This includes the types and functions needed for all crop growth model, which are also referenced by the other submodels.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.CropType" href="#Persephone.CropType"><code>Persephone.CropType</code></a> — <span class="docstring-category">Type</span></header><section><div><p>The crop types simulated by the model</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L6">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.FarmPlot" href="#Persephone.FarmPlot"><code>Persephone.FarmPlot</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">FarmPlot</code></pre><p>This represents one field, i.e. a collection of pixels with the same management. This is the spatial unit with which the crop growth model and the farm model work.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L11-L16">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.averagefieldsize-Tuple{Agents.AgentBasedModel}" href="#Persephone.averagefieldsize-Tuple{Agents.AgentBasedModel}"><code>Persephone.averagefieldsize</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">averagefieldsize(model)</code></pre><p>Calculate the average field size in hectares for the model landscape.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L65-L69">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.cropheight-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.cropheight-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.cropheight</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">cropheight(model, position)</code></pre><p>Return the height of the crop at this position, or nothing if there is no crop here (utility wrapper).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L90-L95">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.croptype-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.croptype-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.croptype</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">croptype(model, position)</code></pre><p>Return the crop at this position, or nothing if there is no crop here (utility wrapper).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L80-L84">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initfields!-Tuple{Agents.AgentBasedModel}" href="#Persephone.initfields!-Tuple{Agents.AgentBasedModel}"><code>Persephone.initfields!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initfields!(model)</code></pre><p>Initialise the model with its farm plots.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L34-L38">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.stepagent!-Tuple{FarmPlot, Agents.AgentBasedModel}" href="#Persephone.stepagent!-Tuple{FarmPlot, Agents.AgentBasedModel}"><code>Persephone.stepagent!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">stepagent!(farmplot, model)</code></pre><p>Update a farm plot by one day.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/crop/crops.jl#L25-L29">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="species.html">« Species</a><a class="docs-footer-nextpage" href="farm.html">Farm submodel »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/developing.html b/docs/build/developing.html index df107c1..18dfc9a 100644 --- a/docs/build/developing.html +++ b/docs/build/developing.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Developing Persephone · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li class="is-active"><a class="tocitem" href="developing.html">Developing Persephone</a><ul class="internal"><li><a class="tocitem" href="#Workflow"><span>Workflow</span></a></li><li><a class="tocitem" href="#Agents.jl"><span>Agents.jl</span></a></li><li><a class="tocitem" href="#Julia-editors"><span>Julia editors</span></a></li></ul></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Developing</a></li><li class="is-active"><a href="developing.html">Developing Persephone</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="developing.html">Developing Persephone</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/developing.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Developing-Persephone"><a class="docs-heading-anchor" href="#Developing-Persephone">Developing Persephone</a><a id="Developing-Persephone-1"></a><a class="docs-heading-anchor-permalink" href="#Developing-Persephone" title="Permalink"></a></h1><h2 id="Workflow"><a class="docs-heading-anchor" href="#Workflow">Workflow</a><a id="Workflow-1"></a><a class="docs-heading-anchor-permalink" href="#Workflow" title="Permalink"></a></h2><ol><li><p>Pull the current development version from the master branch on Gitlab: <a href="https://git.idiv.de/xo30xoqa/persephone">https://git.idiv.de/xo30xoqa/persephone</a>.</p></li><li><p>If you are working on a new feature, create a new branch to avoid breaking the <code>master</code> branch. (The <code>master</code> branch should always be in a runnable and (as far as possible) error-free state.)</p></li><li><p>Implement your changes.</p></li><li><p>Run <code>example.sh</code> to make sure the model executes without crashing. Also run the test suite (<code>cd test; julia runtests.jl</code>).</p></li><li><p>Commit your work frequently, and try to keep each commit small. Don't forget to add relevant tests to the test suite.</p></li><li><p>Once your satisfied with your work, do another pull/merge from the <code>master</code> branch in case somebody else changed the branch in the meantime. Then merge your work into <code>master</code> and push to the Gitlab server.</p></li><li><p>Repeat :-)</p></li></ol><p>The Gitlab issue tracker can be used to create, discuss, and assign tasks, as well as to monitor progress towards milestones/releases. Once we have a first release, we will start using <a href="https://semver.org/">semantic versioning</a>.</p><h2 id="Agents.jl"><a class="docs-heading-anchor" href="#Agents.jl">Agents.jl</a><a id="Agents.jl-1"></a><a class="docs-heading-anchor-permalink" href="#Agents.jl" title="Permalink"></a></h2><p>Our model uses <a href="https://juliadynamics.github.io/Agents.jl/stable/">Agents.jl</a> as a framework. Their <a href="https://github.com/JuliaDynamics/Agents.jl">repository</a> can be used to inspect the source code or submit bug reports (the authors are quick to respond). Questions can be asked at the <a href="https://discourse.julialang.org/c/domain/models/21">Julia Discourse forum</a>.</p><p><em>Tutorial on collaborating on Julia packages: <a href="https://www.matecdev.com/posts/julia-package-collaboration.html">https://www.matecdev.com/posts/julia-package-collaboration.html</a>.</em></p><h2 id="Julia-editors"><a class="docs-heading-anchor" href="#Julia-editors">Julia editors</a><a id="Julia-editors-1"></a><a class="docs-heading-anchor-permalink" href="#Julia-editors" title="Permalink"></a></h2><h3 id="Emacs"><a class="docs-heading-anchor" href="#Emacs">Emacs</a><a id="Emacs-1"></a><a class="docs-heading-anchor-permalink" href="#Emacs" title="Permalink"></a></h3><p>There are a couple of addons that make working with Julia much nicer in Emacs:</p><ol><li><p><code>julia-mode</code> gives syntax highlighting. Install with <code>M-x package-install julia-mode</code>.</p></li><li><p><a href="https://github.com/gcv/julia-snail"><code>julia-snail</code></a> provides IDE-like features, especially a fully-functional REPL and the ability to evaluate code straight from inside a buffer. Note that the installation can be somewhat tricky. You first need to manually install all the dependencies of its dependency <a href="https://github.com/akermu/emacs-libvterm">vterm</a>, then install vterm itself with <code>M-x package-install vterm</code>, <em>before</em> you can do <code>M-x package-install julia-snail</code>. Then add it to your <code>init.el</code> with <code>(require 'julia-snail)</code> and <code>(add-hook 'julia-mode-hook #'julia-snail-mode)</code>.</p></li><li><p><a href="http://company-mode.github.io/"><code>company-mode</code></a> integrates with Snail to give code completion. Install with <code>M-x package-install company</code>, then add <code>(add-hook 'julia-mode-hook #'company-mode)</code> and <code>(global-set-key (kbd "C-<tab>") 'company-complete)</code> to your <code>init.el</code>.</p></li><li><p><a href="https://magit.vc/"><code>magit</code></a> is a great git interface for Emacs. Install with <code>M-x package-install magit</code> and add <code>(global-set-key (kbd "C-x g") 'magit-status)</code> to your <code>init.el</code>.</p></li></ol><h3 id="VSCode"><a class="docs-heading-anchor" href="#VSCode">VSCode</a><a id="VSCode-1"></a><a class="docs-heading-anchor-permalink" href="#VSCode" title="Permalink"></a></h3><p>See <a href="https://www.julia-vscode.org/">here</a>.</p><p><em>TODO: add more detail.</em></p><h3 id="Other-useful-stuff"><a class="docs-heading-anchor" href="#Other-useful-stuff">Other useful stuff</a><a id="Other-useful-stuff-1"></a><a class="docs-heading-anchor-permalink" href="#Other-useful-stuff" title="Permalink"></a></h3><ol><li><p><a href="https://timholy.github.io/Revise.jl/stable/"><code>Revise.jl</code></a> allows one to reload code without restarting the Julia interpreter. Get it with <code>Pkg.add("Revise")</code>, then add <code>using Revise</code> to <code>.julia/config/startup.jl</code> to have it automatically available.</p></li><li><p><a href="https://github.com/MichaelMure/git-bug"><code>git-bug</code></a> is a commandline bug tracker that integrates directly with git. It can also be used as a local interface to Gitlab issues. To install on Linux, download the <a href="https://github.com/MichaelMure/git-bug/releases/tag/v0.8.0">binary</a>, copy it to <code>/usr/local/bin/git-bug</code>, and set it as executable with <code>chmod +x /usr/local/bin/git-bug</code>. To set up Gitlab integration, run <code>git bug bridge configure</code> from within the relevant repository.</p></li></ol></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="odd.html">« Overview, Design, Details (ODD)</a><a class="docs-footer-nextpage" href="architecture.html">Source code architecture »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Developing Persephone · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li class="is-active"><a class="tocitem" href="developing.html">Developing Persephone</a><ul class="internal"><li><a class="tocitem" href="#Workflow"><span>Workflow</span></a></li><li><a class="tocitem" href="#Agents.jl"><span>Agents.jl</span></a></li><li><a class="tocitem" href="#Julia-editors"><span>Julia editors</span></a></li></ul></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Developing</a></li><li class="is-active"><a href="developing.html">Developing Persephone</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="developing.html">Developing Persephone</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/developing.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Developing-Persephone"><a class="docs-heading-anchor" href="#Developing-Persephone">Developing Persephone</a><a id="Developing-Persephone-1"></a><a class="docs-heading-anchor-permalink" href="#Developing-Persephone" title="Permalink"></a></h1><h2 id="Workflow"><a class="docs-heading-anchor" href="#Workflow">Workflow</a><a id="Workflow-1"></a><a class="docs-heading-anchor-permalink" href="#Workflow" title="Permalink"></a></h2><ol><li><p>Pull the current development version from the master branch on Gitlab: <a href="https://git.idiv.de/xo30xoqa/persephone">https://git.idiv.de/xo30xoqa/persephone</a>.</p></li><li><p>If you are working on a new feature, create a new branch to avoid breaking the <code>master</code> branch. (The <code>master</code> branch should always be in a runnable and (as far as possible) error-free state.)</p></li><li><p>Implement your changes.</p></li><li><p>Run <code>example.sh</code> to make sure the model executes without crashing. Also run the test suite (<code>cd test; julia runtests.jl</code>).</p></li><li><p>Commit your work frequently, and try to keep each commit small. Don't forget to add relevant tests to the test suite.</p></li><li><p>Once your satisfied with your work, do another pull/merge from the <code>master</code> branch in case somebody else changed the branch in the meantime. Then merge your work into <code>master</code> and push to the Gitlab server.</p></li><li><p>Repeat :-)</p></li></ol><p>The Gitlab issue tracker can be used to create, discuss, and assign tasks, as well as to monitor progress towards milestones/releases. Once we have a first release, we will start using <a href="https://semver.org/">semantic versioning</a>.</p><h2 id="Agents.jl"><a class="docs-heading-anchor" href="#Agents.jl">Agents.jl</a><a id="Agents.jl-1"></a><a class="docs-heading-anchor-permalink" href="#Agents.jl" title="Permalink"></a></h2><p>Our model uses <a href="https://juliadynamics.github.io/Agents.jl/stable/">Agents.jl</a> as a framework. Their <a href="https://github.com/JuliaDynamics/Agents.jl">repository</a> can be used to inspect the source code or submit bug reports (the authors are quick to respond). Questions can be asked at the <a href="https://discourse.julialang.org/c/domain/models/21">Julia Discourse forum</a>.</p><p><em>Tutorial on collaborating on Julia packages: <a href="https://www.matecdev.com/posts/julia-package-collaboration.html">https://www.matecdev.com/posts/julia-package-collaboration.html</a>.</em></p><h2 id="Julia-editors"><a class="docs-heading-anchor" href="#Julia-editors">Julia editors</a><a id="Julia-editors-1"></a><a class="docs-heading-anchor-permalink" href="#Julia-editors" title="Permalink"></a></h2><h3 id="Emacs"><a class="docs-heading-anchor" href="#Emacs">Emacs</a><a id="Emacs-1"></a><a class="docs-heading-anchor-permalink" href="#Emacs" title="Permalink"></a></h3><p>There are a couple of addons that make working with Julia much nicer in Emacs:</p><ol><li><p><code>julia-mode</code> gives syntax highlighting. Install with <code>M-x package-install julia-mode</code>.</p></li><li><p><a href="https://github.com/gcv/julia-snail"><code>julia-snail</code></a> provides IDE-like features, especially a fully-functional REPL and the ability to evaluate code straight from inside a buffer. Note that the installation can be somewhat tricky. You first need to manually install all the dependencies of its dependency <a href="https://github.com/akermu/emacs-libvterm">vterm</a>, then install vterm itself with <code>M-x package-install vterm</code>, <em>before</em> you can do <code>M-x package-install julia-snail</code>. Then add it to your <code>init.el</code> with <code>(require 'julia-snail)</code> and <code>(add-hook 'julia-mode-hook #'julia-snail-mode)</code>.</p></li><li><p><a href="http://company-mode.github.io/"><code>company-mode</code></a> integrates with Snail to give code completion. Install with <code>M-x package-install company</code>, then add <code>(add-hook 'julia-mode-hook #'company-mode)</code> and <code>(global-set-key (kbd "C-<tab>") 'company-complete)</code> to your <code>init.el</code>.</p></li><li><p><a href="https://magit.vc/"><code>magit</code></a> is a great git interface for Emacs. Install with <code>M-x package-install magit</code> and add <code>(global-set-key (kbd "C-x g") 'magit-status)</code> to your <code>init.el</code>.</p></li></ol><h3 id="VSCode"><a class="docs-heading-anchor" href="#VSCode">VSCode</a><a id="VSCode-1"></a><a class="docs-heading-anchor-permalink" href="#VSCode" title="Permalink"></a></h3><p>See <a href="https://www.julia-vscode.org/">here</a>.</p><p><em>TODO: add more detail.</em></p><h3 id="Other-useful-stuff"><a class="docs-heading-anchor" href="#Other-useful-stuff">Other useful stuff</a><a id="Other-useful-stuff-1"></a><a class="docs-heading-anchor-permalink" href="#Other-useful-stuff" title="Permalink"></a></h3><ol><li><p><a href="https://timholy.github.io/Revise.jl/stable/"><code>Revise.jl</code></a> allows one to reload code without restarting the Julia interpreter. Get it with <code>Pkg.add("Revise")</code>, then add <code>using Revise</code> to <code>.julia/config/startup.jl</code> to have it automatically available.</p></li><li><p><a href="https://github.com/MichaelMure/git-bug"><code>git-bug</code></a> is a commandline bug tracker that integrates directly with git. It can also be used as a local interface to Gitlab issues. To install on Linux, download the <a href="https://github.com/MichaelMure/git-bug/releases/tag/v0.8.0">binary</a>, copy it to <code>/usr/local/bin/git-bug</code>, and set it as executable with <code>chmod +x /usr/local/bin/git-bug</code>. To set up Gitlab integration, run <code>git bug bridge configure</code> from within the relevant repository.</p></li></ol></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="odd.html">« Overview, Design, Details (ODD)</a><a class="docs-footer-nextpage" href="adapting.html">Adapting Persephone »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/farm.html b/docs/build/farm.html index fba7c06..c2994ff 100644 --- a/docs/build/farm.html +++ b/docs/build/farm.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Farm submodel · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li class="is-active"><a class="tocitem" href="farm.html">Farm submodel</a><ul class="internal"><li><a class="tocitem" href="#farm.jl"><span>farm.jl</span></a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="farm.html">Farm submodel</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="farm.html">Farm submodel</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/farm.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Farm-submodel"><a class="docs-heading-anchor" href="#Farm-submodel">Farm submodel</a><a id="Farm-submodel-1"></a><a class="docs-heading-anchor-permalink" href="#Farm-submodel" title="Permalink"></a></h1><p>Eventually, Persephone will include multiple farm-decision submodels. At the moment, we are only working with a very basic mock-up.</p><h2 id="farm.jl"><a class="docs-heading-anchor" href="#farm.jl">farm.jl</a><a id="farm.jl-1"></a><a class="docs-heading-anchor-permalink" href="#farm.jl" title="Permalink"></a></h2><p>This file is responsible for managing the farm module(s).</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.Farmer" href="#Persephone.Farmer"><code>Persephone.Farmer</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">Farmer</code></pre><p>This is the agent type for the farm ABM. (Not yet implemented.)</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/farm/farm.jl#L6-L10">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initfarms!-Tuple{Agents.AgentBasedModel}" href="#Persephone.initfarms!-Tuple{Agents.AgentBasedModel}"><code>Persephone.initfarms!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initfarms!(model)</code></pre><p>Initialise the model with a set of farm agents.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/farm/farm.jl#L24-L28">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.stepagent!-Tuple{Farmer, Agents.AgentBasedModel}" href="#Persephone.stepagent!-Tuple{Farmer, Agents.AgentBasedModel}"><code>Persephone.stepagent!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">stepagent!(farmer, model)</code></pre><p>Update a farmer by one day.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/farm/farm.jl#L15-L19">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="crops.html">« Crop submodel</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Farm submodel · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li class="is-active"><a class="tocitem" href="farm.html">Farm submodel</a><ul class="internal"><li><a class="tocitem" href="#farm.jl"><span>farm.jl</span></a></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="farm.html">Farm submodel</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="farm.html">Farm submodel</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/farm.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Farm-submodel"><a class="docs-heading-anchor" href="#Farm-submodel">Farm submodel</a><a id="Farm-submodel-1"></a><a class="docs-heading-anchor-permalink" href="#Farm-submodel" title="Permalink"></a></h1><p>Eventually, Persephone will include multiple farm-decision submodels. At the moment, we are only working with a very basic mock-up.</p><h2 id="farm.jl"><a class="docs-heading-anchor" href="#farm.jl">farm.jl</a><a id="farm.jl-1"></a><a class="docs-heading-anchor-permalink" href="#farm.jl" title="Permalink"></a></h2><p>This file is responsible for managing the farm module(s).</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.Farmer" href="#Persephone.Farmer"><code>Persephone.Farmer</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">Farmer</code></pre><p>This is the agent type for the farm ABM. (Not yet implemented.)</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/farm/farm.jl#L6-L10">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initfarms!-Tuple{Agents.AgentBasedModel}" href="#Persephone.initfarms!-Tuple{Agents.AgentBasedModel}"><code>Persephone.initfarms!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initfarms!(model)</code></pre><p>Initialise the model with a set of farm agents.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/farm/farm.jl#L24-L28">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.stepagent!-Tuple{Farmer, Agents.AgentBasedModel}" href="#Persephone.stepagent!-Tuple{Farmer, Agents.AgentBasedModel}"><code>Persephone.stepagent!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">stepagent!(farmer, model)</code></pre><p>Update a farmer by one day.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/farm/farm.jl#L15-L19">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="crops.html">« Crop submodel</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/gis.html b/docs/build/gis.html index 0261bc4..184f3fa 100644 --- a/docs/build/gis.html +++ b/docs/build/gis.html @@ -1,7 +1,7 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>GIS data · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li class="is-active"><a class="tocitem" href="gis.html">GIS data</a><ul class="internal"><li><a class="tocitem" href="#Land-cover-maps"><span>Land cover maps</span></a></li><li><a class="tocitem" href="#Field-ID-maps"><span>Field ID maps</span></a></li></ul></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Developing</a></li><li class="is-active"><a href="gis.html">GIS data</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="gis.html">GIS data</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/gis.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="GIS-data"><a class="docs-heading-anchor" href="#GIS-data">GIS data</a><a id="GIS-data-1"></a><a class="docs-heading-anchor-permalink" href="#GIS-data" title="Permalink"></a></h1><p>Persephone currently requires two separate map input files: one for land cover, the other for field geometry. This documents describe how to obtain and process the data needed for each of these.</p><h2 id="Land-cover-maps"><a class="docs-heading-anchor" href="#Land-cover-maps">Land cover maps</a><a id="Land-cover-maps-1"></a><a class="docs-heading-anchor-permalink" href="#Land-cover-maps" title="Permalink"></a></h2><p>Land cover maps for Germany at 10m resolution can be obtained from <a href="https://data.mundialis.de/geonetwork/srv/eng/catalog.search#/metadata/9246503f-6adf-460b-a31e-73a649182d07">Mundialis</a>. These are generated annually from Sentinel data and comprise the following land cover classes:</p><pre><code class="nohighlight hljs">10: forest +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>GIS data · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li class="is-active"><a class="tocitem" href="gis.html">GIS data</a><ul class="internal"><li><a class="tocitem" href="#Land-cover-maps"><span>Land cover maps</span></a></li><li><a class="tocitem" href="#Field-ID-maps"><span>Field ID maps</span></a></li></ul></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Developing</a></li><li class="is-active"><a href="gis.html">GIS data</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="gis.html">GIS data</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/gis.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="GIS-data"><a class="docs-heading-anchor" href="#GIS-data">GIS data</a><a id="GIS-data-1"></a><a class="docs-heading-anchor-permalink" href="#GIS-data" title="Permalink"></a></h1><p>Persephone currently requires two separate map input files: one for land cover, the other for field geometry. This documents describe how to obtain and process the data needed for each of these.</p><h2 id="Land-cover-maps"><a class="docs-heading-anchor" href="#Land-cover-maps">Land cover maps</a><a id="Land-cover-maps-1"></a><a class="docs-heading-anchor-permalink" href="#Land-cover-maps" title="Permalink"></a></h2><p>Land cover maps for Germany at 10m resolution can be obtained from <a href="https://data.mundialis.de/geonetwork/srv/eng/catalog.search#/metadata/9246503f-6adf-460b-a31e-73a649182d07">Mundialis</a>. These are generated annually from Sentinel data and comprise the following land cover classes:</p><pre><code class="nohighlight hljs">10: forest 20: low vegetation 30: water 40: built-up 50: bare soil -60: agriculture</code></pre><p>To create a Persephone map input file, you need to crop the national Mundialis map to the extent that you want to simulate (suggestion: approx. 10x10km is a reasonable size).</p><p>To do so, download the Mundialis map and import it into QGIS. Then create a new vector layer and create a rectangle feature to delimit the extent of your region. Then go to <code>Raster -> Extraction -> Clip Raster by Extent</code>. Select the Mundialis map as the input layer, set the clipping extent by choosing your region vector layer under <code>Calculate from Layer</code> and specify the output file name before clicking <code>Run</code>. This will generate a TIF file that you can pass to Persephone as the <code>landcovermap</code> parameter.</p><h2 id="Field-ID-maps"><a class="docs-heading-anchor" href="#Field-ID-maps">Field ID maps</a><a id="Field-ID-maps-1"></a><a class="docs-heading-anchor-permalink" href="#Field-ID-maps" title="Permalink"></a></h2><p>In addition to the land cover data explained above, Persephone also needs information about agricultural field boundaries in order to assign these to the farming agents. Unfortunately, getting this is rather more complicated.</p><p>In the EU, every country runs a Land Parcel Information System (LPIS) to administer CAP payments. In Germany, this is called InVeKoS and is run by the Länder. For example, you can view and download the InVeKoS data for Thüringen <a href="https://thueringenviewer.thueringen.de/thviewer/invekos.html">here</a>. This gives you a vector layer which can be loaded into QGIS. However, it needs to be converted to a raster layer and cropped to your region extent before it can be used in Persephone.</p><p>The first thing to do is to make sure that the vector layer has a numeric (!) field with a unique identifier for each field block (check the attribute table). The Thüringen data has the FBI ("Feldblockident") field, but this is a string value and therefore not usable by the rasteriser. So, we set the vector layer to edit mode, open the field calculator, enter the information for a new field (call it "FID" and set it to a 32-bit integer), and enter <code>@row_number</code> in the expression field. Then save the layer and close the calculator.</p><p>Secondly, you need to filter out all non-field/non-grassland plot types. (LPIS also has data on forests and various landscape elements that are not relevant to our use case.) Assuming you're working with the Thüringen InVeKoS data (other data sets may have a different structure), right-click on the layer name in QGIS' layer overview and click on "Filter...". Then, enter this expression in the query builder: <code>"BNK" = 'AL' OR "BNK" = 'GL'</code> and click "OK". This will select only field and grassland plots.</p><p>Next, open the rasteriser (<code>Raster -> Conversion -> Rasterize</code>). Select your FID field as the "Field to use for a burn-in value", and your land cover map (as created above - this ensures the two layers match) as the output extent. Make sure the "fixed value to burn" is "Not set". Then choose "Georeferenced units" as the "Out raster size units" and set horizontal and vertical resolution to 10.0. In the advanced parameters, set the output data type to <code>UInt32</code>. Finally, enter an output file name and run. The resulting TIF file can be passed to Persephone as the <code>farmfieldmap</code> parameter.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="architecture.html">« Source code architecture</a><a class="docs-footer-nextpage" href="species-dsl.html">Defining new species »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +60: agriculture</code></pre><p>To create a Persephone map input file, you need to crop the national Mundialis map to the extent that you want to simulate (suggestion: approx. 10x10km is a reasonable size).</p><p>To do so, download the Mundialis map and import it into QGIS. Then create a new vector layer and create a rectangle feature to delimit the extent of your region. Then go to <code>Raster -> Extraction -> Clip Raster by Extent</code>. Select the Mundialis map as the input layer, set the clipping extent by choosing your region vector layer under <code>Calculate from Layer</code> and specify the output file name before clicking <code>Run</code>. This will generate a TIF file that you can pass to Persephone as the <code>landcovermap</code> parameter.</p><h2 id="Field-ID-maps"><a class="docs-heading-anchor" href="#Field-ID-maps">Field ID maps</a><a id="Field-ID-maps-1"></a><a class="docs-heading-anchor-permalink" href="#Field-ID-maps" title="Permalink"></a></h2><p>In addition to the land cover data explained above, Persephone also needs information about agricultural field boundaries in order to assign these to the farming agents. Unfortunately, getting this is rather more complicated.</p><p>In the EU, every country runs a Land Parcel Information System (LPIS) to administer CAP payments. In Germany, this is called InVeKoS and is run by the Länder. For example, you can view and download the InVeKoS data for Thüringen <a href="https://thueringenviewer.thueringen.de/thviewer/invekos.html">here</a>. This gives you a vector layer which can be loaded into QGIS. However, it needs to be converted to a raster layer and cropped to your region extent before it can be used in Persephone.</p><p>The first thing to do is to make sure that the vector layer has a numeric (!) field with a unique identifier for each field block (check the attribute table). The Thüringen data has the FBI ("Feldblockident") field, but this is a string value and therefore not usable by the rasteriser. So, we set the vector layer to edit mode, open the field calculator, enter the information for a new field (call it "FID" and set it to a 32-bit integer), and enter <code>@row_number</code> in the expression field. Then save the layer and close the calculator.</p><p>Secondly, you need to filter out all non-field/non-grassland plot types. (LPIS also has data on forests and various landscape elements that are not relevant to our use case.) Assuming you're working with the Thüringen InVeKoS data (other data sets may have a different structure), right-click on the layer name in QGIS' layer overview and click on "Filter...". Then, enter this expression in the query builder: <code>"BNK" = 'AL' OR "BNK" = 'GL'</code> and click "OK". This will select only field and grassland plots.</p><p>Next, open the rasteriser (<code>Raster -> Conversion -> Rasterize</code>). Select your FID field as the "Field to use for a burn-in value", and your land cover map (as created above - this ensures the two layers match) as the output extent. Make sure the "fixed value to burn" is "Not set". Then choose "Georeferenced units" as the "Out raster size units" and set horizontal and vertical resolution to 10.0. In the advanced parameters, set the output data type to <code>UInt32</code>. Finally, enter an output file name and run. The resulting TIF file can be passed to Persephone as the <code>farmfieldmap</code> parameter.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="architecture.html">« Source code architecture</a><a class="docs-footer-nextpage" href="species-dsl.html">Defining new species »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/index.html b/docs/build/index.html index b44a47b..8c55acd 100644 --- a/docs/build/index.html +++ b/docs/build/index.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Introduction · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li class="is-active"><a class="tocitem" href="index.html">Introduction</a><ul class="internal"><li><a class="tocitem" href="#Running-the-model"><span>Running the model</span></a></li><li><a class="tocitem" href="#Model-input"><span>Model input</span></a></li></ul></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="index.html">Introduction</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="index.html">Introduction</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/index.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Introduction"><a class="docs-heading-anchor" href="#Introduction">Introduction</a><a id="Introduction-1"></a><a class="docs-heading-anchor-permalink" href="#Introduction" title="Permalink"></a></h1><p>Persephone is an agent-based, socio-economic-ecological model of agricultural landscapes in Europe under the Common Agricultural Policy (CAP).</p><p>It's aim is to investigate how policy affects farmer decision-making, and how this in turn affects various animal species. It includes a farm submodel, a crop-growth submodel, and an ecological submodels.</p><h2 id="Running-the-model"><a class="docs-heading-anchor" href="#Running-the-model">Running the model</a><a id="Running-the-model-1"></a><a class="docs-heading-anchor-permalink" href="#Running-the-model" title="Permalink"></a></h2><p>To run a single experiment, execute:</p><pre><code class="nohighlight hljs">./run.jl -c <CONFIG></code></pre><p>Other commandline arguments are:</p><pre><code class="nohighlight hljs">usage: run.jl [-c CONFIGFILE] [-s SEED] [-o OUTDIR] [-l LOGLEVEL] +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Introduction · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li class="is-active"><a class="tocitem" href="index.html">Introduction</a><ul class="internal"><li><a class="tocitem" href="#Running-the-model"><span>Running the model</span></a></li><li><a class="tocitem" href="#Model-input"><span>Model input</span></a></li></ul></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="index.html">Introduction</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="index.html">Introduction</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/index.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Introduction"><a class="docs-heading-anchor" href="#Introduction">Introduction</a><a id="Introduction-1"></a><a class="docs-heading-anchor-permalink" href="#Introduction" title="Permalink"></a></h1><p>Persephone is an agent-based, socio-economic-ecological model of agricultural landscapes in Europe under the Common Agricultural Policy (CAP).</p><p>It's aim is to investigate how policy affects farmer decision-making, and how this in turn affects various animal species. It includes a farm submodel, a crop-growth submodel, and an ecological submodels.</p><h2 id="Running-the-model"><a class="docs-heading-anchor" href="#Running-the-model">Running the model</a><a id="Running-the-model-1"></a><a class="docs-heading-anchor-permalink" href="#Running-the-model" title="Permalink"></a></h2><p>To run a single experiment, execute:</p><pre><code class="nohighlight hljs">julia run.jl -c <CONFIG></code></pre><p>Other commandline arguments are:</p><pre><code class="nohighlight hljs">usage: run.jl [-c CONFIGFILE] [-s SEED] [-o OUTDIR] [-l LOGLEVEL] [--version] [-h] optional arguments: @@ -37,4 +37,4 @@ popoutfreq = "daily" # output frequency population-level data, daily/m indoutfreq = "end" # output frequency individual-level data, daily/monthly/yearly/end/never [crop] -cropmodel = "linear" # crop growth model to use, "linear" or "aquacrop" (not yet implemented)</code></pre><p><em>Last updated: 2023-02-03 (commit 092c769)</em> </p></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="odd.html">Overview, Design, Details (ODD) »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +cropmodel = "linear" # crop growth model to use, "linear" or "aquacrop" (not yet implemented)</code></pre><div class="admonition is-success"><header class="admonition-header">Parameter scanning</header><div class="admonition-body"><p>You can set any parameter to a list of different values, e.g. <code>seed = [1,2,3]</code>. Persephone will then set up and run multiple simulations, one for every possible combination of parameters that you entered (i.e. do a full-factorial simulation experiment).</p></div></div><p><em>Last updated: 2023-02-07 (commit 600bbd3)</em> </p></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="odd.html">Overview, Design, Details (ODD) »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/io.html b/docs/build/io.html index b1ead42..0bb8d33 100644 --- a/docs/build/io.html +++ b/docs/build/io.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Input, Output, and Settings · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li class="is-active"><a class="tocitem" href="io.html">Input, Output, and Settings</a><ul class="internal"><li><a class="tocitem" href="#parameters.toml"><span>parameters.toml</span></a></li><li><a class="tocitem" href="#input.jl"><span>input.jl</span></a></li><li><a class="tocitem" href="#output.jl"><span>output.jl</span></a></li></ul></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Core</a></li><li class="is-active"><a href="io.html">Input, Output, and Settings</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="io.html">Input, Output, and Settings</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/io.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Input,-Output,-and-Settings"><a class="docs-heading-anchor" href="#Input,-Output,-and-Settings">Input, Output, and Settings</a><a id="Input,-Output,-and-Settings-1"></a><a class="docs-heading-anchor-permalink" href="#Input,-Output,-and-Settings" title="Permalink"></a></h1><p>These functions are responsible for reading in all model configurations (passed by config file or commandline), administrating them during a run, and printing any output.</p><h2 id="parameters.toml"><a class="docs-heading-anchor" href="#parameters.toml">parameters.toml</a><a id="parameters.toml-1"></a><a class="docs-heading-anchor-permalink" href="#parameters.toml" title="Permalink"></a></h2><p>This is the default configuration file for Persephone, containing all model parameters. The syntax is described here: <a href="https://toml.io/en/">https://toml.io/en/</a></p><p>DO NOT MODIFY THIS FILE FOR SIMULATION EXPERIMENTS! Instead, copy it to another directory, modify the copy, and then pass it to the model using the <code>--config</code> parameter.</p><h2 id="input.jl"><a class="docs-heading-anchor" href="#input.jl">input.jl</a><a id="input.jl-1"></a><a class="docs-heading-anchor-permalink" href="#input.jl" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-binding" id="Persephone.PARAMFILE" href="#Persephone.PARAMFILE"><code>Persephone.PARAMFILE</code></a> — <span class="docstring-category">Constant</span></header><section><div><p>The file that stores all default parameters: <code>src/parameters.toml</code></p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L9-L11">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.flattenTOML-Tuple{Any}" href="#Persephone.flattenTOML-Tuple{Any}"><code>Persephone.flattenTOML</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">flattenTOML(dict)</code></pre><p>An internal utility function to convert the two-dimensional dict returned by <code>TOML.parsefile()</code> into a one-dimensional dict, so that instead of writing <code>settings["domain"]["param"]</code> one can use <code>settings["domain.param"]</code>. Can be reversed with <a href="io.html#Persephone.prepareTOML-Tuple{Any}"><code>prepareTOML</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L97-L104">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.getsettings" href="#Persephone.getsettings"><code>Persephone.getsettings</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">getsettings(configfile, seed=nothing)</code></pre><p>Combines all configuration options to produce a single settings dict. Precedence: commandline parameters - user config file - default values</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L34-L39">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.parsecommandline-Tuple{}" href="#Persephone.parsecommandline-Tuple{}"><code>Persephone.parsecommandline</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">parsecommandline()</code></pre><p>Certain software parameters can be set via the commandline.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L137-L141">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.preprocessparameters-Tuple{Dict{String, Any}, String}" href="#Persephone.preprocessparameters-Tuple{Dict{String, Any}, String}"><code>Persephone.preprocessparameters</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">preprocessparameters(settings)</code></pre><p>Take the raw input parameters and process them (convert types, perform checks, etc.). This is a helper function for <a href="io.html#Persephone.getsettings"><code>getsettings</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L72-L77">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@param-Tuple{Any}" href="#Persephone.@param-Tuple{Any}"><code>Persephone.@param</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@param(domainparam)</code></pre><p>Return a configuration parameter from the global settings. The argument should be in the form <code><domain>.<parameter></code>, for example <code>@param(core.outdir)</code>. Possible values for <code><domain></code> are <code>core</code>, <code>nature</code>, <code>farm</code>, or <code>crop</code>. For a full list of parameters, see <code>src/parameters.toml</code>.</p><p>Note: this macro only works in a context where the <code>model</code> object is available!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L16-L27">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@rand-Tuple" href="#Persephone.@rand-Tuple"><code>Persephone.@rand</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@rand(args...)</code></pre><p>Return a random number or element from the sample, using the model RNG. This is a utility wrapper that can only be used a context where the <code>model</code> object is available.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L115-L121">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@shuffle!-Tuple{Any}" href="#Persephone.@shuffle!-Tuple{Any}"><code>Persephone.@shuffle!</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@shuffle!(collection)</code></pre><p>Shuffle the given collection in place, using the model RNG. This is a utility wrapper that can only be used a context where the <code>model</code> object is available.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L126-L132">source</a></section></article><h2 id="output.jl"><a class="docs-heading-anchor" href="#output.jl">output.jl</a><a id="output.jl-1"></a><a class="docs-heading-anchor-permalink" href="#output.jl" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-binding" id="Persephone.DataOutput" href="#Persephone.DataOutput"><code>Persephone.DataOutput</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">DataOutput</code></pre><p>A struct for organising model output. This is designed for text-based data output that is updated more or less regularly (e.g. population data in csv files). Submodels can register their own output functions using <a href="io.html#Persephone.newdataoutput!-Tuple{Agents.AgentBasedModel, String, String, Function, String}"><code>newdataoutput!</code></a>.</p><p>Struct fields: - filename: the name of the file to be created in the user-specified output directory - header: a string to be written to the start of the file as it is initialised - outputfunction: a function that takes a model object and returns a string to write to file - frequency: how often to call the output function (daily/monthly/yearly/end/never)</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L122-L134">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.createdatadir-Tuple{String, Union{Bool, String}}" href="#Persephone.createdatadir-Tuple{String, Union{Bool, String}}"><code>Persephone.createdatadir</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">createdatadir(outdir, overwrite)</code></pre><p>Creates the output directory, dealing with possible conflicts.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L11-L15">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.modellogger-Tuple{String, String}" href="#Persephone.modellogger-Tuple{String, String}"><code>Persephone.modellogger</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">modellogger(loglevel, outdir)</code></pre><p>Create a logger object that writes output both to screen and to a logfile. This object is stored as <code>model.logger</code> and can then be used with <code>with_logger()</code>. Note: requires <a href="io.html#Persephone.createdatadir-Tuple{String, Union{Bool, String}}"><code>createdatadir</code></a> to be run first.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L32-L38">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.newdataoutput!-Tuple{Agents.AgentBasedModel, String, String, Function, String}" href="#Persephone.newdataoutput!-Tuple{Agents.AgentBasedModel, String, String, Function, String}"><code>Persephone.newdataoutput!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">newdataoutput!(model, filename, header, outputfunction, frequency)</code></pre><p>Create and register a new data output. This function must be called by all submodels that want to have their output functions called regularly.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L142-L147">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.outputdata-Tuple{Agents.AgentBasedModel}" href="#Persephone.outputdata-Tuple{Agents.AgentBasedModel}"><code>Persephone.outputdata</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">outputdata(model)</code></pre><p>Cycle through all registered data outputs and activate them according to their configured frequency.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L162-L167">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.prepareTOML-Tuple{Any}" href="#Persephone.prepareTOML-Tuple{Any}"><code>Persephone.prepareTOML</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">prepareTOML(dict)</code></pre><p>An internal utility function to re-convert the one-dimensional dict created by <a href="io.html#Persephone.flattenTOML-Tuple{Any}"><code>flattenTOML</code></a> into the two-dimensional dict needed by <code>TOML.print</code>, and convert any data types into TOML-compatible types where necessary.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L100-L106">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.saveinputfiles-Tuple{Agents.AgentBasedModel}" href="#Persephone.saveinputfiles-Tuple{Agents.AgentBasedModel}"><code>Persephone.saveinputfiles</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">saveinputfiles(model)</code></pre><p>Copy all input files into the output directory, including the actual parameter settings used. This allows replicating a run in future.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L66-L71">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.withtestlogger-Tuple{Agents.AgentBasedModel}" href="#Persephone.withtestlogger-Tuple{Agents.AgentBasedModel}"><code>Persephone.withtestlogger</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">withtestlogger(model)</code></pre><p>Replace the model logger with the currently active logger. This is intended to be used in the testsuite to circumvent a <a href="https://github.com/JuliaLang/julia/issues/48456">Julia issue</a>, where <code>@test_logs</code> doesn't work with local loggers.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L52-L58">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="simulation.html">« Simulation</a><a class="docs-footer-nextpage" href="nature.html">Nature »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Input, Output, and Settings · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li class="is-active"><a class="tocitem" href="io.html">Input, Output, and Settings</a><ul class="internal"><li><a class="tocitem" href="#parameters.toml"><span>parameters.toml</span></a></li><li><a class="tocitem" href="#input.jl"><span>input.jl</span></a></li><li><a class="tocitem" href="#output.jl"><span>output.jl</span></a></li></ul></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Core</a></li><li class="is-active"><a href="io.html">Input, Output, and Settings</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="io.html">Input, Output, and Settings</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/io.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Input,-Output,-and-Settings"><a class="docs-heading-anchor" href="#Input,-Output,-and-Settings">Input, Output, and Settings</a><a id="Input,-Output,-and-Settings-1"></a><a class="docs-heading-anchor-permalink" href="#Input,-Output,-and-Settings" title="Permalink"></a></h1><p>These functions are responsible for reading in all model configurations (passed by config file or commandline), administrating them during a run, and printing any output.</p><h2 id="parameters.toml"><a class="docs-heading-anchor" href="#parameters.toml">parameters.toml</a><a id="parameters.toml-1"></a><a class="docs-heading-anchor-permalink" href="#parameters.toml" title="Permalink"></a></h2><p>This is the default configuration file for Persephone, containing all model parameters. The syntax is described here: <a href="https://toml.io/en/">https://toml.io/en/</a></p><p>DO NOT MODIFY THIS FILE FOR SIMULATION EXPERIMENTS! Instead, copy it to another directory, modify the copy, and then pass it to the model using the <code>--config</code> parameter.</p><h2 id="input.jl"><a class="docs-heading-anchor" href="#input.jl">input.jl</a><a id="input.jl-1"></a><a class="docs-heading-anchor-permalink" href="#input.jl" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-binding" id="Persephone.PARAMFILE" href="#Persephone.PARAMFILE"><code>Persephone.PARAMFILE</code></a> — <span class="docstring-category">Constant</span></header><section><div><p>The file that stores all default parameters: <code>src/parameters.toml</code></p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L9-L11">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.flattenTOML-Tuple{Any}" href="#Persephone.flattenTOML-Tuple{Any}"><code>Persephone.flattenTOML</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">flattenTOML(dict)</code></pre><p>An internal utility function to convert the two-dimensional dict returned by <code>TOML.parsefile()</code> into a one-dimensional dict, so that instead of writing <code>settings["domain"]["param"]</code> one can use <code>settings["domain.param"]</code>. Can be reversed with <a href="io.html#Persephone.prepareTOML-Tuple{Any}"><code>prepareTOML</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L97-L104">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.getsettings" href="#Persephone.getsettings"><code>Persephone.getsettings</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">getsettings(configfile, seed=nothing)</code></pre><p>Combines all configuration options to produce a single settings dict. Precedence: commandline parameters - user config file - default values</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L34-L39">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.parsecommandline-Tuple{}" href="#Persephone.parsecommandline-Tuple{}"><code>Persephone.parsecommandline</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">parsecommandline()</code></pre><p>Certain software parameters can be set via the commandline.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L137-L141">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.preprocessparameters-Tuple{Dict{String, Any}, String}" href="#Persephone.preprocessparameters-Tuple{Dict{String, Any}, String}"><code>Persephone.preprocessparameters</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">preprocessparameters(settings)</code></pre><p>Take the raw input parameters and process them (convert types, perform checks, etc.). This is a helper function for <a href="io.html#Persephone.getsettings"><code>getsettings</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L72-L77">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@param-Tuple{Any}" href="#Persephone.@param-Tuple{Any}"><code>Persephone.@param</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@param(domainparam)</code></pre><p>Return a configuration parameter from the global settings. The argument should be in the form <code><domain>.<parameter></code>, for example <code>@param(core.outdir)</code>. Possible values for <code><domain></code> are <code>core</code>, <code>nature</code>, <code>farm</code>, or <code>crop</code>. For a full list of parameters, see <code>src/parameters.toml</code>.</p><p>Note: this macro only works in a context where the <code>model</code> object is available!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L16-L27">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@rand-Tuple" href="#Persephone.@rand-Tuple"><code>Persephone.@rand</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@rand(args...)</code></pre><p>Return a random number or element from the sample, using the model RNG. This is a utility wrapper that can only be used a context where the <code>model</code> object is available.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L115-L121">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@shuffle!-Tuple{Any}" href="#Persephone.@shuffle!-Tuple{Any}"><code>Persephone.@shuffle!</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@shuffle!(collection)</code></pre><p>Shuffle the given collection in place, using the model RNG. This is a utility wrapper that can only be used a context where the <code>model</code> object is available.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/input.jl#L126-L132">source</a></section></article><h2 id="output.jl"><a class="docs-heading-anchor" href="#output.jl">output.jl</a><a id="output.jl-1"></a><a class="docs-heading-anchor-permalink" href="#output.jl" title="Permalink"></a></h2><article class="docstring"><header><a class="docstring-binding" id="Persephone.DataOutput" href="#Persephone.DataOutput"><code>Persephone.DataOutput</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">DataOutput</code></pre><p>A struct for organising model output. This is designed for text-based data output that is updated more or less regularly (e.g. population data in csv files). Submodels can register their own output functions using <a href="io.html#Persephone.newdataoutput!-Tuple{Agents.AgentBasedModel, String, String, Function, String}"><code>newdataoutput!</code></a>.</p><p>Struct fields: - filename: the name of the file to be created in the user-specified output directory - header: a string to be written to the start of the file as it is initialised - outputfunction: a function that takes a model object and returns a string to write to file - frequency: how often to call the output function (daily/monthly/yearly/end/never)</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L122-L134">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.createdatadir-Tuple{String, Union{Bool, String}}" href="#Persephone.createdatadir-Tuple{String, Union{Bool, String}}"><code>Persephone.createdatadir</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">createdatadir(outdir, overwrite)</code></pre><p>Creates the output directory, dealing with possible conflicts.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L11-L15">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.modellogger-Tuple{String, String}" href="#Persephone.modellogger-Tuple{String, String}"><code>Persephone.modellogger</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">modellogger(loglevel, outdir)</code></pre><p>Create a logger object that writes output both to screen and to a logfile. This object is stored as <code>model.logger</code> and can then be used with <code>with_logger()</code>. Note: requires <a href="io.html#Persephone.createdatadir-Tuple{String, Union{Bool, String}}"><code>createdatadir</code></a> to be run first.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L32-L38">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.newdataoutput!-Tuple{Agents.AgentBasedModel, String, String, Function, String}" href="#Persephone.newdataoutput!-Tuple{Agents.AgentBasedModel, String, String, Function, String}"><code>Persephone.newdataoutput!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">newdataoutput!(model, filename, header, outputfunction, frequency)</code></pre><p>Create and register a new data output. This function must be called by all submodels that want to have their output functions called regularly.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L142-L147">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.outputdata-Tuple{Agents.AgentBasedModel}" href="#Persephone.outputdata-Tuple{Agents.AgentBasedModel}"><code>Persephone.outputdata</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">outputdata(model)</code></pre><p>Cycle through all registered data outputs and activate them according to their configured frequency.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L162-L167">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.prepareTOML-Tuple{Any}" href="#Persephone.prepareTOML-Tuple{Any}"><code>Persephone.prepareTOML</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">prepareTOML(dict)</code></pre><p>An internal utility function to re-convert the one-dimensional dict created by <a href="io.html#Persephone.flattenTOML-Tuple{Any}"><code>flattenTOML</code></a> into the two-dimensional dict needed by <code>TOML.print</code>, and convert any data types into TOML-compatible types where necessary.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L100-L106">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.saveinputfiles-Tuple{Agents.AgentBasedModel}" href="#Persephone.saveinputfiles-Tuple{Agents.AgentBasedModel}"><code>Persephone.saveinputfiles</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">saveinputfiles(model)</code></pre><p>Copy all input files into the output directory, including the actual parameter settings used. This allows replicating a run in future.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L66-L71">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.withtestlogger-Tuple{Agents.AgentBasedModel}" href="#Persephone.withtestlogger-Tuple{Agents.AgentBasedModel}"><code>Persephone.withtestlogger</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">withtestlogger(model)</code></pre><p>Replace the model logger with the currently active logger. This is intended to be used in the testsuite to circumvent a <a href="https://github.com/JuliaLang/julia/issues/48456">Julia issue</a>, where <code>@test_logs</code> doesn't work with local loggers.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/output.jl#L52-L58">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="simulation.html">« Simulation</a><a class="docs-footer-nextpage" href="nature.html">Nature »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/nature.html b/docs/build/nature.html index b1e23ac..5dc4231 100644 --- a/docs/build/nature.html +++ b/docs/build/nature.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Nature · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li class="is-active"><a class="tocitem" href="nature.html">Nature</a><ul class="internal"><li><a class="tocitem" href="#nature.jl"><span>nature.jl</span></a></li><li><a class="tocitem" href="#populations.jl"><span>populations.jl</span></a></li><li><a class="tocitem" href="#ecologicaldata.jl"><span>ecologicaldata.jl</span></a></li></ul></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Nature</a></li><li class="is-active"><a href="nature.html">Nature</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="nature.html">Nature</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/nature.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Nature"><a class="docs-heading-anchor" href="#Nature">Nature</a><a id="Nature-1"></a><a class="docs-heading-anchor-permalink" href="#Nature" title="Permalink"></a></h1><h2 id="nature.jl"><a class="docs-heading-anchor" href="#nature.jl">nature.jl</a><a id="nature.jl-1"></a><a class="docs-heading-anchor-permalink" href="#nature.jl" title="Permalink"></a></h2><p>This file is responsible for managing the animal modules.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.Animal" href="#Persephone.Animal"><code>Persephone.Animal</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">Animal</code></pre><p>This is the generic agent type for all animals. Species are differentiated by trait dictionaries passed by them during initialisation. (Note that each trait variable can still be accessed as if it were a normal field name, i.e. the trait <code>phase</code> can be accessed and modified with <code>animal.phase</code>.)</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L12-L19">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.animalid-Tuple{Animal}" href="#Persephone.animalid-Tuple{Animal}"><code>Persephone.animalid</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">animalid(animal)</code></pre><p>A small utility function to return a string with the species name and ID of an animal.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L52-L56">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initnature!-Tuple{Agents.AgentBasedModel}" href="#Persephone.initnature!-Tuple{Agents.AgentBasedModel}"><code>Persephone.initnature!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initnature!(model)</code></pre><p>Initialise the model with all simulated animal populations.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L71-L75">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.stepagent!-Tuple{Animal, Agents.AgentBasedModel}" href="#Persephone.stepagent!-Tuple{Animal, Agents.AgentBasedModel}"><code>Persephone.stepagent!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">stepagent!(animal, model)</code></pre><p>Update an animal by one day, executing it's currently active phase function.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L61-L65">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@countanimals-Tuple" href="#Persephone.@countanimals-Tuple"><code>Persephone.@countanimals</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@countanimals(species="", radius=0)</code></pre><p>Count the number of animals of the given species in this location. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L374-L380">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@cropheight-Tuple{}" href="#Persephone.@cropheight-Tuple{}"><code>Persephone.@cropheight</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@cropheight</code></pre><p>Return the height of the crop at this position, or 0 if there is no crop here. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L341-L347">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@croptype-Tuple{}" href="#Persephone.@croptype-Tuple{}"><code>Persephone.@croptype</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@croptype</code></pre><p>Return the local croptype, or nothing if there is no crop here. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L330-L336">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@distanceto-Tuple{Any}" href="#Persephone.@distanceto-Tuple{Any}"><code>Persephone.@distanceto</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@distanceto(habitat)</code></pre><p>Calculate the distance to the closest habitat of the specified type or descriptor. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L352-L358">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@distancetoedge-Tuple{}" href="#Persephone.@distancetoedge-Tuple{}"><code>Persephone.@distancetoedge</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@distancetoedge</code></pre><p>Calculate the distance to the closest neighbouring habitat. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L363-L369">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@habitat-Tuple{Any}" href="#Persephone.@habitat-Tuple{Any}"><code>Persephone.@habitat</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@habitat</code></pre><p>Specify habitat suitability for spatial ecological processes.</p><p>This macro works by creating an anonymous function that takes in a model object and a position, and returns <code>true</code> or <code>false</code> depending on the conditions specified in the macro body.</p><p>Several utility macros can be used within the body of <code>@habitat</code> as a short-hand for common expressions: <a href="nature.html#Persephone.@landcover-Tuple{}"><code>@landcover</code></a>, <a href="nature.html#Persephone.@croptype-Tuple{}"><code>@croptype</code></a>, <a href="nature.html#Persephone.@cropheight-Tuple{}"><code>@cropheight</code></a>, <a href="nature.html#Persephone.@distanceto-Tuple{Any}"><code>@distanceto</code></a>, <a href="nature.html#Persephone.@distancetoedge-Tuple{}"><code>@distancetoedge</code></a>, <a href="nature.html#Persephone.@countanimals-Tuple"><code>@countanimals</code></a>. The variables <code>model</code> and <code>pos</code> can be used for checks that don't have a macro available.</p><p>Two example uses of <code>@habitat</code> might look like this:</p><pre><code class="language-julia hljs">movementhabitat = @habitat(@landcover() in (grass agriculture soil)) +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Nature · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li class="is-active"><a class="tocitem" href="nature.html">Nature</a><ul class="internal"><li><a class="tocitem" href="#nature.jl"><span>nature.jl</span></a></li><li><a class="tocitem" href="#populations.jl"><span>populations.jl</span></a></li><li><a class="tocitem" href="#ecologicaldata.jl"><span>ecologicaldata.jl</span></a></li></ul></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Nature</a></li><li class="is-active"><a href="nature.html">Nature</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="nature.html">Nature</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/nature.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Nature"><a class="docs-heading-anchor" href="#Nature">Nature</a><a id="Nature-1"></a><a class="docs-heading-anchor-permalink" href="#Nature" title="Permalink"></a></h1><h2 id="nature.jl"><a class="docs-heading-anchor" href="#nature.jl">nature.jl</a><a id="nature.jl-1"></a><a class="docs-heading-anchor-permalink" href="#nature.jl" title="Permalink"></a></h2><p>This file is responsible for managing the animal modules.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.Animal" href="#Persephone.Animal"><code>Persephone.Animal</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">Animal</code></pre><p>This is the generic agent type for all animals. Species are differentiated by trait dictionaries passed by them during initialisation. (Note that each trait variable can still be accessed as if it were a normal field name, i.e. the trait <code>phase</code> can be accessed and modified with <code>animal.phase</code>.)</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L12-L19">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.animalid-Tuple{Animal}" href="#Persephone.animalid-Tuple{Animal}"><code>Persephone.animalid</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">animalid(animal)</code></pre><p>A small utility function to return a string with the species name and ID of an animal.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L52-L56">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initnature!-Tuple{Agents.AgentBasedModel}" href="#Persephone.initnature!-Tuple{Agents.AgentBasedModel}"><code>Persephone.initnature!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initnature!(model)</code></pre><p>Initialise the model with all simulated animal populations.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L71-L75">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.stepagent!-Tuple{Animal, Agents.AgentBasedModel}" href="#Persephone.stepagent!-Tuple{Animal, Agents.AgentBasedModel}"><code>Persephone.stepagent!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">stepagent!(animal, model)</code></pre><p>Update an animal by one day, executing it's currently active phase function.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L61-L65">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@countanimals-Tuple" href="#Persephone.@countanimals-Tuple"><code>Persephone.@countanimals</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@countanimals(species="", radius=0)</code></pre><p>Count the number of animals of the given species in this location. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L374-L380">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@cropheight-Tuple{}" href="#Persephone.@cropheight-Tuple{}"><code>Persephone.@cropheight</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@cropheight</code></pre><p>Return the height of the crop at this position, or 0 if there is no crop here. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L341-L347">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@croptype-Tuple{}" href="#Persephone.@croptype-Tuple{}"><code>Persephone.@croptype</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@croptype</code></pre><p>Return the local croptype, or nothing if there is no crop here. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L330-L336">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@distanceto-Tuple{Any}" href="#Persephone.@distanceto-Tuple{Any}"><code>Persephone.@distanceto</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@distanceto(habitat)</code></pre><p>Calculate the distance to the closest habitat of the specified type or descriptor. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L352-L358">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@distancetoedge-Tuple{}" href="#Persephone.@distancetoedge-Tuple{}"><code>Persephone.@distancetoedge</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@distancetoedge</code></pre><p>Calculate the distance to the closest neighbouring habitat. This is a utility wrapper that can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> or <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L363-L369">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@habitat-Tuple{Any}" href="#Persephone.@habitat-Tuple{Any}"><code>Persephone.@habitat</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@habitat</code></pre><p>Specify habitat suitability for spatial ecological processes.</p><p>This macro works by creating an anonymous function that takes in a model object and a position, and returns <code>true</code> or <code>false</code> depending on the conditions specified in the macro body.</p><p>Several utility macros can be used within the body of <code>@habitat</code> as a short-hand for common expressions: <a href="nature.html#Persephone.@landcover-Tuple{}"><code>@landcover</code></a>, <a href="nature.html#Persephone.@croptype-Tuple{}"><code>@croptype</code></a>, <a href="nature.html#Persephone.@cropheight-Tuple{}"><code>@cropheight</code></a>, <a href="nature.html#Persephone.@distanceto-Tuple{Any}"><code>@distanceto</code></a>, <a href="nature.html#Persephone.@distancetoedge-Tuple{}"><code>@distancetoedge</code></a>, <a href="nature.html#Persephone.@countanimals-Tuple"><code>@countanimals</code></a>. The variables <code>model</code> and <code>pos</code> can be used for checks that don't have a macro available.</p><p>Two example uses of <code>@habitat</code> might look like this:</p><pre><code class="language-julia hljs">movementhabitat = @habitat(@landcover() in (grass agriculture soil)) nestinghabitat = @habitat((@landcover() == grass || (@landcover() == agriculture && @croptype() != maize && @@ -13,4 +13,4 @@ nestinghabitat = @habitat((@landcover() == grass || @phase phase1 begin ... end -end</code></pre><p>The definition body (enclosed in the begin/end block) has two sections. First comes a call to <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a>, and optionally a list of species-specific parameters, which are assigned just like normal variables. Second come one or more phase definitions, that describe the behaviour of the species during various parts of its life cycle. (See the documentation to <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a> and <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> for details).</p><p>Code in a species definition block can access the rest of the model using the <code>model</code> variable (an object of type <code>AgentBasedModel</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L94-L123">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@trait-Tuple{Any}" href="#Persephone.@trait-Tuple{Any}"><code>Persephone.@trait</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@trait(traitname)</code></pre><p>A utility macro to quickly access an animal's trait value. This can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L202-L207">source</a></section></article><h2 id="populations.jl"><a class="docs-heading-anchor" href="#populations.jl">populations.jl</a><a id="populations.jl-1"></a><a class="docs-heading-anchor-permalink" href="#populations.jl" title="Permalink"></a></h2><p>This file contains a set of utility functions for species, including initialisation, reproduction, and mortality.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.countanimals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.countanimals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.countanimals</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">countanimals(pos, model; species="", radius=0)</code></pre><p>Count the number of animals in this location (optionally supplying a species name and radius).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L137-L141">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initpopulation-Tuple{Function}" href="#Persephone.initpopulation-Tuple{Function}"><code>Persephone.initpopulation</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initpopulation(habitatdescriptor; popsize=-1, pairs=false, asexual=false)</code></pre><p>Creates a function that initialises individuals at random locations across the landscape. This can be used to create the <code>initialise!</code> variable in a species definition block.</p><ul><li><p><code>habitatdescriptor</code> is a function that determines whether a given location is suitable or not (create this using <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>).</p></li><li><p><code>phase</code> determines which life phase individuals will be assigned to. If this is <code>nothing</code>, the species' default post-natal life stage will be used (although note that this is probably not what you want).</p></li><li><p><code>popsize</code> determines the number of individuals that will be created. If this is zero or negative, one individual will be created in every suitable location in the landscape. If <code>popsize</code> is greater than the number of suitable locations, multiple individuals will be created in one place. (Maximum population density can be set in the habitat descriptor using the <a href="nature.html#Persephone.@countanimals-Tuple"><code>@countanimals</code></a> macro.)</p></li><li><p>If <code>pairs</code> is true, a male and a female individual will be created in each selected location, otherwise, only one individual will be created at a time.</p></li><li><p>If <code>asexual</code> is true, all created individuals are assigned the sex <code>hermaphrodite</code>, otherwise, they are randomly assigned male of female. (If <code>pairs</code> is true, <code>asexual</code> is ignored.)</p></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L7-L32">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initrandompopulation-Tuple{Int64}" href="#Persephone.initrandompopulation-Tuple{Int64}"><code>Persephone.initrandompopulation</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initrandompopulation(popsize; kwargs...)</code></pre><p>A simplified version of <a href="nature.html#Persephone.initpopulation-Tuple{Function}"><code>initpopulation</code></a>. Creates a function that initialises <code>popsize</code> individuals, spread at random across the landscape.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L70-L75">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.kill!" href="#Persephone.kill!"><code>Persephone.kill!</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">kill(animal, model, probability=1.0, cause="")</code></pre><p>Kill this animal, optionally with a given percentage probability. Returns true if the animal dies, false if not.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L99-L104">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.nearby_animals-Tuple{Animal, Agents.AgentBasedModel, Int64}" href="#Persephone.nearby_animals-Tuple{Animal, Agents.AgentBasedModel, Int64}"><code>Persephone.nearby_animals</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">nearby_animals(animal, model, radius)</code></pre><p>Return an iterator over all animals in the given radius around this animal, excluding itself.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L126-L130">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.nearby_animals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Int64}" href="#Persephone.nearby_animals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Int64}"><code>Persephone.nearby_animals</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">nearby_animals(pos, model, radius)</code></pre><p>Return an iterator over all animals in the given radius around this position.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L115-L119">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.reproduce!" href="#Persephone.reproduce!"><code>Persephone.reproduce!</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">reproduce!(animal, model, n=1)</code></pre><p>Produce one or more offspring for the given animal at its current location.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L84-L88">source</a></section></article><h2 id="ecologicaldata.jl"><a class="docs-heading-anchor" href="#ecologicaldata.jl">ecologicaldata.jl</a><a id="ecologicaldata.jl-1"></a><a class="docs-heading-anchor-permalink" href="#ecologicaldata.jl" title="Permalink"></a></h2><p>This file contains a set of life-history related utility functions needed by species.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.initecologicaldata-Tuple{Agents.AgentBasedModel}" href="#Persephone.initecologicaldata-Tuple{Agents.AgentBasedModel}"><code>Persephone.initecologicaldata</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initecologicaldata()</code></pre><p>Create output files for each data group collected by the nature model.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/ecologicaldata.jl#L9-L13">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.saveindividualdata-Tuple{Agents.AgentBasedModel}" href="#Persephone.saveindividualdata-Tuple{Agents.AgentBasedModel}"><code>Persephone.saveindividualdata</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">saveindividualdata(model)</code></pre><p>Return a comma-separated set of lines (to be printed to <code>individuals.csv</code>), listing all properties of all animal individuals in the model. May be called never, daily, monthly, yearly, or at the end of a simulation, depending on the parameter <code>nature.indoutfreq</code>. WARNING: Produces very big files!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/ecologicaldata.jl#L42-L49">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.savepopulationdata-Tuple{Agents.AgentBasedModel}" href="#Persephone.savepopulationdata-Tuple{Agents.AgentBasedModel}"><code>Persephone.savepopulationdata</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">savepopulationdata(model)</code></pre><p>Return a comma-separated set of lines (to be printed to <code>populations.csv</code>), giving the current date and population size for each animal species. May be called never, daily, monthly, yearly, or at the end of a simulation, depending on the parameter <code>nature.popoutfreq</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/ecologicaldata.jl#L21-L28">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="io.html">« Input, Output, and Settings</a><a class="docs-footer-nextpage" href="species.html">Species »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end</code></pre><p>The definition body (enclosed in the begin/end block) has two sections. First comes a call to <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a>, and optionally a list of species-specific parameters, which are assigned just like normal variables. Second come one or more phase definitions, that describe the behaviour of the species during various parts of its life cycle. (See the documentation to <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a> and <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> for details).</p><p>Code in a species definition block can access the rest of the model using the <code>model</code> variable (an object of type <code>AgentBasedModel</code>).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L94-L123">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.@trait-Tuple{Any}" href="#Persephone.@trait-Tuple{Any}"><code>Persephone.@trait</code></a> — <span class="docstring-category">Macro</span></header><section><div><pre><code class="language-julia hljs">@trait(traitname)</code></pre><p>A utility macro to quickly access an animal's trait value. This can only be used nested within <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/nature.jl#L202-L207">source</a></section></article><h2 id="populations.jl"><a class="docs-heading-anchor" href="#populations.jl">populations.jl</a><a id="populations.jl-1"></a><a class="docs-heading-anchor-permalink" href="#populations.jl" title="Permalink"></a></h2><p>This file contains a set of utility functions for species, including initialisation, reproduction, and mortality.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.countanimals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.countanimals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.countanimals</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">countanimals(pos, model; species="", radius=0)</code></pre><p>Count the number of animals in this location (optionally supplying a species name and radius).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L137-L141">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initpopulation-Tuple{Function}" href="#Persephone.initpopulation-Tuple{Function}"><code>Persephone.initpopulation</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initpopulation(habitatdescriptor; popsize=-1, pairs=false, asexual=false)</code></pre><p>Creates a function that initialises individuals at random locations across the landscape. This can be used to create the <code>initialise!</code> variable in a species definition block.</p><ul><li><p><code>habitatdescriptor</code> is a function that determines whether a given location is suitable or not (create this using <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>).</p></li><li><p><code>phase</code> determines which life phase individuals will be assigned to. If this is <code>nothing</code>, the species' default post-natal life stage will be used (although note that this is probably not what you want).</p></li><li><p><code>popsize</code> determines the number of individuals that will be created. If this is zero or negative, one individual will be created in every suitable location in the landscape. If <code>popsize</code> is greater than the number of suitable locations, multiple individuals will be created in one place. (Maximum population density can be set in the habitat descriptor using the <a href="nature.html#Persephone.@countanimals-Tuple"><code>@countanimals</code></a> macro.)</p></li><li><p>If <code>pairs</code> is true, a male and a female individual will be created in each selected location, otherwise, only one individual will be created at a time.</p></li><li><p>If <code>asexual</code> is true, all created individuals are assigned the sex <code>hermaphrodite</code>, otherwise, they are randomly assigned male of female. (If <code>pairs</code> is true, <code>asexual</code> is ignored.)</p></li></ul></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L7-L32">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initrandompopulation-Tuple{Int64}" href="#Persephone.initrandompopulation-Tuple{Int64}"><code>Persephone.initrandompopulation</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initrandompopulation(popsize; kwargs...)</code></pre><p>A simplified version of <a href="nature.html#Persephone.initpopulation-Tuple{Function}"><code>initpopulation</code></a>. Creates a function that initialises <code>popsize</code> individuals, spread at random across the landscape.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L70-L75">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.kill!" href="#Persephone.kill!"><code>Persephone.kill!</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">kill(animal, model, probability=1.0, cause="")</code></pre><p>Kill this animal, optionally with a given percentage probability. Returns true if the animal dies, false if not.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L99-L104">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.nearby_animals-Tuple{Animal, Agents.AgentBasedModel, Int64}" href="#Persephone.nearby_animals-Tuple{Animal, Agents.AgentBasedModel, Int64}"><code>Persephone.nearby_animals</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">nearby_animals(animal, model, radius)</code></pre><p>Return an iterator over all animals in the given radius around this animal, excluding itself.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L126-L130">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.nearby_animals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Int64}" href="#Persephone.nearby_animals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Int64}"><code>Persephone.nearby_animals</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">nearby_animals(pos, model, radius)</code></pre><p>Return an iterator over all animals in the given radius around this position.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L115-L119">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.reproduce!" href="#Persephone.reproduce!"><code>Persephone.reproduce!</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">reproduce!(animal, model, n=1)</code></pre><p>Produce one or more offspring for the given animal at its current location.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/populations.jl#L84-L88">source</a></section></article><h2 id="ecologicaldata.jl"><a class="docs-heading-anchor" href="#ecologicaldata.jl">ecologicaldata.jl</a><a id="ecologicaldata.jl-1"></a><a class="docs-heading-anchor-permalink" href="#ecologicaldata.jl" title="Permalink"></a></h2><p>This file contains a set of life-history related utility functions needed by species.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.initecologicaldata-Tuple{Agents.AgentBasedModel}" href="#Persephone.initecologicaldata-Tuple{Agents.AgentBasedModel}"><code>Persephone.initecologicaldata</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initecologicaldata()</code></pre><p>Create output files for each data group collected by the nature model.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/ecologicaldata.jl#L9-L13">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.saveindividualdata-Tuple{Agents.AgentBasedModel}" href="#Persephone.saveindividualdata-Tuple{Agents.AgentBasedModel}"><code>Persephone.saveindividualdata</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">saveindividualdata(model)</code></pre><p>Return a comma-separated set of lines (to be printed to <code>individuals.csv</code>), listing all properties of all animal individuals in the model. May be called never, daily, monthly, yearly, or at the end of a simulation, depending on the parameter <code>nature.indoutfreq</code>. WARNING: Produces very big files!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/ecologicaldata.jl#L42-L49">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.savepopulationdata-Tuple{Agents.AgentBasedModel}" href="#Persephone.savepopulationdata-Tuple{Agents.AgentBasedModel}"><code>Persephone.savepopulationdata</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">savepopulationdata(model)</code></pre><p>Return a comma-separated set of lines (to be printed to <code>populations.csv</code>), giving the current date and population size for each animal species. May be called never, daily, monthly, yearly, or at the end of a simulation, depending on the parameter <code>nature.popoutfreq</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/nature/ecologicaldata.jl#L21-L28">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="io.html">« Input, Output, and Settings</a><a class="docs-footer-nextpage" href="species.html">Species »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/odd.html b/docs/build/odd.html index 0b55133..a92c724 100644 --- a/docs/build/odd.html +++ b/docs/build/odd.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Overview, Design, Details (ODD) · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li class="is-active"><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="odd.html">Overview, Design, Details (ODD)</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="odd.html">Overview, Design, Details (ODD)</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/odd.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Overview,-Design,-Details-(ODD)"><a class="docs-heading-anchor" href="#Overview,-Design,-Details-(ODD)">Overview, Design, Details (ODD)</a><a id="Overview,-Design,-Details-(ODD)-1"></a><a class="docs-heading-anchor-permalink" href="#Overview,-Design,-Details-(ODD)" title="Permalink"></a></h1><p><em>TODO</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="index.html">« Introduction</a><a class="docs-footer-nextpage" href="developing.html">Developing Persephone »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Overview, Design, Details (ODD) · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li class="is-active"><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="odd.html">Overview, Design, Details (ODD)</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="odd.html">Overview, Design, Details (ODD)</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/odd.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Overview,-Design,-Details-(ODD)"><a class="docs-heading-anchor" href="#Overview,-Design,-Details-(ODD)">Overview, Design, Details (ODD)</a><a id="Overview,-Design,-Details-(ODD)-1"></a><a class="docs-heading-anchor-permalink" href="#Overview,-Design,-Details-(ODD)" title="Permalink"></a></h1><p><em>TODO</em></p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="index.html">« Introduction</a><a class="docs-footer-nextpage" href="developing.html">Developing Persephone »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/search.html b/docs/build/search.html index 0deaa43..323738d 100644 --- a/docs/build/search.html +++ b/docs/build/search.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Search · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="search.html">Search</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="search.html">Search</a></li></ul></nav><div class="docs-right"><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article><p id="documenter-search-info">Loading search...</p><ul id="documenter-search-results"></ul></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body><script src="search_index.js"></script><script src="assets/search.js"></script></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Search · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href="search.html">Search</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="search.html">Search</a></li></ul></nav><div class="docs-right"><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article><p id="documenter-search-info">Loading search...</p><ul id="documenter-search-results"></ul></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body><script src="search_index.js"></script><script src="assets/search.js"></script></html> diff --git a/docs/build/search_index.js b/docs/build/search_index.js index 5cb26da..e3558d0 100644 --- a/docs/build/search_index.js +++ b/docs/build/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"nature.html#Nature","page":"Nature","title":"Nature","text":"","category":"section"},{"location":"nature.html#nature.jl","page":"Nature","title":"nature.jl","text":"","category":"section"},{"location":"nature.html","page":"Nature","title":"Nature","text":"This file is responsible for managing the animal modules.","category":"page"},{"location":"nature.html","page":"Nature","title":"Nature","text":"Modules = [Persephone]\nPages = [\"nature/nature.jl\"]","category":"page"},{"location":"nature.html#Persephone.Animal","page":"Nature","title":"Persephone.Animal","text":"Animal\n\nThis is the generic agent type for all animals. Species are differentiated by trait dictionaries passed by them during initialisation. (Note that each trait variable can still be accessed as if it were a normal field name, i.e. the trait phase can be accessed and modified with animal.phase.)\n\n\n\n\n\n","category":"type"},{"location":"nature.html#Persephone.animalid-Tuple{Animal}","page":"Nature","title":"Persephone.animalid","text":"animalid(animal)\n\nA small utility function to return a string with the species name and ID of an animal.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.initnature!-Tuple{Agents.AgentBasedModel}","page":"Nature","title":"Persephone.initnature!","text":"initnature!(model)\n\nInitialise the model with all simulated animal populations.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.stepagent!-Tuple{Animal, Agents.AgentBasedModel}","page":"Nature","title":"Persephone.stepagent!","text":"stepagent!(animal, model)\n\nUpdate an animal by one day, executing it's currently active phase function.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.@countanimals-Tuple","page":"Nature","title":"Persephone.@countanimals","text":"@countanimals(species=\"\", radius=0)\n\nCount the number of animals of the given species in this location. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@cropheight-Tuple{}","page":"Nature","title":"Persephone.@cropheight","text":"@cropheight\n\nReturn the height of the crop at this position, or 0 if there is no crop here. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@croptype-Tuple{}","page":"Nature","title":"Persephone.@croptype","text":"@croptype\n\nReturn the local croptype, or nothing if there is no crop here. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@distanceto-Tuple{Any}","page":"Nature","title":"Persephone.@distanceto","text":"@distanceto(habitat)\n\nCalculate the distance to the closest habitat of the specified type or descriptor. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@distancetoedge-Tuple{}","page":"Nature","title":"Persephone.@distancetoedge","text":"@distancetoedge\n\nCalculate the distance to the closest neighbouring habitat. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@habitat-Tuple{Any}","page":"Nature","title":"Persephone.@habitat","text":"@habitat\n\nSpecify habitat suitability for spatial ecological processes.\n\nThis macro works by creating an anonymous function that takes in a model object and a position, and returns true or false depending on the conditions specified in the macro body.\n\nSeveral utility macros can be used within the body of @habitat as a short-hand for common expressions: @landcover, @croptype, @cropheight, @distanceto, @distancetoedge, @countanimals. The variables model and pos can be used for checks that don't have a macro available.\n\nTwo example uses of @habitat might look like this:\n\nmovementhabitat = @habitat(@landcover() in (grass agriculture soil))\n\nnestinghabitat = @habitat((@landcover() == grass || \n (@landcover() == agriculture && @croptype() != maize &&\n @cropheight() < 10)) &&\n @distanceto(forest) > 20)\n\nFor more complex habitat suitability checks, the use of this macro can be circumvented by directly creating an equivalent function.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}","page":"Nature","title":"Persephone.@initialise","text":"@initialise(habitatdescriptor; kwargs...)\n\nCall this macro within the body of @species. It passes the given habitat descriptor function and keyword arguments on to initpopulation when setting up the simulation.\n\nNote: if this macro is not used, the variable initialise! must be set manually in the species definition.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@kill-Tuple","page":"Nature","title":"Persephone.@kill","text":"@kill\n\nKill this animal (and immediately abort its current update). This is a thin wrapper around kill!, and passes on any arguments. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@landcover-Tuple{}","page":"Nature","title":"Persephone.@landcover","text":"@landcover\n\nReturns the local landcover. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@neighbours-Tuple{Any}","page":"Nature","title":"Persephone.@neighbours","text":"@neighbours(radius)\n\nReturn an iterator over all animals in the given radius around this animal, excluding itself. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@phase-Tuple{Any, Any}","page":"Nature","title":"Persephone.@phase","text":"@phase(name, body)\n\nThis macro is designed to be used within a species definition block (i.e. within the body of a call to @species).\n\nThe idea behind this is that species show very different behaviour during different phases of their lives. Therefore, @phase can be used define the behaviour for one such phase, and the conditions under which the animal transitions to another phase.\n\n@phase works by creating a function that will be called by the model if the animal is in the relevant phase. When it is called, it has access to the following variables:\n\nanimal a reference to the animal itself. This provides access to animal.age, animal.sex, and animal.<trait> (where <trait> is a variable that was defined in the top part of the species definition body).\npos gives the animal's current position as a coordinate tuple.\nmodel a reference to the model world (an object of type AgentBasedModel). This allows access to model.date (the current simulation date) and model.landscape (a two-dimensional array of pixels containing geographic information).\n\nSeveral utility macros can be used within the body of @phase as a short-hand for common expressions: @trait, @setphase, @respond, @kill, @reproduce, @neighbours, @rand, @shuffle!.\n\nNote that the first phase that is defined in a species definition block will be the phase that animals are assigned at birth, unless the variable phase is explicitly defined by the user in the species definition block.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@reproduce-Tuple","page":"Nature","title":"Persephone.@reproduce","text":"@reproduce\n\nLet this animal reproduce. This is a thin wrapper around reproduce!, and passes on any arguments. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@respond-Tuple{Any, Any}","page":"Nature","title":"Persephone.@respond","text":"@respond(eventname, body)\n\nDefine how an animal responds to a landscape event that affects its current position. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@setphase-Tuple{Any}","page":"Nature","title":"Persephone.@setphase","text":"@setphase(newphase)\n\nSwitch this animal over to a different phase. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@species-Tuple{Any, Any}","page":"Nature","title":"Persephone.@species","text":"@species(name, body)\n\nA macro used to create new species definitions for the nature model. This is effectively a simple domain-specific language, establishing a custom syntax to describe species' biology:\n\n@species name begin\n\n @initialise(@habitat(...))\n speciesvar1 = 3.14\n ...\n\n @phase phase1 begin\n ...\n end\nend\n\nThe definition body (enclosed in the begin/end block) has two sections. First comes a call to @initialise, and optionally a list of species-specific parameters, which are assigned just like normal variables. Second come one or more phase definitions, that describe the behaviour of the species during various parts of its life cycle. (See the documentation to @initialise and @phase for details).\n\nCode in a species definition block can access the rest of the model using the model variable (an object of type AgentBasedModel).\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@trait-Tuple{Any}","page":"Nature","title":"Persephone.@trait","text":"@trait(traitname)\n\nA utility macro to quickly access an animal's trait value. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#populations.jl","page":"Nature","title":"populations.jl","text":"","category":"section"},{"location":"nature.html","page":"Nature","title":"Nature","text":"This file contains a set of utility functions for species, including initialisation, reproduction, and mortality.","category":"page"},{"location":"nature.html","page":"Nature","title":"Nature","text":"Modules = [Persephone]\nPages = [\"nature/populations.jl\"]","category":"page"},{"location":"nature.html#Persephone.countanimals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Nature","title":"Persephone.countanimals","text":"countanimals(pos, model; species=\"\", radius=0)\n\nCount the number of animals in this location (optionally supplying a species name and radius).\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.initpopulation-Tuple{Function}","page":"Nature","title":"Persephone.initpopulation","text":"initpopulation(habitatdescriptor; popsize=-1, pairs=false, asexual=false)\n\nCreates a function that initialises individuals at random locations across the landscape. This can be used to create the initialise! variable in a species definition block.\n\nhabitatdescriptor is a function that determines whether a given location is suitable or not (create this using @habitat).\nphase determines which life phase individuals will be assigned to. If this is nothing, the species' default post-natal life stage will be used (although note that this is probably not what you want).\npopsize determines the number of individuals that will be created. If this is zero or negative, one individual will be created in every suitable location in the landscape. If popsize is greater than the number of suitable locations, multiple individuals will be created in one place. (Maximum population density can be set in the habitat descriptor using the @countanimals macro.)\nIf pairs is true, a male and a female individual will be created in each selected location, otherwise, only one individual will be created at a time.\nIf asexual is true, all created individuals are assigned the sex hermaphrodite, otherwise, they are randomly assigned male of female. (If pairs is true, asexual is ignored.)\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.initrandompopulation-Tuple{Int64}","page":"Nature","title":"Persephone.initrandompopulation","text":"initrandompopulation(popsize; kwargs...)\n\nA simplified version of initpopulation. Creates a function that initialises popsize individuals, spread at random across the landscape.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.kill!","page":"Nature","title":"Persephone.kill!","text":"kill(animal, model, probability=1.0, cause=\"\")\n\nKill this animal, optionally with a given percentage probability. Returns true if the animal dies, false if not.\n\n\n\n\n\n","category":"function"},{"location":"nature.html#Persephone.nearby_animals-Tuple{Animal, Agents.AgentBasedModel, Int64}","page":"Nature","title":"Persephone.nearby_animals","text":"nearby_animals(animal, model, radius)\n\nReturn an iterator over all animals in the given radius around this animal, excluding itself.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.nearby_animals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Int64}","page":"Nature","title":"Persephone.nearby_animals","text":"nearby_animals(pos, model, radius)\n\nReturn an iterator over all animals in the given radius around this position.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.reproduce!","page":"Nature","title":"Persephone.reproduce!","text":"reproduce!(animal, model, n=1)\n\nProduce one or more offspring for the given animal at its current location.\n\n\n\n\n\n","category":"function"},{"location":"nature.html#ecologicaldata.jl","page":"Nature","title":"ecologicaldata.jl","text":"","category":"section"},{"location":"nature.html","page":"Nature","title":"Nature","text":"This file contains a set of life-history related utility functions needed by species.","category":"page"},{"location":"nature.html","page":"Nature","title":"Nature","text":"Modules = [Persephone]\nPages = [\"nature/ecologicaldata.jl\"]","category":"page"},{"location":"nature.html#Persephone.initecologicaldata-Tuple{Agents.AgentBasedModel}","page":"Nature","title":"Persephone.initecologicaldata","text":"initecologicaldata()\n\nCreate output files for each data group collected by the nature model.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.saveindividualdata-Tuple{Agents.AgentBasedModel}","page":"Nature","title":"Persephone.saveindividualdata","text":"saveindividualdata(model)\n\nReturn a comma-separated set of lines (to be printed to individuals.csv), listing all properties of all animal individuals in the model. May be called never, daily, monthly, yearly, or at the end of a simulation, depending on the parameter nature.indoutfreq. WARNING: Produces very big files!\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.savepopulationdata-Tuple{Agents.AgentBasedModel}","page":"Nature","title":"Persephone.savepopulationdata","text":"savepopulationdata(model)\n\nReturn a comma-separated set of lines (to be printed to populations.csv), giving the current date and population size for each animal species. May be called never, daily, monthly, yearly, or at the end of a simulation, depending on the parameter nature.popoutfreq.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Input,-Output,-and-Settings","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"","category":"section"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"These functions are responsible for reading in all model configurations (passed by config file or commandline), administrating them during a run, and printing any output.","category":"page"},{"location":"io.html#parameters.toml","page":"Input, Output, and Settings","title":"parameters.toml","text":"","category":"section"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"This is the default configuration file for Persephone, containing all model parameters. The syntax is described here: https://toml.io/en/","category":"page"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"DO NOT MODIFY THIS FILE FOR SIMULATION EXPERIMENTS! Instead, copy it to another directory, modify the copy, and then pass it to the model using the --config parameter.","category":"page"},{"location":"io.html#input.jl","page":"Input, Output, and Settings","title":"input.jl","text":"","category":"section"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"Modules = [Persephone]\nPages = [\"core/input.jl\"]","category":"page"},{"location":"io.html#Persephone.PARAMFILE","page":"Input, Output, and Settings","title":"Persephone.PARAMFILE","text":"The file that stores all default parameters: src/parameters.toml\n\n\n\n\n\n","category":"constant"},{"location":"io.html#Persephone.flattenTOML-Tuple{Any}","page":"Input, Output, and Settings","title":"Persephone.flattenTOML","text":"flattenTOML(dict)\n\nAn internal utility function to convert the two-dimensional dict returned by TOML.parsefile() into a one-dimensional dict, so that instead of writing settings[\"domain\"][\"param\"] one can use settings[\"domain.param\"]. Can be reversed with prepareTOML.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.getsettings","page":"Input, Output, and Settings","title":"Persephone.getsettings","text":"getsettings(configfile, seed=nothing)\n\nCombines all configuration options to produce a single settings dict. Precedence: commandline parameters - user config file - default values\n\n\n\n\n\n","category":"function"},{"location":"io.html#Persephone.parsecommandline-Tuple{}","page":"Input, Output, and Settings","title":"Persephone.parsecommandline","text":"parsecommandline()\n\nCertain software parameters can be set via the commandline.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.preprocessparameters-Tuple{Dict{String, Any}, String}","page":"Input, Output, and Settings","title":"Persephone.preprocessparameters","text":"preprocessparameters(settings)\n\nTake the raw input parameters and process them (convert types, perform checks, etc.). This is a helper function for getsettings.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.@param-Tuple{Any}","page":"Input, Output, and Settings","title":"Persephone.@param","text":"@param(domainparam)\n\nReturn a configuration parameter from the global settings. The argument should be in the form <domain>.<parameter>, for example @param(core.outdir). Possible values for <domain> are core, nature, farm, or crop. For a full list of parameters, see src/parameters.toml.\n\nNote: this macro only works in a context where the model object is available!\n\n\n\n\n\n","category":"macro"},{"location":"io.html#Persephone.@rand-Tuple","page":"Input, Output, and Settings","title":"Persephone.@rand","text":"@rand(args...)\n\nReturn a random number or element from the sample, using the model RNG. This is a utility wrapper that can only be used a context where the model object is available.\n\n\n\n\n\n","category":"macro"},{"location":"io.html#Persephone.@shuffle!-Tuple{Any}","page":"Input, Output, and Settings","title":"Persephone.@shuffle!","text":"@shuffle!(collection)\n\nShuffle the given collection in place, using the model RNG. This is a utility wrapper that can only be used a context where the model object is available.\n\n\n\n\n\n","category":"macro"},{"location":"io.html#output.jl","page":"Input, Output, and Settings","title":"output.jl","text":"","category":"section"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"Modules = [Persephone]\nPages = [\"core/output.jl\"]","category":"page"},{"location":"io.html#Persephone.DataOutput","page":"Input, Output, and Settings","title":"Persephone.DataOutput","text":"DataOutput\n\nA struct for organising model output. This is designed for text-based data output that is updated more or less regularly (e.g. population data in csv files). Submodels can register their own output functions using newdataoutput!.\n\nStruct fields: - filename: the name of the file to be created in the user-specified output directory - header: a string to be written to the start of the file as it is initialised - outputfunction: a function that takes a model object and returns a string to write to file - frequency: how often to call the output function (daily/monthly/yearly/end/never)\n\n\n\n\n\n","category":"type"},{"location":"io.html#Persephone.createdatadir-Tuple{String, Union{Bool, String}}","page":"Input, Output, and Settings","title":"Persephone.createdatadir","text":"createdatadir(outdir, overwrite)\n\nCreates the output directory, dealing with possible conflicts.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.modellogger-Tuple{String, String}","page":"Input, Output, and Settings","title":"Persephone.modellogger","text":"modellogger(loglevel, outdir)\n\nCreate a logger object that writes output both to screen and to a logfile. This object is stored as model.logger and can then be used with with_logger(). Note: requires createdatadir to be run first.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.newdataoutput!-Tuple{Agents.AgentBasedModel, String, String, Function, String}","page":"Input, Output, and Settings","title":"Persephone.newdataoutput!","text":"newdataoutput!(model, filename, header, outputfunction, frequency)\n\nCreate and register a new data output. This function must be called by all submodels that want to have their output functions called regularly.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.outputdata-Tuple{Agents.AgentBasedModel}","page":"Input, Output, and Settings","title":"Persephone.outputdata","text":"outputdata(model)\n\nCycle through all registered data outputs and activate them according to their configured frequency.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.prepareTOML-Tuple{Any}","page":"Input, Output, and Settings","title":"Persephone.prepareTOML","text":"prepareTOML(dict)\n\nAn internal utility function to re-convert the one-dimensional dict created by flattenTOML into the two-dimensional dict needed by TOML.print, and convert any data types into TOML-compatible types where necessary.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.saveinputfiles-Tuple{Agents.AgentBasedModel}","page":"Input, Output, and Settings","title":"Persephone.saveinputfiles","text":"saveinputfiles(model)\n\nCopy all input files into the output directory, including the actual parameter settings used. This allows replicating a run in future.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.withtestlogger-Tuple{Agents.AgentBasedModel}","page":"Input, Output, and Settings","title":"Persephone.withtestlogger","text":"withtestlogger(model)\n\nReplace the model logger with the currently active logger. This is intended to be used in the testsuite to circumvent a Julia issue, where @test_logs doesn't work with local loggers.\n\n\n\n\n\n","category":"method"},{"location":"architecture.html#Source-code-architecture","page":"Source code architecture","title":"Source code architecture","text":"","category":"section"},{"location":"architecture.html#Model-components","page":"Source code architecture","title":"Model components","text":"","category":"section"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"Persephone is divided into four components, three of which are semi-independent submodels:","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"core: This is the foundation of the model software, which sets up and executes simulation runs. It also reads in the configuration file and landscape maps, and provides data output functionality.\nnature: This is an individual-based model of species in agricultural landscapes. It defines the Animal agent type, and a set of macros that can be used to rapidly create new species. It also includes ecological process functions that are useful for all species.\nfarm: This is an agent-based model of farmer decision making. It is not yet implemented, but will provide the Farmer agent type.\ncrop: This is a mathematical growth model for various crops. It is not yet implemented, but already provides the agent type FarmPlot, representing one field and its associated extent and crop type.","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"Conceptually, core provides functionality that is needed by all of the submodels. Decisions made by Farmers affect the FarmPlots they own, and (directly or indirectly) the Animals in the model landscape.","category":"page"},{"location":"architecture.html#Important-implementation-details","page":"Source code architecture","title":"Important implementation details","text":"","category":"section"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"The model object: A cursory reading of the source code will quickly show that most functions take an AgentBaseModel object as one of their arguments. This is the key data structure of Agents.jl, and holds all state that is in any way relevant to a simulation run. (Persephone has a strict \"no global state\" policy to avoid state-dependent bugs and allow parallelisation.) The model object gives access to all agent instances (via model[id], where id is the unique identifier of this agent). It also stores the configuration (model.settings), the landscape (model.landscape, a matrix of Pixel objects that store the local land cover, amongst other things), and the current simulation date (model.date).\nModel configuration/the @param macro: The model is configured via a TOML file, the default version of which is at src/parameters.toml. An individual run can be configured using a user-defined configuration file, commandline arguments, or function calls (when Persephone is used as a package rather than an application). During a model run, the @param(parameter) macro can be used as a short-hand for model.settings[\"parameter\"]. Note that parameter names are prepended with the name of the component they are associated with. For example, the outdir parameter belongs to the [core] section of the TOML file, and must therefore be referenced as @param(core.outdir). (See src/core/input.jl for details.)\nOutput data: Persephone can output model data into text files with a specified frequency (daily, monthly, yearly, or at the simulation end). Submodels can use newdataoutput! to plug into this system. For an example of how to use this, see src/nature/ecologicaldata.jl. (See src/core/output.jl for details.)\nFarm events: The FarmEvent struct is used to communicate farming-related events between submodels. An event can be triggered with createevent!() and affects all pixels within a FarmPlot. (See src/core/landscape.jl for details.)\nRandom numbers and logging: By default in Julia, the random number generator (RNG) and the system logger are two globally accessible variables. As Persephone needs to avoid all global data (as this would interfere with parallel runs), the model object stores a local logger and a local RNG. Whenever you need to use a random number, you must use the model.rng! The easiest way to do this is with the @rand and @shuffle! macros. The local logger generally does not change the way the model uses log statements, this is only important in some functions in src/core/simulation.jl.\nWorking with agents: For more information about working with agent objects, see the Agents.jl API.","category":"page"},{"location":"species.html#Species","page":"Species","title":"Species","text":"","category":"section"},{"location":"species.html","page":"Species","title":"Species","text":"The ecological submodel in Persephone simulates a range of species in agricultural landscapes.","category":"page"},{"location":"species.html#Skylark","page":"Species","title":"Skylark","text":"","category":"section"},{"location":"species.html","page":"Species","title":"Species","text":"Modules = [Persephone]\nPages = [\"nature/species/skylark.jl\"]","category":"page"},{"location":"species-dsl.html#Defining-new-species","page":"Defining new species","title":"Defining new species","text":"","category":"section"},{"location":"species-dsl.html#The-Persephone-species-DSL","page":"Defining new species","title":"The Persephone species DSL","text":"","category":"section"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"In order to make implementing new species as easy as possible, Persephone includes a domain-specific language (DSL) built from a collection of macros and functions.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Here is an example of what this looks like, using a hypothetical mermaid species:","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"@species Mermaid begin\n ageofmaturity = 2\n pesticidemortality = 1.0\n @initialise(@habitat(@landcover() == water), pairs=true)\n\t\n @phase life begin\n @debug \"$(animalid(animal)) is swimming happily in its pond.\"\n @respond pesticide @kill(@trait(pesticidemortality), \"poisoning\")\n @respond harvest @setphase(drought)\n @debug \"Animal: $animal\"\n if @trait(sex) == female && @countanimals() < 3 &&\n @trait(age) >= @trait(ageofmaturity) && @landcover() == water\n @reproduce()\n end\n end\n\t\n @phase drought begin\n n = sum(1 for a in @neighbours(0))\n @debug \"$(animalid(animal)) is experiencing drought with $n neighbour(s).\"\n @respond sowing @setphase(life)\n end\nend","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"The two most important macros are @species and @phase, followed by @initialise, @trait, @respond, and @habitat. Other macros provide convenience wrappers for common functions. (See src/nature/nature.jl for details.)","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"The top-level macro is @species. This takes two arguments: a species name and a definition block (enclosed in begin and end tags). At the start of the definition block, species-specific variables can be defined that should be available throughout a species' lifetime. Code in this section has access to the model object and can thus reference the current model state. In this section, the user also has to call the @initialise macro. This wraps the initpopulation function, and takes a habitat descriptor (see @habitat below) and several options to specify how the species' population should be distributed in the landscape during model initialisation.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Following this section, each species must define one or more @phase blocks. The concept behind this is that species show different behaviours at different phases of their lifecycle. Each @phase block defines the behaviour in one of these phases. (Technically, it defines a function that will be called daily, so long as the species' phase variable is set to the name of this phase.) Code in this section has access to the model object as well as an animal object, which is the currently active animal agent. Properties of the animal agent, regardless of whether they were defined by the user or by Persephone, can be accessed using the @trait macro. Within a phase block, @respond can be used to define the species' response to a FarmEvent that affects the species' current location, while a variety of other macros provide wrappers to ecological process functions from src/nature/populations.jl.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Another important macro is @habitat. This defines a \"habitat descriptor\", i.e. a predicate function that tests whether or not a given landscape pixel is suitable for a specified purpose. Such habitat descriptors are used as arguments to various functions, for example for population initialisation or movement. The argument to @habitat consists of a logical expression, which has access to the animal's current position (the pos tuple variable) and the model. Various macros are available to easily reference information about the current location, such as @landcover or @distancetoedge.","category":"page"},{"location":"species-dsl.html#Implementation-details","page":"Defining new species","title":"Implementation details","text":"","category":"section"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Due to a known performance problem with multi-agent models, the underlying implementation of species is rather complicated (see src/nature/nature.jl for details.)","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Rather than creating a new type/struct for each species, all Animal agents have the same type. Instead, they are differentiated by a traits dict, which stores both species-specific parameters and run-time variables. Note that due to a redefinition of the getproperty()/setproperty!() methods, variables from the trait dict can be accessed and modified just like normal struct fields (i.e. although phase is defined in the dict, not the struct, animal.phase = \"newphase\" works just fine - one does not have to use animal.traits[\"phase\"] = \"newphase\".)","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Under the hood, the @species macro generates a function (with the name of the species), which in turn creates the trait dict when called. Thus, adding a new animal agent to the model involves instantiating an Animal object, then calling the relevant species function and attaching the returned dict to the agent object.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Similarly, the @phase macro too works by defining a new function, which is stored in the species' trait dict. These functions take an animal object and the model object as input, and define what the species does during its daily update.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Once again, @habitat creates a function that takes model and pos as input and returns a boolean response. Functions that require a habitat descriptor thus take in this (anonymous) function and call it internally.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Finally, the @initialise macro is a wrapper around initpopulation, which (yet again) creates a function that specifies how a species' population is to be initialised at the beginning of a simulation run. This function is stored in the species trait dict and accessed during model setup.","category":"page"},{"location":"developing.html#Developing-Persephone","page":"Developing Persephone","title":"Developing Persephone","text":"","category":"section"},{"location":"developing.html#Workflow","page":"Developing Persephone","title":"Workflow","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"Pull the current development version from the master branch on Gitlab: https://git.idiv.de/xo30xoqa/persephone.\nIf you are working on a new feature, create a new branch to avoid breaking the master branch. (The master branch should always be in a runnable and (as far as possible) error-free state.)\nImplement your changes.\nRun example.sh to make sure the model executes without crashing. Also run the test suite (cd test; julia runtests.jl).\nCommit your work frequently, and try to keep each commit small. Don't forget to add relevant tests to the test suite.\nOnce your satisfied with your work, do another pull/merge from the master branch in case somebody else changed the branch in the meantime. Then merge your work into master and push to the Gitlab server.\nRepeat :-)","category":"page"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"The Gitlab issue tracker can be used to create, discuss, and assign tasks, as well as to monitor progress towards milestones/releases. Once we have a first release, we will start using semantic versioning.","category":"page"},{"location":"developing.html#Agents.jl","page":"Developing Persephone","title":"Agents.jl","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"Our model uses Agents.jl as a framework. Their repository can be used to inspect the source code or submit bug reports (the authors are quick to respond). Questions can be asked at the Julia Discourse forum.","category":"page"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"Tutorial on collaborating on Julia packages: https://www.matecdev.com/posts/julia-package-collaboration.html.","category":"page"},{"location":"developing.html#Julia-editors","page":"Developing Persephone","title":"Julia editors","text":"","category":"section"},{"location":"developing.html#Emacs","page":"Developing Persephone","title":"Emacs","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"There are a couple of addons that make working with Julia much nicer in Emacs:","category":"page"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"julia-mode gives syntax highlighting. Install with M-x package-install julia-mode.\njulia-snail provides IDE-like features, especially a fully-functional REPL and the ability to evaluate code straight from inside a buffer. Note that the installation can be somewhat tricky. You first need to manually install all the dependencies of its dependency vterm, then install vterm itself with M-x package-install vterm, before you can do M-x package-install julia-snail. Then add it to your init.el with (require 'julia-snail) and (add-hook 'julia-mode-hook #'julia-snail-mode).\ncompany-mode integrates with Snail to give code completion. Install with M-x package-install company, then add (add-hook 'julia-mode-hook #'company-mode) and (global-set-key (kbd \"C-<tab>\") 'company-complete) to your init.el.\nmagit is a great git interface for Emacs. Install with M-x package-install magit and add (global-set-key (kbd \"C-x g\") 'magit-status) to your init.el.","category":"page"},{"location":"developing.html#VSCode","page":"Developing Persephone","title":"VSCode","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"See here.","category":"page"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"TODO: add more detail.","category":"page"},{"location":"developing.html#Other-useful-stuff","page":"Developing Persephone","title":"Other useful stuff","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"Revise.jl allows one to reload code without restarting the Julia interpreter. Get it with Pkg.add(\"Revise\"), then add using Revise to .julia/config/startup.jl to have it automatically available.\ngit-bug is a commandline bug tracker that integrates directly with git. It can also be used as a local interface to Gitlab issues. To install on Linux, download the binary, copy it to /usr/local/bin/git-bug, and set it as executable with chmod +x /usr/local/bin/git-bug. To set up Gitlab integration, run git bug bridge configure from within the relevant repository.","category":"page"},{"location":"simulation.html#Simulation","page":"Simulation","title":"Simulation","text":"","category":"section"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"The core directory holds source files that are important for all submodels, including scheduling, landscape, and input/output functions.","category":"page"},{"location":"simulation.html#simulation.jl","page":"Simulation","title":"simulation.jl","text":"","category":"section"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"This file includes the basal functions for initialising and running simulations.","category":"page"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"Modules = [Persephone]\nPages = [\"core/simulation.jl\"]","category":"page"},{"location":"simulation.html#Persephone.finalise!-Tuple{Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.finalise!","text":"finalise!(model)\n\nWrap up the simulation. Currently doesn't do anything except print some information.\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.initialise","page":"Simulation","title":"Persephone.initialise","text":"initialise(config=PARAMFILE, seed=nothing)\n\nInitialise the model: read in parameters, create the output data directory, and instantiate the AgentBasedModel object(s). Optionally allows specifying the configuration file and overriding the seed parameter. This returns a single model object, unless the config file contains multiple values for one or more parameters, in which case it creates a full-factorial simulation experiment and returns a vector of model objects.\n\n\n\n\n\n","category":"function"},{"location":"simulation.html#Persephone.initmodel-Tuple{Dict{String, Any}}","page":"Simulation","title":"Persephone.initmodel","text":"initmodel(settings)\n\nInitialise a model object using a ready-made settings dict. This is a helper function for initialise().\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.paramscan-Tuple{Dict{String, Any}, Vector{String}}","page":"Simulation","title":"Persephone.paramscan","text":"paramscan(settings)\n\nCreate a list of settings dicts, covering all possible parameter combinations given by the input settings (i.e. a full-factorial experiment). This is a helper function for initialise().\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.simulate","page":"Simulation","title":"Persephone.simulate","text":"simulate(config=PARAMFILE, seed=nothing)\n\nInitialise one or more model objects and carry out a full simulation experiment, optionally specifying a configuration file and a seed for the RNG.\n\nThis is the default way to run a Persephone simulation.\n\n\n\n\n\n","category":"function"},{"location":"simulation.html#Persephone.simulate!-Tuple{Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.simulate!","text":"simulate!(model)\n\nCarry out a complete simulation run using a pre-initialised model object.\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.stepsimulation!-Tuple{Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.stepsimulation!","text":"stepsimulation!(model)\n\nExecute one update of the model.\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#landscape.jl","page":"Simulation","title":"landscape.jl","text":"","category":"section"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"This file manages the landscape maps that underlie the model.","category":"page"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"Modules = [Persephone]\nPages = [\"core/landscape.jl\"]","category":"page"},{"location":"simulation.html#Persephone.EventType","page":"Simulation","title":"Persephone.EventType","text":"The types of landscape event that can be simulated\n\n\n\n\n\n","category":"type"},{"location":"simulation.html#Persephone.FarmEvent","page":"Simulation","title":"Persephone.FarmEvent","text":"FarmEvent\n\nA data structure to define a landscape event, giving its type, spatial extent, and duration.\n\n\n\n\n\n","category":"type"},{"location":"simulation.html#Persephone.LandCover","page":"Simulation","title":"Persephone.LandCover","text":"The land cover classes encoded in the Mundialis Sentinel data.\n\n\n\n\n\n","category":"type"},{"location":"simulation.html#Persephone.Pixel","page":"Simulation","title":"Persephone.Pixel","text":"Pixel\n\nA pixel is a simple data structure to combine land use and ownership information in a single object. The model landscape consists of a matrix of pixels. (Note: further landscape information may be added here in future.)\n\n\n\n\n\n","category":"type"},{"location":"simulation.html#Persephone.createevent!","page":"Simulation","title":"Persephone.createevent!","text":"createevent!(model, pixels, name, duration=1)\n\nAdd a farm event to the specified pixels (a vector of position tuples) for a given duration.\n\n\n\n\n\n","category":"function"},{"location":"simulation.html#Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Function}","page":"Simulation","title":"Persephone.distanceto","text":"distanceto(pos, model, habitatdescriptor)\n\nCalculate the distance from the given location to the closest location matching the habitat descriptor function. Caution: can be computationally expensive!\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Persephone.LandCover}","page":"Simulation","title":"Persephone.distanceto","text":"distanceto(pos, model, habitattype)\n\nCalculate the distance from the given location to the closest habitat of the specified type. Caution: can be computationally expensive!\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.distancetoedge-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.distancetoedge","text":"distancetoedge(pos, model)\n\nCalculate the distance from the given location to the closest neighbouring habitat. Caution: can be computationally expensive!\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.farmplot-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.farmplot","text":"farmplot(position, model)\n\nReturn the farm plot at this position, or nothing if there is none (utility wrapper).\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.initlandscape-Tuple{String, String}","page":"Simulation","title":"Persephone.initlandscape","text":"initlandscape(landcovermap, farmfieldsmap)\n\nInitialise the model landscape based on the map files specified in the configuration. Returns a matrix of pixels.\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.landcover-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.landcover","text":"landcover(position, model)\n\nReturn the land cover class at this position (utility wrapper).\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.updateevents!-Tuple{Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.updateevents!","text":"updateevents!(model)\n\nCycle through the list of events, removing those that have expired.\n\n\n\n\n\n","category":"method"},{"location":"farm.html#Farm-submodel","page":"Farm submodel","title":"Farm submodel","text":"","category":"section"},{"location":"farm.html","page":"Farm submodel","title":"Farm submodel","text":"Eventually, Persephone will include multiple farm-decision submodels. At the moment, we are only working with a very basic mock-up.","category":"page"},{"location":"farm.html#farm.jl","page":"Farm submodel","title":"farm.jl","text":"","category":"section"},{"location":"farm.html","page":"Farm submodel","title":"Farm submodel","text":"This file is responsible for managing the farm module(s).","category":"page"},{"location":"farm.html","page":"Farm submodel","title":"Farm submodel","text":"Modules = [Persephone]\nPages = [\"farm/farm.jl\"]","category":"page"},{"location":"farm.html#Persephone.Farmer","page":"Farm submodel","title":"Persephone.Farmer","text":"Farmer\n\nThis is the agent type for the farm ABM. (Not yet implemented.)\n\n\n\n\n\n","category":"type"},{"location":"farm.html#Persephone.initfarms!-Tuple{Agents.AgentBasedModel}","page":"Farm submodel","title":"Persephone.initfarms!","text":"initfarms!(model)\n\nInitialise the model with a set of farm agents.\n\n\n\n\n\n","category":"method"},{"location":"farm.html#Persephone.stepagent!-Tuple{Farmer, Agents.AgentBasedModel}","page":"Farm submodel","title":"Persephone.stepagent!","text":"stepagent!(farmer, model)\n\nUpdate a farmer by one day.\n\n\n\n\n\n","category":"method"},{"location":"odd.html#Overview,-Design,-Details-(ODD)","page":"Overview, Design, Details (ODD)","title":"Overview, Design, Details (ODD)","text":"","category":"section"},{"location":"odd.html","page":"Overview, Design, Details (ODD)","title":"Overview, Design, Details (ODD)","text":"TODO","category":"page"},{"location":"gis.html#GIS-data","page":"GIS data","title":"GIS data","text":"","category":"section"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"Persephone currently requires two separate map input files: one for land cover, the other for field geometry. This documents describe how to obtain and process the data needed for each of these.","category":"page"},{"location":"gis.html#Land-cover-maps","page":"GIS data","title":"Land cover maps","text":"","category":"section"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"Land cover maps for Germany at 10m resolution can be obtained from Mundialis. These are generated annually from Sentinel data and comprise the following land cover classes:","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"10: forest\n20: low vegetation\n30: water\n40: built-up\n50: bare soil\n60: agriculture","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"To create a Persephone map input file, you need to crop the national Mundialis map to the extent that you want to simulate (suggestion: approx. 10x10km is a reasonable size).","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"To do so, download the Mundialis map and import it into QGIS. Then create a new vector layer and create a rectangle feature to delimit the extent of your region. Then go to Raster -> Extraction -> Clip Raster by Extent. Select the Mundialis map as the input layer, set the clipping extent by choosing your region vector layer under Calculate from Layer and specify the output file name before clicking Run. This will generate a TIF file that you can pass to Persephone as the landcovermap parameter.","category":"page"},{"location":"gis.html#Field-ID-maps","page":"GIS data","title":"Field ID maps","text":"","category":"section"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"In addition to the land cover data explained above, Persephone also needs information about agricultural field boundaries in order to assign these to the farming agents. Unfortunately, getting this is rather more complicated.","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"In the EU, every country runs a Land Parcel Information System (LPIS) to administer CAP payments. In Germany, this is called InVeKoS and is run by the Länder. For example, you can view and download the InVeKoS data for Thüringen here. This gives you a vector layer which can be loaded into QGIS. However, it needs to be converted to a raster layer and cropped to your region extent before it can be used in Persephone.","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"The first thing to do is to make sure that the vector layer has a numeric (!) field with a unique identifier for each field block (check the attribute table). The Thüringen data has the FBI (\"Feldblockident\") field, but this is a string value and therefore not usable by the rasteriser. So, we set the vector layer to edit mode, open the field calculator, enter the information for a new field (call it \"FID\" and set it to a 32-bit integer), and enter @row_number in the expression field. Then save the layer and close the calculator.","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"Secondly, you need to filter out all non-field/non-grassland plot types. (LPIS also has data on forests and various landscape elements that are not relevant to our use case.) Assuming you're working with the Thüringen InVeKoS data (other data sets may have a different structure), right-click on the layer name in QGIS' layer overview and click on \"Filter...\". Then, enter this expression in the query builder: \"BNK\" = 'AL' OR \"BNK\" = 'GL' and click \"OK\". This will select only field and grassland plots.","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"Next, open the rasteriser (Raster -> Conversion -> Rasterize). Select your FID field as the \"Field to use for a burn-in value\", and your land cover map (as created above - this ensures the two layers match) as the output extent. Make sure the \"fixed value to burn\" is \"Not set\". Then choose \"Georeferenced units\" as the \"Out raster size units\" and set horizontal and vertical resolution to 10.0. In the advanced parameters, set the output data type to UInt32. Finally, enter an output file name and run. The resulting TIF file can be passed to Persephone as the farmfieldmap parameter.","category":"page"},{"location":"crops.html#Crop-submodel","page":"Crop submodel","title":"Crop submodel","text":"","category":"section"},{"location":"crops.html","page":"Crop submodel","title":"Crop submodel","text":"Eventually, Persephone will include a full-blown crop-growth model (an adaptation of AquaCrop, created by the FAO). At the moment, we are only working with a very basic mock-up.","category":"page"},{"location":"crops.html#crops.jl","page":"Crop submodel","title":"crops.jl","text":"","category":"section"},{"location":"crops.html","page":"Crop submodel","title":"Crop submodel","text":"This includes the types and functions needed for all crop growth model, which are also referenced by the other submodels.","category":"page"},{"location":"crops.html","page":"Crop submodel","title":"Crop submodel","text":"Modules = [Persephone]\nPages = [\"crop/crops.jl\"]","category":"page"},{"location":"crops.html#Persephone.CropType","page":"Crop submodel","title":"Persephone.CropType","text":"The crop types simulated by the model\n\n\n\n\n\n","category":"type"},{"location":"crops.html#Persephone.FarmPlot","page":"Crop submodel","title":"Persephone.FarmPlot","text":"FarmPlot\n\nThis represents one field, i.e. a collection of pixels with the same management. This is the spatial unit with which the crop growth model and the farm model work.\n\n\n\n\n\n","category":"type"},{"location":"crops.html#Persephone.averagefieldsize-Tuple{Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.averagefieldsize","text":"averagefieldsize(model)\n\nCalculate the average field size in hectares for the model landscape.\n\n\n\n\n\n","category":"method"},{"location":"crops.html#Persephone.cropheight-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.cropheight","text":"cropheight(model, position)\n\nReturn the height of the crop at this position, or nothing if there is no crop here (utility wrapper).\n\n\n\n\n\n","category":"method"},{"location":"crops.html#Persephone.croptype-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.croptype","text":"croptype(model, position)\n\nReturn the crop at this position, or nothing if there is no crop here (utility wrapper).\n\n\n\n\n\n","category":"method"},{"location":"crops.html#Persephone.initfields!-Tuple{Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.initfields!","text":"initfields!(model)\n\nInitialise the model with its farm plots.\n\n\n\n\n\n","category":"method"},{"location":"crops.html#Persephone.stepagent!-Tuple{FarmPlot, Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.stepagent!","text":"stepagent!(farmplot, model)\n\nUpdate a farm plot by one day.\n\n\n\n\n\n","category":"method"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"CurrentModule = Persephone","category":"page"},{"location":"index.html#Introduction","page":"Introduction","title":"Introduction","text":"","category":"section"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"Persephone is an agent-based, socio-economic-ecological model of agricultural landscapes in Europe under the Common Agricultural Policy (CAP).","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"It's aim is to investigate how policy affects farmer decision-making, and how this in turn affects various animal species. It includes a farm submodel, a crop-growth submodel, and an ecological submodels.","category":"page"},{"location":"index.html#Running-the-model","page":"Introduction","title":"Running the model","text":"","category":"section"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"To run a single experiment, execute:","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"./run.jl -c <CONFIG>","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"Other commandline arguments are:","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"usage: run.jl [-c CONFIGFILE] [-s SEED] [-o OUTDIR] [-l LOGLEVEL] \n [--version] [-h]\n\noptional arguments:\n -c, --configfile CONFIGFILE\n name of the configuration file\n -s, --seed SEED inital random seed (type: Int64)\n -o, --outdir OUTDIR location of the output directory\n -l, --loglevel LOGLEVEL\n verbosity: \"debug\", \"info\", or \"quiet\"\n --version show version information and exit\n -h, --help show this help message and exit","category":"page"},{"location":"index.html#Model-input","page":"Introduction","title":"Model input","text":"","category":"section"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"Persephone requires three input files: a configuration file and two map files. How to generate the map files is documented elsewhere. The configuration file defines parameter values and looks like this (see src/parameters.toml for a complete list of parameters):","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"### Persephone - a socio-economic-ecological model of European agricultural landscapes.\n###\n### This is the default configuration file for Persephone, containing all model parameters.\n### The syntax is described here: https://toml.io/en/\n\n[core]\nconfigfile = \"src/parameters.toml\" # location of the configuration file\nlandcovermap = \"data/landcover_jena.tif\" # location of the landcover map\nfarmfieldsmap = \"data/fields_jena.tif\" # location of the field geometry map\noutdir = \"results\" # location and name of the output folder\noverwrite = \"ask\" # overwrite the output directory? (true/false/\"ask\")\nloglevel = \"debug\" # verbosity level: \"debug\", \"info\", \"warn\"\nprocessors = 2 # number of processors to use on parallel runs\nseed = 2 # seed value for the RNG (0 -> random value)\n# dates to start and end the simulation\nstartdate = 2022-01-01\nenddate = 2022-12-31\n\n[farm]\nfarmmodel = \"FieldManager\" # which version of the farm model to use (not yet implemented)\n\n[nature]\ntargetspecies = [\"Wolpertinger\", \"Wyvern\"] # list of target species to simulate\npopoutfreq = \"daily\" # output frequency population-level data, daily/monthly/yearly/end/never\nindoutfreq = \"end\" # output frequency individual-level data, daily/monthly/yearly/end/never\n\t\n[crop]\ncropmodel = \"linear\" # crop growth model to use, \"linear\" or \"aquacrop\" (not yet implemented)","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"Last updated: 2023-02-03 (commit 092c769) ","category":"page"}] +[{"location":"nature.html#Nature","page":"Nature","title":"Nature","text":"","category":"section"},{"location":"nature.html#nature.jl","page":"Nature","title":"nature.jl","text":"","category":"section"},{"location":"nature.html","page":"Nature","title":"Nature","text":"This file is responsible for managing the animal modules.","category":"page"},{"location":"nature.html","page":"Nature","title":"Nature","text":"Modules = [Persephone]\nPages = [\"nature/nature.jl\"]","category":"page"},{"location":"nature.html#Persephone.Animal","page":"Nature","title":"Persephone.Animal","text":"Animal\n\nThis is the generic agent type for all animals. Species are differentiated by trait dictionaries passed by them during initialisation. (Note that each trait variable can still be accessed as if it were a normal field name, i.e. the trait phase can be accessed and modified with animal.phase.)\n\n\n\n\n\n","category":"type"},{"location":"nature.html#Persephone.animalid-Tuple{Animal}","page":"Nature","title":"Persephone.animalid","text":"animalid(animal)\n\nA small utility function to return a string with the species name and ID of an animal.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.initnature!-Tuple{Agents.AgentBasedModel}","page":"Nature","title":"Persephone.initnature!","text":"initnature!(model)\n\nInitialise the model with all simulated animal populations.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.stepagent!-Tuple{Animal, Agents.AgentBasedModel}","page":"Nature","title":"Persephone.stepagent!","text":"stepagent!(animal, model)\n\nUpdate an animal by one day, executing it's currently active phase function.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.@countanimals-Tuple","page":"Nature","title":"Persephone.@countanimals","text":"@countanimals(species=\"\", radius=0)\n\nCount the number of animals of the given species in this location. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@cropheight-Tuple{}","page":"Nature","title":"Persephone.@cropheight","text":"@cropheight\n\nReturn the height of the crop at this position, or 0 if there is no crop here. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@croptype-Tuple{}","page":"Nature","title":"Persephone.@croptype","text":"@croptype\n\nReturn the local croptype, or nothing if there is no crop here. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@distanceto-Tuple{Any}","page":"Nature","title":"Persephone.@distanceto","text":"@distanceto(habitat)\n\nCalculate the distance to the closest habitat of the specified type or descriptor. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@distancetoedge-Tuple{}","page":"Nature","title":"Persephone.@distancetoedge","text":"@distancetoedge\n\nCalculate the distance to the closest neighbouring habitat. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@habitat-Tuple{Any}","page":"Nature","title":"Persephone.@habitat","text":"@habitat\n\nSpecify habitat suitability for spatial ecological processes.\n\nThis macro works by creating an anonymous function that takes in a model object and a position, and returns true or false depending on the conditions specified in the macro body.\n\nSeveral utility macros can be used within the body of @habitat as a short-hand for common expressions: @landcover, @croptype, @cropheight, @distanceto, @distancetoedge, @countanimals. The variables model and pos can be used for checks that don't have a macro available.\n\nTwo example uses of @habitat might look like this:\n\nmovementhabitat = @habitat(@landcover() in (grass agriculture soil))\n\nnestinghabitat = @habitat((@landcover() == grass || \n (@landcover() == agriculture && @croptype() != maize &&\n @cropheight() < 10)) &&\n @distanceto(forest) > 20)\n\nFor more complex habitat suitability checks, the use of this macro can be circumvented by directly creating an equivalent function.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}","page":"Nature","title":"Persephone.@initialise","text":"@initialise(habitatdescriptor; kwargs...)\n\nCall this macro within the body of @species. It passes the given habitat descriptor function and keyword arguments on to initpopulation when setting up the simulation.\n\nNote: if this macro is not used, the variable initialise! must be set manually in the species definition.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@kill-Tuple","page":"Nature","title":"Persephone.@kill","text":"@kill\n\nKill this animal (and immediately abort its current update). This is a thin wrapper around kill!, and passes on any arguments. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@landcover-Tuple{}","page":"Nature","title":"Persephone.@landcover","text":"@landcover\n\nReturns the local landcover. This is a utility wrapper that can only be used nested within @phase or @habitat.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@neighbours-Tuple{Any}","page":"Nature","title":"Persephone.@neighbours","text":"@neighbours(radius)\n\nReturn an iterator over all animals in the given radius around this animal, excluding itself. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@phase-Tuple{Any, Any}","page":"Nature","title":"Persephone.@phase","text":"@phase(name, body)\n\nThis macro is designed to be used within a species definition block (i.e. within the body of a call to @species).\n\nThe idea behind this is that species show very different behaviour during different phases of their lives. Therefore, @phase can be used define the behaviour for one such phase, and the conditions under which the animal transitions to another phase.\n\n@phase works by creating a function that will be called by the model if the animal is in the relevant phase. When it is called, it has access to the following variables:\n\nanimal a reference to the animal itself. This provides access to animal.age, animal.sex, and animal.<trait> (where <trait> is a variable that was defined in the top part of the species definition body).\npos gives the animal's current position as a coordinate tuple.\nmodel a reference to the model world (an object of type AgentBasedModel). This allows access to model.date (the current simulation date) and model.landscape (a two-dimensional array of pixels containing geographic information).\n\nSeveral utility macros can be used within the body of @phase as a short-hand for common expressions: @trait, @setphase, @respond, @kill, @reproduce, @neighbours, @rand, @shuffle!.\n\nNote that the first phase that is defined in a species definition block will be the phase that animals are assigned at birth, unless the variable phase is explicitly defined by the user in the species definition block.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@reproduce-Tuple","page":"Nature","title":"Persephone.@reproduce","text":"@reproduce\n\nLet this animal reproduce. This is a thin wrapper around reproduce!, and passes on any arguments. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@respond-Tuple{Any, Any}","page":"Nature","title":"Persephone.@respond","text":"@respond(eventname, body)\n\nDefine how an animal responds to a landscape event that affects its current position. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@setphase-Tuple{Any}","page":"Nature","title":"Persephone.@setphase","text":"@setphase(newphase)\n\nSwitch this animal over to a different phase. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@species-Tuple{Any, Any}","page":"Nature","title":"Persephone.@species","text":"@species(name, body)\n\nA macro used to create new species definitions for the nature model. This is effectively a simple domain-specific language, establishing a custom syntax to describe species' biology:\n\n@species name begin\n\n @initialise(@habitat(...))\n speciesvar1 = 3.14\n ...\n\n @phase phase1 begin\n ...\n end\nend\n\nThe definition body (enclosed in the begin/end block) has two sections. First comes a call to @initialise, and optionally a list of species-specific parameters, which are assigned just like normal variables. Second come one or more phase definitions, that describe the behaviour of the species during various parts of its life cycle. (See the documentation to @initialise and @phase for details).\n\nCode in a species definition block can access the rest of the model using the model variable (an object of type AgentBasedModel).\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#Persephone.@trait-Tuple{Any}","page":"Nature","title":"Persephone.@trait","text":"@trait(traitname)\n\nA utility macro to quickly access an animal's trait value. This can only be used nested within @phase.\n\n\n\n\n\n","category":"macro"},{"location":"nature.html#populations.jl","page":"Nature","title":"populations.jl","text":"","category":"section"},{"location":"nature.html","page":"Nature","title":"Nature","text":"This file contains a set of utility functions for species, including initialisation, reproduction, and mortality.","category":"page"},{"location":"nature.html","page":"Nature","title":"Nature","text":"Modules = [Persephone]\nPages = [\"nature/populations.jl\"]","category":"page"},{"location":"nature.html#Persephone.countanimals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Nature","title":"Persephone.countanimals","text":"countanimals(pos, model; species=\"\", radius=0)\n\nCount the number of animals in this location (optionally supplying a species name and radius).\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.initpopulation-Tuple{Function}","page":"Nature","title":"Persephone.initpopulation","text":"initpopulation(habitatdescriptor; popsize=-1, pairs=false, asexual=false)\n\nCreates a function that initialises individuals at random locations across the landscape. This can be used to create the initialise! variable in a species definition block.\n\nhabitatdescriptor is a function that determines whether a given location is suitable or not (create this using @habitat).\nphase determines which life phase individuals will be assigned to. If this is nothing, the species' default post-natal life stage will be used (although note that this is probably not what you want).\npopsize determines the number of individuals that will be created. If this is zero or negative, one individual will be created in every suitable location in the landscape. If popsize is greater than the number of suitable locations, multiple individuals will be created in one place. (Maximum population density can be set in the habitat descriptor using the @countanimals macro.)\nIf pairs is true, a male and a female individual will be created in each selected location, otherwise, only one individual will be created at a time.\nIf asexual is true, all created individuals are assigned the sex hermaphrodite, otherwise, they are randomly assigned male of female. (If pairs is true, asexual is ignored.)\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.initrandompopulation-Tuple{Int64}","page":"Nature","title":"Persephone.initrandompopulation","text":"initrandompopulation(popsize; kwargs...)\n\nA simplified version of initpopulation. Creates a function that initialises popsize individuals, spread at random across the landscape.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.kill!","page":"Nature","title":"Persephone.kill!","text":"kill(animal, model, probability=1.0, cause=\"\")\n\nKill this animal, optionally with a given percentage probability. Returns true if the animal dies, false if not.\n\n\n\n\n\n","category":"function"},{"location":"nature.html#Persephone.nearby_animals-Tuple{Animal, Agents.AgentBasedModel, Int64}","page":"Nature","title":"Persephone.nearby_animals","text":"nearby_animals(animal, model, radius)\n\nReturn an iterator over all animals in the given radius around this animal, excluding itself.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.nearby_animals-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Int64}","page":"Nature","title":"Persephone.nearby_animals","text":"nearby_animals(pos, model, radius)\n\nReturn an iterator over all animals in the given radius around this position.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.reproduce!","page":"Nature","title":"Persephone.reproduce!","text":"reproduce!(animal, model, n=1)\n\nProduce one or more offspring for the given animal at its current location.\n\n\n\n\n\n","category":"function"},{"location":"nature.html#ecologicaldata.jl","page":"Nature","title":"ecologicaldata.jl","text":"","category":"section"},{"location":"nature.html","page":"Nature","title":"Nature","text":"This file contains a set of life-history related utility functions needed by species.","category":"page"},{"location":"nature.html","page":"Nature","title":"Nature","text":"Modules = [Persephone]\nPages = [\"nature/ecologicaldata.jl\"]","category":"page"},{"location":"nature.html#Persephone.initecologicaldata-Tuple{Agents.AgentBasedModel}","page":"Nature","title":"Persephone.initecologicaldata","text":"initecologicaldata()\n\nCreate output files for each data group collected by the nature model.\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.saveindividualdata-Tuple{Agents.AgentBasedModel}","page":"Nature","title":"Persephone.saveindividualdata","text":"saveindividualdata(model)\n\nReturn a comma-separated set of lines (to be printed to individuals.csv), listing all properties of all animal individuals in the model. May be called never, daily, monthly, yearly, or at the end of a simulation, depending on the parameter nature.indoutfreq. WARNING: Produces very big files!\n\n\n\n\n\n","category":"method"},{"location":"nature.html#Persephone.savepopulationdata-Tuple{Agents.AgentBasedModel}","page":"Nature","title":"Persephone.savepopulationdata","text":"savepopulationdata(model)\n\nReturn a comma-separated set of lines (to be printed to populations.csv), giving the current date and population size for each animal species. May be called never, daily, monthly, yearly, or at the end of a simulation, depending on the parameter nature.popoutfreq.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Input,-Output,-and-Settings","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"","category":"section"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"These functions are responsible for reading in all model configurations (passed by config file or commandline), administrating them during a run, and printing any output.","category":"page"},{"location":"io.html#parameters.toml","page":"Input, Output, and Settings","title":"parameters.toml","text":"","category":"section"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"This is the default configuration file for Persephone, containing all model parameters. The syntax is described here: https://toml.io/en/","category":"page"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"DO NOT MODIFY THIS FILE FOR SIMULATION EXPERIMENTS! Instead, copy it to another directory, modify the copy, and then pass it to the model using the --config parameter.","category":"page"},{"location":"io.html#input.jl","page":"Input, Output, and Settings","title":"input.jl","text":"","category":"section"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"Modules = [Persephone]\nPages = [\"core/input.jl\"]","category":"page"},{"location":"io.html#Persephone.PARAMFILE","page":"Input, Output, and Settings","title":"Persephone.PARAMFILE","text":"The file that stores all default parameters: src/parameters.toml\n\n\n\n\n\n","category":"constant"},{"location":"io.html#Persephone.flattenTOML-Tuple{Any}","page":"Input, Output, and Settings","title":"Persephone.flattenTOML","text":"flattenTOML(dict)\n\nAn internal utility function to convert the two-dimensional dict returned by TOML.parsefile() into a one-dimensional dict, so that instead of writing settings[\"domain\"][\"param\"] one can use settings[\"domain.param\"]. Can be reversed with prepareTOML.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.getsettings","page":"Input, Output, and Settings","title":"Persephone.getsettings","text":"getsettings(configfile, seed=nothing)\n\nCombines all configuration options to produce a single settings dict. Precedence: commandline parameters - user config file - default values\n\n\n\n\n\n","category":"function"},{"location":"io.html#Persephone.parsecommandline-Tuple{}","page":"Input, Output, and Settings","title":"Persephone.parsecommandline","text":"parsecommandline()\n\nCertain software parameters can be set via the commandline.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.preprocessparameters-Tuple{Dict{String, Any}, String}","page":"Input, Output, and Settings","title":"Persephone.preprocessparameters","text":"preprocessparameters(settings)\n\nTake the raw input parameters and process them (convert types, perform checks, etc.). This is a helper function for getsettings.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.@param-Tuple{Any}","page":"Input, Output, and Settings","title":"Persephone.@param","text":"@param(domainparam)\n\nReturn a configuration parameter from the global settings. The argument should be in the form <domain>.<parameter>, for example @param(core.outdir). Possible values for <domain> are core, nature, farm, or crop. For a full list of parameters, see src/parameters.toml.\n\nNote: this macro only works in a context where the model object is available!\n\n\n\n\n\n","category":"macro"},{"location":"io.html#Persephone.@rand-Tuple","page":"Input, Output, and Settings","title":"Persephone.@rand","text":"@rand(args...)\n\nReturn a random number or element from the sample, using the model RNG. This is a utility wrapper that can only be used a context where the model object is available.\n\n\n\n\n\n","category":"macro"},{"location":"io.html#Persephone.@shuffle!-Tuple{Any}","page":"Input, Output, and Settings","title":"Persephone.@shuffle!","text":"@shuffle!(collection)\n\nShuffle the given collection in place, using the model RNG. This is a utility wrapper that can only be used a context where the model object is available.\n\n\n\n\n\n","category":"macro"},{"location":"io.html#output.jl","page":"Input, Output, and Settings","title":"output.jl","text":"","category":"section"},{"location":"io.html","page":"Input, Output, and Settings","title":"Input, Output, and Settings","text":"Modules = [Persephone]\nPages = [\"core/output.jl\"]","category":"page"},{"location":"io.html#Persephone.DataOutput","page":"Input, Output, and Settings","title":"Persephone.DataOutput","text":"DataOutput\n\nA struct for organising model output. This is designed for text-based data output that is updated more or less regularly (e.g. population data in csv files). Submodels can register their own output functions using newdataoutput!.\n\nStruct fields: - filename: the name of the file to be created in the user-specified output directory - header: a string to be written to the start of the file as it is initialised - outputfunction: a function that takes a model object and returns a string to write to file - frequency: how often to call the output function (daily/monthly/yearly/end/never)\n\n\n\n\n\n","category":"type"},{"location":"io.html#Persephone.createdatadir-Tuple{String, Union{Bool, String}}","page":"Input, Output, and Settings","title":"Persephone.createdatadir","text":"createdatadir(outdir, overwrite)\n\nCreates the output directory, dealing with possible conflicts.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.modellogger-Tuple{String, String}","page":"Input, Output, and Settings","title":"Persephone.modellogger","text":"modellogger(loglevel, outdir)\n\nCreate a logger object that writes output both to screen and to a logfile. This object is stored as model.logger and can then be used with with_logger(). Note: requires createdatadir to be run first.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.newdataoutput!-Tuple{Agents.AgentBasedModel, String, String, Function, String}","page":"Input, Output, and Settings","title":"Persephone.newdataoutput!","text":"newdataoutput!(model, filename, header, outputfunction, frequency)\n\nCreate and register a new data output. This function must be called by all submodels that want to have their output functions called regularly.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.outputdata-Tuple{Agents.AgentBasedModel}","page":"Input, Output, and Settings","title":"Persephone.outputdata","text":"outputdata(model)\n\nCycle through all registered data outputs and activate them according to their configured frequency.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.prepareTOML-Tuple{Any}","page":"Input, Output, and Settings","title":"Persephone.prepareTOML","text":"prepareTOML(dict)\n\nAn internal utility function to re-convert the one-dimensional dict created by flattenTOML into the two-dimensional dict needed by TOML.print, and convert any data types into TOML-compatible types where necessary.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.saveinputfiles-Tuple{Agents.AgentBasedModel}","page":"Input, Output, and Settings","title":"Persephone.saveinputfiles","text":"saveinputfiles(model)\n\nCopy all input files into the output directory, including the actual parameter settings used. This allows replicating a run in future.\n\n\n\n\n\n","category":"method"},{"location":"io.html#Persephone.withtestlogger-Tuple{Agents.AgentBasedModel}","page":"Input, Output, and Settings","title":"Persephone.withtestlogger","text":"withtestlogger(model)\n\nReplace the model logger with the currently active logger. This is intended to be used in the testsuite to circumvent a Julia issue, where @test_logs doesn't work with local loggers.\n\n\n\n\n\n","category":"method"},{"location":"architecture.html#Source-code-architecture","page":"Source code architecture","title":"Source code architecture","text":"","category":"section"},{"location":"architecture.html#Model-components","page":"Source code architecture","title":"Model components","text":"","category":"section"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"(Image: \"model architecture\")","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"Persephone is divided into four components, three of which are semi-independent submodels:","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"core: This is the foundation of the model software, which sets up and executes simulation runs. It also reads in the configuration file and landscape maps, and provides data output functionality. (Eventually, it will also provide weather data.)\nnature: This is an individual-based model of species in agricultural landscapes. It defines the Animal agent type, and a set of macros that can be used to rapidly create new species. It also includes ecological process functions that are useful for all species.\nfarm: This is an agent-based model of farmer decision making. It is not yet implemented, but will provide the Farmer agent type.\ncrop: This is a mathematical growth model for various crops. It is not yet implemented, but already provides the agent type FarmPlot, representing one field and its associated extent and crop type.","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"Conceptually, core provides functionality that is needed by all of the submodels. Decisions made by Farmers affect the FarmPlots they own, and (directly or indirectly) the Animals in the model landscape.","category":"page"},{"location":"architecture.html#Important-implementation-details","page":"Source code architecture","title":"Important implementation details","text":"","category":"section"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"(Image: \"the model object\")","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"The model object: A cursory reading of the source code will quickly show that most functions take an AgentBasedModel object as one of their arguments. This is the key data structure of Agents.jl, and holds all state that is in any way relevant to a simulation run. (Persephone has a strict \"no global state\" policy to avoid state-dependent bugs and allow parallelisation.) The model object gives access to all agent instances (via model[id], where id is the unique identifier of this agent). It also stores the configuration (model.settings), the landscape (model.landscape, a matrix of Pixel objects that store the local land cover, amongst other things), and the current simulation date (model.date). (See initmodel for details.)\nModel configuration/the @param macro: The model is configured via a TOML file, the default version of which is at src/parameters.toml. An individual run can be configured using a user-defined configuration file, commandline arguments, or function calls (when Persephone is used as a package rather than an application). During a model run, the @param(parameter) macro can be used as a short-hand for model.settings[\"parameter\"]. Note that parameter names are prepended with the name of the component they are associated with. For example, the outdir parameter belongs to the [core] section of the TOML file, and must therefore be referenced as @param(core.outdir). (See src/core/input.jl for details.)","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"warning: @param and other macros\nAs @param(parameter) expands to model.settings[\"parameter\"], it can obviously only be used in a context where the model object is actually available. (This is the case for most functions in Persephone, but not for all.) Similarly, many of the nature macros depend on specific variables being available where they are called, and can therefore only be used in specific contexts (this is indicated in their documentation).","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"Output data: Persephone can output model data into text files with a specified frequency (daily, monthly, yearly, or at the simulation end). Submodels can use newdataoutput! to plug into this system. For an example of how to use this, see src/nature/ecologicaldata.jl. (See src/core/output.jl for details.)\nFarm events: The FarmEvent struct is used to communicate farming-related events between submodels. An event can be triggered with createevent! and affects all pixels within a FarmPlot. (See src/core/landscape.jl for details.)\nRandom numbers and logging: By default in Julia, the random number generator (RNG) and the system logger are two globally accessible variables. As Persephone needs to avoid all global data (as this would interfere with reproducibility in parallel runs), the model object stores a local logger and a local RNG. The local logger generally does not change the way the model uses log statements, it is only relevant for some functions in src/core/simulation.jl.","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"info: Using the model RNG\nWhenever you need to use a random number, you must use the model.rng. The easiest way to do this is with the @rand and @shuffle! macros. (Note that these, too, require access to the model object.)","category":"page"},{"location":"architecture.html","page":"Source code architecture","title":"Source code architecture","text":"Working with agents: For more information about working with agent objects, see the Agents.jl API.","category":"page"},{"location":"species.html#Species","page":"Species","title":"Species","text":"","category":"section"},{"location":"species.html","page":"Species","title":"Species","text":"The ecological submodel in Persephone simulates a range of species in agricultural landscapes.","category":"page"},{"location":"species.html#Skylark","page":"Species","title":"Skylark","text":"","category":"section"},{"location":"species.html","page":"Species","title":"Species","text":"Modules = [Persephone]\nPages = [\"nature/species/skylark.jl\"]","category":"page"},{"location":"species-dsl.html#Defining-new-species","page":"Defining new species","title":"Defining new species","text":"","category":"section"},{"location":"species-dsl.html#The-Persephone-species-DSL","page":"Defining new species","title":"The Persephone species DSL","text":"","category":"section"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"In order to make implementing new species as easy as possible, Persephone includes a domain-specific language (DSL) built from a collection of macros and functions.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Here is an example of what this looks like, using a hypothetical mermaid species:","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"@species Mermaid begin\n ageofmaturity = 2\n pesticidemortality = 1.0\n @initialise(@habitat(@landcover() == water), pairs=true)\n\t\n @phase life begin\n @debug \"$(animalid(animal)) is swimming happily in its pond.\"\n @respond pesticide @kill(@trait(pesticidemortality), \"poisoning\")\n @respond harvest @setphase(drought)\n @debug \"Animal: $animal\"\n if @trait(sex) == female && @countanimals() < 3 &&\n @trait(age) >= @trait(ageofmaturity) && @landcover() == water\n @reproduce()\n end\n end\n\t\n @phase drought begin\n n = sum(1 for a in @neighbours(0))\n @debug \"$(animalid(animal)) is experiencing drought with $n neighbour(s).\"\n @respond sowing @setphase(life)\n end\nend","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"The two most important macros are @species and @phase, followed by @initialise, @trait, @respond, and @habitat. Other macros provide convenience wrappers for common functions. (See src/nature/nature.jl for details.)","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"The top-level macro is @species. This takes two arguments: a species name and a definition block (enclosed in begin and end tags). At the start of the definition block, species-specific variables can be defined that should be available throughout a species' lifetime. Code in this section has access to the model object and can thus reference the current model state. In this section, the user also has to call the @initialise macro. This wraps the initpopulation function, and takes a habitat descriptor (see @habitat below) and several options to specify how the species' population should be distributed in the landscape during model initialisation.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Following this section, each species must define one or more @phase blocks. The concept behind this is that species show different behaviours at different phases of their lifecycle. Each @phase block defines the behaviour in one of these phases. (Technically, it defines a function that will be called daily, so long as the species' phase variable is set to the name of this phase.) Code in this section has access to the model object as well as an animal object, which is the currently active animal agent. Properties of the animal agent, regardless of whether they were defined by the user or by Persephone, can be accessed using the @trait macro. Within a phase block, @respond can be used to define the species' response to a FarmEvent that affects the species' current location, while a variety of other macros provide wrappers to ecological process functions from src/nature/populations.jl.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Another important macro is @habitat. This defines a \"habitat descriptor\", i.e. a predicate function that tests whether or not a given landscape pixel is suitable for a specified purpose. Such habitat descriptors are used as arguments to various functions, for example for population initialisation or movement. The argument to @habitat consists of a logical expression, which has access to the animal's current position (the pos tuple variable) and the model. Various macros are available to easily reference information about the current location, such as @landcover or @distancetoedge.","category":"page"},{"location":"species-dsl.html#Implementation-details","page":"Defining new species","title":"Implementation details","text":"","category":"section"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Due to a known performance problem with multi-agent models, the underlying implementation of species is rather complicated (see src/nature/nature.jl for details.)","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Rather than creating a new type/struct for each species, all Animal agents have the same type. Instead, they are differentiated by a traits dict, which stores both species-specific parameters and run-time variables. Note that due to a redefinition of the getproperty()/setproperty!() methods, variables from the trait dict can be accessed and modified just like normal struct fields (i.e. although phase is defined in the dict, not the struct, animal.phase = \"newphase\" works just fine - one does not have to use animal.traits[\"phase\"] = \"newphase\".)","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Under the hood, the @species macro generates a function (with the name of the species), which in turn creates the trait dict when called. Thus, adding a new animal agent to the model involves instantiating an Animal object, then calling the relevant species function and attaching the returned dict to the agent object.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Similarly, the @phase macro too works by defining a new function, which is stored in the species' trait dict. These functions take an animal object and the model object as input, and define what the species does during its daily update.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Once again, @habitat creates a function that takes model and pos as input and returns a boolean response. Functions that require a habitat descriptor thus take in this (anonymous) function and call it internally.","category":"page"},{"location":"species-dsl.html","page":"Defining new species","title":"Defining new species","text":"Finally, the @initialise macro is a wrapper around initpopulation, which (yet again) creates a function that specifies how a species' population is to be initialised at the beginning of a simulation run. This function is stored in the species trait dict and accessed during model setup.","category":"page"},{"location":"developing.html#Developing-Persephone","page":"Developing Persephone","title":"Developing Persephone","text":"","category":"section"},{"location":"developing.html#Workflow","page":"Developing Persephone","title":"Workflow","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"Pull the current development version from the master branch on Gitlab: https://git.idiv.de/xo30xoqa/persephone.\nIf you are working on a new feature, create a new branch to avoid breaking the master branch. (The master branch should always be in a runnable and (as far as possible) error-free state.)\nImplement your changes.\nRun example.sh to make sure the model executes without crashing. Also run the test suite (cd test; julia runtests.jl).\nCommit your work frequently, and try to keep each commit small. Don't forget to add relevant tests to the test suite.\nOnce your satisfied with your work, do another pull/merge from the master branch in case somebody else changed the branch in the meantime. Then merge your work into master and push to the Gitlab server.\nRepeat :-)","category":"page"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"The Gitlab issue tracker can be used to create, discuss, and assign tasks, as well as to monitor progress towards milestones/releases. Once we have a first release, we will start using semantic versioning.","category":"page"},{"location":"developing.html#Agents.jl","page":"Developing Persephone","title":"Agents.jl","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"Our model uses Agents.jl as a framework. Their repository can be used to inspect the source code or submit bug reports (the authors are quick to respond). Questions can be asked at the Julia Discourse forum.","category":"page"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"Tutorial on collaborating on Julia packages: https://www.matecdev.com/posts/julia-package-collaboration.html.","category":"page"},{"location":"developing.html#Julia-editors","page":"Developing Persephone","title":"Julia editors","text":"","category":"section"},{"location":"developing.html#Emacs","page":"Developing Persephone","title":"Emacs","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"There are a couple of addons that make working with Julia much nicer in Emacs:","category":"page"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"julia-mode gives syntax highlighting. Install with M-x package-install julia-mode.\njulia-snail provides IDE-like features, especially a fully-functional REPL and the ability to evaluate code straight from inside a buffer. Note that the installation can be somewhat tricky. You first need to manually install all the dependencies of its dependency vterm, then install vterm itself with M-x package-install vterm, before you can do M-x package-install julia-snail. Then add it to your init.el with (require 'julia-snail) and (add-hook 'julia-mode-hook #'julia-snail-mode).\ncompany-mode integrates with Snail to give code completion. Install with M-x package-install company, then add (add-hook 'julia-mode-hook #'company-mode) and (global-set-key (kbd \"C-<tab>\") 'company-complete) to your init.el.\nmagit is a great git interface for Emacs. Install with M-x package-install magit and add (global-set-key (kbd \"C-x g\") 'magit-status) to your init.el.","category":"page"},{"location":"developing.html#VSCode","page":"Developing Persephone","title":"VSCode","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"See here.","category":"page"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"TODO: add more detail.","category":"page"},{"location":"developing.html#Other-useful-stuff","page":"Developing Persephone","title":"Other useful stuff","text":"","category":"section"},{"location":"developing.html","page":"Developing Persephone","title":"Developing Persephone","text":"Revise.jl allows one to reload code without restarting the Julia interpreter. Get it with Pkg.add(\"Revise\"), then add using Revise to .julia/config/startup.jl to have it automatically available.\ngit-bug is a commandline bug tracker that integrates directly with git. It can also be used as a local interface to Gitlab issues. To install on Linux, download the binary, copy it to /usr/local/bin/git-bug, and set it as executable with chmod +x /usr/local/bin/git-bug. To set up Gitlab integration, run git bug bridge configure from within the relevant repository.","category":"page"},{"location":"simulation.html#Simulation","page":"Simulation","title":"Simulation","text":"","category":"section"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"The core directory holds source files that are important for all submodels, including scheduling, landscape, and input/output functions.","category":"page"},{"location":"simulation.html#simulation.jl","page":"Simulation","title":"simulation.jl","text":"","category":"section"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"This file includes the basal functions for initialising and running simulations.","category":"page"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"Modules = [Persephone]\nPages = [\"core/simulation.jl\"]","category":"page"},{"location":"simulation.html#Persephone.finalise!-Tuple{Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.finalise!","text":"finalise!(model)\n\nWrap up the simulation. Currently doesn't do anything except print some information.\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.initialise","page":"Simulation","title":"Persephone.initialise","text":"initialise(config=PARAMFILE, seed=nothing)\n\nInitialise the model: read in parameters, create the output data directory, and instantiate the AgentBasedModel object(s). Optionally allows specifying the configuration file and overriding the seed parameter. This returns a single model object, unless the config file contains multiple values for one or more parameters, in which case it creates a full-factorial simulation experiment and returns a vector of model objects.\n\n\n\n\n\n","category":"function"},{"location":"simulation.html#Persephone.initmodel-Tuple{Dict{String, Any}}","page":"Simulation","title":"Persephone.initmodel","text":"initmodel(settings)\n\nInitialise a model object using a ready-made settings dict. This is a helper function for initialise().\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.paramscan-Tuple{Dict{String, Any}, Vector{String}}","page":"Simulation","title":"Persephone.paramscan","text":"paramscan(settings)\n\nCreate a list of settings dicts, covering all possible parameter combinations given by the input settings (i.e. a full-factorial experiment). This is a helper function for initialise().\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.simulate","page":"Simulation","title":"Persephone.simulate","text":"simulate(config=PARAMFILE, seed=nothing)\n\nInitialise one or more model objects and carry out a full simulation experiment, optionally specifying a configuration file and a seed for the RNG.\n\nThis is the default way to run a Persephone simulation.\n\n\n\n\n\n","category":"function"},{"location":"simulation.html#Persephone.simulate!-Tuple{Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.simulate!","text":"simulate!(model)\n\nCarry out a complete simulation run using a pre-initialised model object.\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.stepsimulation!-Tuple{Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.stepsimulation!","text":"stepsimulation!(model)\n\nExecute one update of the model.\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#landscape.jl","page":"Simulation","title":"landscape.jl","text":"","category":"section"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"This file manages the landscape maps that underlie the model.","category":"page"},{"location":"simulation.html","page":"Simulation","title":"Simulation","text":"Modules = [Persephone]\nPages = [\"core/landscape.jl\"]","category":"page"},{"location":"simulation.html#Persephone.EventType","page":"Simulation","title":"Persephone.EventType","text":"The types of landscape event that can be simulated\n\n\n\n\n\n","category":"type"},{"location":"simulation.html#Persephone.FarmEvent","page":"Simulation","title":"Persephone.FarmEvent","text":"FarmEvent\n\nA data structure to define a landscape event, giving its type, spatial extent, and duration.\n\n\n\n\n\n","category":"type"},{"location":"simulation.html#Persephone.LandCover","page":"Simulation","title":"Persephone.LandCover","text":"The land cover classes encoded in the Mundialis Sentinel data.\n\n\n\n\n\n","category":"type"},{"location":"simulation.html#Persephone.Pixel","page":"Simulation","title":"Persephone.Pixel","text":"Pixel\n\nA pixel is a simple data structure to combine land use and ownership information in a single object. The model landscape consists of a matrix of pixels. (Note: further landscape information may be added here in future.)\n\n\n\n\n\n","category":"type"},{"location":"simulation.html#Persephone.createevent!","page":"Simulation","title":"Persephone.createevent!","text":"createevent!(model, pixels, name, duration=1)\n\nAdd a farm event to the specified pixels (a vector of position tuples) for a given duration.\n\n\n\n\n\n","category":"function"},{"location":"simulation.html#Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Function}","page":"Simulation","title":"Persephone.distanceto","text":"distanceto(pos, model, habitatdescriptor)\n\nCalculate the distance from the given location to the closest location matching the habitat descriptor function. Caution: can be computationally expensive!\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Persephone.LandCover}","page":"Simulation","title":"Persephone.distanceto","text":"distanceto(pos, model, habitattype)\n\nCalculate the distance from the given location to the closest habitat of the specified type. Caution: can be computationally expensive!\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.distancetoedge-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.distancetoedge","text":"distancetoedge(pos, model)\n\nCalculate the distance from the given location to the closest neighbouring habitat. Caution: can be computationally expensive!\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.farmplot-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.farmplot","text":"farmplot(position, model)\n\nReturn the farm plot at this position, or nothing if there is none (utility wrapper).\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.initlandscape-Tuple{String, String}","page":"Simulation","title":"Persephone.initlandscape","text":"initlandscape(landcovermap, farmfieldsmap)\n\nInitialise the model landscape based on the map files specified in the configuration. Returns a matrix of pixels.\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.landcover-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.landcover","text":"landcover(position, model)\n\nReturn the land cover class at this position (utility wrapper).\n\n\n\n\n\n","category":"method"},{"location":"simulation.html#Persephone.updateevents!-Tuple{Agents.AgentBasedModel}","page":"Simulation","title":"Persephone.updateevents!","text":"updateevents!(model)\n\nCycle through the list of events, removing those that have expired.\n\n\n\n\n\n","category":"method"},{"location":"farm.html#Farm-submodel","page":"Farm submodel","title":"Farm submodel","text":"","category":"section"},{"location":"farm.html","page":"Farm submodel","title":"Farm submodel","text":"Eventually, Persephone will include multiple farm-decision submodels. At the moment, we are only working with a very basic mock-up.","category":"page"},{"location":"farm.html#farm.jl","page":"Farm submodel","title":"farm.jl","text":"","category":"section"},{"location":"farm.html","page":"Farm submodel","title":"Farm submodel","text":"This file is responsible for managing the farm module(s).","category":"page"},{"location":"farm.html","page":"Farm submodel","title":"Farm submodel","text":"Modules = [Persephone]\nPages = [\"farm/farm.jl\"]","category":"page"},{"location":"farm.html#Persephone.Farmer","page":"Farm submodel","title":"Persephone.Farmer","text":"Farmer\n\nThis is the agent type for the farm ABM. (Not yet implemented.)\n\n\n\n\n\n","category":"type"},{"location":"farm.html#Persephone.initfarms!-Tuple{Agents.AgentBasedModel}","page":"Farm submodel","title":"Persephone.initfarms!","text":"initfarms!(model)\n\nInitialise the model with a set of farm agents.\n\n\n\n\n\n","category":"method"},{"location":"farm.html#Persephone.stepagent!-Tuple{Farmer, Agents.AgentBasedModel}","page":"Farm submodel","title":"Persephone.stepagent!","text":"stepagent!(farmer, model)\n\nUpdate a farmer by one day.\n\n\n\n\n\n","category":"method"},{"location":"adapting.html#Adapting-Persephone","page":"Adapting Persephone","title":"Adapting Persephone","text":"","category":"section"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"A key development goal of Persephone is to be FAIR: findable, accessible, interoperable, and reusable. We aim to build a model that is both easy to use and easy to adapt to new situations.","category":"page"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"There are multiple ways to adapt Persephone for a new modelling study:","category":"page"},{"location":"adapting.html#Changing-the-parameters","page":"Adapting Persephone","title":"Changing the parameters","text":"","category":"section"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"The simplest way to adapt Persephone is simply by changing the parameters. Copy src/parameters.toml to a new location, adjust it to your needs, and run the model using julia run.jl -c <configfile>.","category":"page"},{"location":"adapting.html#Changing-the-region","page":"Adapting Persephone","title":"Changing the region","text":"","category":"section"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"To apply Persephone to a new region, you need to create new input maps of land cover and farmplots. How to do so is described here.","category":"page"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"You may also need to change aspects of the farm submodel. This is not yet implemented.","category":"page"},{"location":"adapting.html#Adding-new-animal-species","page":"Adapting Persephone","title":"Adding new animal species","text":"","category":"section"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"To implement a new species to the nature submodel, add a new file to the src/nature/species directory and include it in src/Persephone.jl, as well as adding the name of the species to the nature.targetspecies parameter. In the new file, implement the species using the @species syntax as described here.","category":"page"},{"location":"adapting.html#Adding-new-crop-species","page":"Adapting Persephone","title":"Adding new crop species","text":"","category":"section"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"Crop growth is not yet implemented.","category":"page"},{"location":"adapting.html#Adding-new-farmer-behaviour","page":"Adapting Persephone","title":"Adding new farmer behaviour","text":"","category":"section"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"Farmer behaviour is not yet implemented.","category":"page"},{"location":"adapting.html#Adding-a-new-submodel","page":"Adapting Persephone","title":"Adding a new submodel","text":"","category":"section"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"To add a new submodel in addition to the existing ones (nature, crop, and farm), you need to familiarise yourself with the software architecture. In particular, you need to understand how initialisation and scheduling works in src/core/simulation.jl, and what information is stored in the model object.","category":"page"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"If you want to add a new agent type, use Agents.jl's @agent macro. (But be aware that Persephone already has three agent types and you may encounter performance problems.) Having implemented the new agent type, add it to the model objects type definition and scheduler, and write an initialisation function and a stepagent! function. (See initmodel and stepsimulation! for details.)","category":"page"},{"location":"adapting.html#Linking-to-another-model","page":"Adapting Persephone","title":"Linking to another model","text":"","category":"section"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"Persephone can also be used as a software library and be called from another application. For this purpose, it is set up as a Julia package, with a module exporting various model functions, types, and macros (see src/Persephone.jl). Of particular interest are the functions simulate (set up and run a complete simulation based on a config file), initialise (create one or more model objects from a config file), simulate! (do a simulation run with an existing model object), and stepsimulation! (update a model object by one time step).","category":"page"},{"location":"adapting.html","page":"Adapting Persephone","title":"Adapting Persephone","text":"To interface with Julia from another language, see the Julia docs here and here.","category":"page"},{"location":"odd.html#Overview,-Design,-Details-(ODD)","page":"Overview, Design, Details (ODD)","title":"Overview, Design, Details (ODD)","text":"","category":"section"},{"location":"odd.html","page":"Overview, Design, Details (ODD)","title":"Overview, Design, Details (ODD)","text":"TODO","category":"page"},{"location":"gis.html#GIS-data","page":"GIS data","title":"GIS data","text":"","category":"section"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"Persephone currently requires two separate map input files: one for land cover, the other for field geometry. This documents describe how to obtain and process the data needed for each of these.","category":"page"},{"location":"gis.html#Land-cover-maps","page":"GIS data","title":"Land cover maps","text":"","category":"section"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"Land cover maps for Germany at 10m resolution can be obtained from Mundialis. These are generated annually from Sentinel data and comprise the following land cover classes:","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"10: forest\n20: low vegetation\n30: water\n40: built-up\n50: bare soil\n60: agriculture","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"To create a Persephone map input file, you need to crop the national Mundialis map to the extent that you want to simulate (suggestion: approx. 10x10km is a reasonable size).","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"To do so, download the Mundialis map and import it into QGIS. Then create a new vector layer and create a rectangle feature to delimit the extent of your region. Then go to Raster -> Extraction -> Clip Raster by Extent. Select the Mundialis map as the input layer, set the clipping extent by choosing your region vector layer under Calculate from Layer and specify the output file name before clicking Run. This will generate a TIF file that you can pass to Persephone as the landcovermap parameter.","category":"page"},{"location":"gis.html#Field-ID-maps","page":"GIS data","title":"Field ID maps","text":"","category":"section"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"In addition to the land cover data explained above, Persephone also needs information about agricultural field boundaries in order to assign these to the farming agents. Unfortunately, getting this is rather more complicated.","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"In the EU, every country runs a Land Parcel Information System (LPIS) to administer CAP payments. In Germany, this is called InVeKoS and is run by the Länder. For example, you can view and download the InVeKoS data for Thüringen here. This gives you a vector layer which can be loaded into QGIS. However, it needs to be converted to a raster layer and cropped to your region extent before it can be used in Persephone.","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"The first thing to do is to make sure that the vector layer has a numeric (!) field with a unique identifier for each field block (check the attribute table). The Thüringen data has the FBI (\"Feldblockident\") field, but this is a string value and therefore not usable by the rasteriser. So, we set the vector layer to edit mode, open the field calculator, enter the information for a new field (call it \"FID\" and set it to a 32-bit integer), and enter @row_number in the expression field. Then save the layer and close the calculator.","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"Secondly, you need to filter out all non-field/non-grassland plot types. (LPIS also has data on forests and various landscape elements that are not relevant to our use case.) Assuming you're working with the Thüringen InVeKoS data (other data sets may have a different structure), right-click on the layer name in QGIS' layer overview and click on \"Filter...\". Then, enter this expression in the query builder: \"BNK\" = 'AL' OR \"BNK\" = 'GL' and click \"OK\". This will select only field and grassland plots.","category":"page"},{"location":"gis.html","page":"GIS data","title":"GIS data","text":"Next, open the rasteriser (Raster -> Conversion -> Rasterize). Select your FID field as the \"Field to use for a burn-in value\", and your land cover map (as created above - this ensures the two layers match) as the output extent. Make sure the \"fixed value to burn\" is \"Not set\". Then choose \"Georeferenced units\" as the \"Out raster size units\" and set horizontal and vertical resolution to 10.0. In the advanced parameters, set the output data type to UInt32. Finally, enter an output file name and run. The resulting TIF file can be passed to Persephone as the farmfieldmap parameter.","category":"page"},{"location":"crops.html#Crop-submodel","page":"Crop submodel","title":"Crop submodel","text":"","category":"section"},{"location":"crops.html","page":"Crop submodel","title":"Crop submodel","text":"Eventually, Persephone will include a full-blown crop-growth model (an adaptation of AquaCrop, created by the FAO). At the moment, we are only working with a very basic mock-up.","category":"page"},{"location":"crops.html#crops.jl","page":"Crop submodel","title":"crops.jl","text":"","category":"section"},{"location":"crops.html","page":"Crop submodel","title":"Crop submodel","text":"This includes the types and functions needed for all crop growth model, which are also referenced by the other submodels.","category":"page"},{"location":"crops.html","page":"Crop submodel","title":"Crop submodel","text":"Modules = [Persephone]\nPages = [\"crop/crops.jl\"]","category":"page"},{"location":"crops.html#Persephone.CropType","page":"Crop submodel","title":"Persephone.CropType","text":"The crop types simulated by the model\n\n\n\n\n\n","category":"type"},{"location":"crops.html#Persephone.FarmPlot","page":"Crop submodel","title":"Persephone.FarmPlot","text":"FarmPlot\n\nThis represents one field, i.e. a collection of pixels with the same management. This is the spatial unit with which the crop growth model and the farm model work.\n\n\n\n\n\n","category":"type"},{"location":"crops.html#Persephone.averagefieldsize-Tuple{Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.averagefieldsize","text":"averagefieldsize(model)\n\nCalculate the average field size in hectares for the model landscape.\n\n\n\n\n\n","category":"method"},{"location":"crops.html#Persephone.cropheight-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.cropheight","text":"cropheight(model, position)\n\nReturn the height of the crop at this position, or nothing if there is no crop here (utility wrapper).\n\n\n\n\n\n","category":"method"},{"location":"crops.html#Persephone.croptype-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.croptype","text":"croptype(model, position)\n\nReturn the crop at this position, or nothing if there is no crop here (utility wrapper).\n\n\n\n\n\n","category":"method"},{"location":"crops.html#Persephone.initfields!-Tuple{Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.initfields!","text":"initfields!(model)\n\nInitialise the model with its farm plots.\n\n\n\n\n\n","category":"method"},{"location":"crops.html#Persephone.stepagent!-Tuple{FarmPlot, Agents.AgentBasedModel}","page":"Crop submodel","title":"Persephone.stepagent!","text":"stepagent!(farmplot, model)\n\nUpdate a farm plot by one day.\n\n\n\n\n\n","category":"method"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"CurrentModule = Persephone","category":"page"},{"location":"index.html#Introduction","page":"Introduction","title":"Introduction","text":"","category":"section"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"Persephone is an agent-based, socio-economic-ecological model of agricultural landscapes in Europe under the Common Agricultural Policy (CAP).","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"It's aim is to investigate how policy affects farmer decision-making, and how this in turn affects various animal species. It includes a farm submodel, a crop-growth submodel, and an ecological submodels.","category":"page"},{"location":"index.html#Running-the-model","page":"Introduction","title":"Running the model","text":"","category":"section"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"To run a single experiment, execute:","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"julia run.jl -c <CONFIG>","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"Other commandline arguments are:","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"usage: run.jl [-c CONFIGFILE] [-s SEED] [-o OUTDIR] [-l LOGLEVEL] \n [--version] [-h]\n\noptional arguments:\n -c, --configfile CONFIGFILE\n name of the configuration file\n -s, --seed SEED inital random seed (type: Int64)\n -o, --outdir OUTDIR location of the output directory\n -l, --loglevel LOGLEVEL\n verbosity: \"debug\", \"info\", or \"quiet\"\n --version show version information and exit\n -h, --help show this help message and exit","category":"page"},{"location":"index.html#Model-input","page":"Introduction","title":"Model input","text":"","category":"section"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"Persephone requires three input files: a configuration file and two map files. How to generate the map files is documented elsewhere. The configuration file defines parameter values and looks like this (see src/parameters.toml for a complete list of parameters):","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"### Persephone - a socio-economic-ecological model of European agricultural landscapes.\n###\n### This is the default configuration file for Persephone, containing all model parameters.\n### The syntax is described here: https://toml.io/en/\n\n[core]\nconfigfile = \"src/parameters.toml\" # location of the configuration file\nlandcovermap = \"data/landcover_jena.tif\" # location of the landcover map\nfarmfieldsmap = \"data/fields_jena.tif\" # location of the field geometry map\noutdir = \"results\" # location and name of the output folder\noverwrite = \"ask\" # overwrite the output directory? (true/false/\"ask\")\nloglevel = \"debug\" # verbosity level: \"debug\", \"info\", \"warn\"\nprocessors = 2 # number of processors to use on parallel runs\nseed = 2 # seed value for the RNG (0 -> random value)\n# dates to start and end the simulation\nstartdate = 2022-01-01\nenddate = 2022-12-31\n\n[farm]\nfarmmodel = \"FieldManager\" # which version of the farm model to use (not yet implemented)\n\n[nature]\ntargetspecies = [\"Wolpertinger\", \"Wyvern\"] # list of target species to simulate\npopoutfreq = \"daily\" # output frequency population-level data, daily/monthly/yearly/end/never\nindoutfreq = \"end\" # output frequency individual-level data, daily/monthly/yearly/end/never\n\t\n[crop]\ncropmodel = \"linear\" # crop growth model to use, \"linear\" or \"aquacrop\" (not yet implemented)","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"tip: Parameter scanning\nYou can set any parameter to a list of different values, e.g. seed = [1,2,3]. Persephone will then set up and run multiple simulations, one for every possible combination of parameters that you entered (i.e. do a full-factorial simulation experiment).","category":"page"},{"location":"index.html","page":"Introduction","title":"Introduction","text":"Last updated: 2023-02-07 (commit 600bbd3) ","category":"page"}] } diff --git a/docs/build/simulation.html b/docs/build/simulation.html index ebbdf05..2e4695e 100644 --- a/docs/build/simulation.html +++ b/docs/build/simulation.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Simulation · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li class="is-active"><a class="tocitem" href="simulation.html">Simulation</a><ul class="internal"><li><a class="tocitem" href="#simulation.jl"><span>simulation.jl</span></a></li><li><a class="tocitem" href="#landscape.jl"><span>landscape.jl</span></a></li></ul></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Core</a></li><li class="is-active"><a href="simulation.html">Simulation</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="simulation.html">Simulation</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/simulation.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Simulation"><a class="docs-heading-anchor" href="#Simulation">Simulation</a><a id="Simulation-1"></a><a class="docs-heading-anchor-permalink" href="#Simulation" title="Permalink"></a></h1><p>The <code>core</code> directory holds source files that are important for all submodels, including scheduling, landscape, and input/output functions.</p><h2 id="simulation.jl"><a class="docs-heading-anchor" href="#simulation.jl">simulation.jl</a><a id="simulation.jl-1"></a><a class="docs-heading-anchor-permalink" href="#simulation.jl" title="Permalink"></a></h2><p>This file includes the basal functions for initialising and running simulations.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.finalise!-Tuple{Agents.AgentBasedModel}" href="#Persephone.finalise!-Tuple{Agents.AgentBasedModel}"><code>Persephone.finalise!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">finalise!(model)</code></pre><p>Wrap up the simulation. Currently doesn't do anything except print some information.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L136-L140">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initialise" href="#Persephone.initialise"><code>Persephone.initialise</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">initialise(config=PARAMFILE, seed=nothing)</code></pre><p>Initialise the model: read in parameters, create the output data directory, and instantiate the AgentBasedModel object(s). Optionally allows specifying the configuration file and overriding the <code>seed</code> parameter. This returns a single model object, unless the config file contains multiple values for one or more parameters, in which case it creates a full-factorial simulation experiment and returns a vector of model objects.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L34-L43">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initmodel-Tuple{Dict{String, Any}}" href="#Persephone.initmodel-Tuple{Dict{String, Any}}"><code>Persephone.initmodel</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initmodel(settings)</code></pre><p>Initialise a model object using a ready-made settings dict. This is a helper function for <code>initialise()</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L54-L59">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.paramscan-Tuple{Dict{String, Any}, Vector{String}}" href="#Persephone.paramscan-Tuple{Dict{String, Any}, Vector{String}}"><code>Persephone.paramscan</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">paramscan(settings)</code></pre><p>Create a list of settings dicts, covering all possible parameter combinations given by the input settings (i.e. a full-factorial experiment). This is a helper function for <code>initialise()</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L85-L91">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.simulate" href="#Persephone.simulate"><code>Persephone.simulate</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">simulate(config=PARAMFILE, seed=nothing)</code></pre><p>Initialise one or more model objects and carry out a full simulation experiment, optionally specifying a configuration file and a seed for the RNG.</p><p>This is the default way to run a Persephone simulation.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L8-L15">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.simulate!-Tuple{Agents.AgentBasedModel}" href="#Persephone.simulate!-Tuple{Agents.AgentBasedModel}"><code>Persephone.simulate!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">simulate!(model)</code></pre><p>Carry out a complete simulation run using a pre-initialised model object.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L23-L27">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.stepsimulation!-Tuple{Agents.AgentBasedModel}" href="#Persephone.stepsimulation!-Tuple{Agents.AgentBasedModel}"><code>Persephone.stepsimulation!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">stepsimulation!(model)</code></pre><p>Execute one update of the model.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L113-L117">source</a></section></article><h2 id="landscape.jl"><a class="docs-heading-anchor" href="#landscape.jl">landscape.jl</a><a id="landscape.jl-1"></a><a class="docs-heading-anchor-permalink" href="#landscape.jl" title="Permalink"></a></h2><p>This file manages the landscape maps that underlie the model.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.EventType" href="#Persephone.EventType"><code>Persephone.EventType</code></a> — <span class="docstring-category">Type</span></header><section><div><p>The types of landscape event that can be simulated</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L10">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.FarmEvent" href="#Persephone.FarmEvent"><code>Persephone.FarmEvent</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">FarmEvent</code></pre><p>A data structure to define a landscape event, giving its type, spatial extent, and duration.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L26-L31">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.LandCover" href="#Persephone.LandCover"><code>Persephone.LandCover</code></a> — <span class="docstring-category">Type</span></header><section><div><p>The land cover classes encoded in the Mundialis Sentinel data.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L6">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.Pixel" href="#Persephone.Pixel"><code>Persephone.Pixel</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">Pixel</code></pre><p>A pixel is a simple data structure to combine land use and ownership information in a single object. The model landscape consists of a matrix of pixels. (Note: further landscape information may be added here in future.)</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L13-L19">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.createevent!" href="#Persephone.createevent!"><code>Persephone.createevent!</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">createevent!(model, pixels, name, duration=1)</code></pre><p>Add a farm event to the specified pixels (a vector of position tuples) for a given duration.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L87-L91">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Function}" href="#Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Function}"><code>Persephone.distanceto</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">distanceto(pos, model, habitatdescriptor)</code></pre><p>Calculate the distance from the given location to the closest location matching the habitat descriptor function. Caution: can be computationally expensive!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L120-L125">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Persephone.LandCover}" href="#Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Persephone.LandCover}"><code>Persephone.distanceto</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">distanceto(pos, model, habitattype)</code></pre><p>Calculate the distance from the given location to the closest habitat of the specified type. Caution: can be computationally expensive!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L154-L159">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.distancetoedge-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.distancetoedge-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.distancetoedge</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">distancetoedge(pos, model)</code></pre><p>Calculate the distance from the given location to the closest neighbouring habitat. Caution: can be computationally expensive!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L165-L170">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.farmplot-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.farmplot-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.farmplot</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">farmplot(position, model)</code></pre><p>Return the farm plot at this position, or nothing if there is none (utility wrapper).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L109-L113">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initlandscape-Tuple{String, String}" href="#Persephone.initlandscape-Tuple{String, String}"><code>Persephone.initlandscape</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initlandscape(landcovermap, farmfieldsmap)</code></pre><p>Initialise the model landscape based on the map files specified in the configuration. Returns a matrix of pixels.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L38-L43">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.landcover-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.landcover-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.landcover</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">landcover(position, model)</code></pre><p>Return the land cover class at this position (utility wrapper).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L100-L104">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.updateevents!-Tuple{Agents.AgentBasedModel}" href="#Persephone.updateevents!-Tuple{Agents.AgentBasedModel}"><code>Persephone.updateevents!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">updateevents!(model)</code></pre><p>Cycle through the list of events, removing those that have expired.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L66-L70">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="species-dsl.html">« Defining new species</a><a class="docs-footer-nextpage" href="io.html">Input, Output, and Settings »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Simulation · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li class="is-active"><a class="tocitem" href="simulation.html">Simulation</a><ul class="internal"><li><a class="tocitem" href="#simulation.jl"><span>simulation.jl</span></a></li><li><a class="tocitem" href="#landscape.jl"><span>landscape.jl</span></a></li></ul></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Core</a></li><li class="is-active"><a href="simulation.html">Simulation</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="simulation.html">Simulation</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/simulation.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Simulation"><a class="docs-heading-anchor" href="#Simulation">Simulation</a><a id="Simulation-1"></a><a class="docs-heading-anchor-permalink" href="#Simulation" title="Permalink"></a></h1><p>The <code>core</code> directory holds source files that are important for all submodels, including scheduling, landscape, and input/output functions.</p><h2 id="simulation.jl"><a class="docs-heading-anchor" href="#simulation.jl">simulation.jl</a><a id="simulation.jl-1"></a><a class="docs-heading-anchor-permalink" href="#simulation.jl" title="Permalink"></a></h2><p>This file includes the basal functions for initialising and running simulations.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.finalise!-Tuple{Agents.AgentBasedModel}" href="#Persephone.finalise!-Tuple{Agents.AgentBasedModel}"><code>Persephone.finalise!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">finalise!(model)</code></pre><p>Wrap up the simulation. Currently doesn't do anything except print some information.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L136-L140">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initialise" href="#Persephone.initialise"><code>Persephone.initialise</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">initialise(config=PARAMFILE, seed=nothing)</code></pre><p>Initialise the model: read in parameters, create the output data directory, and instantiate the AgentBasedModel object(s). Optionally allows specifying the configuration file and overriding the <code>seed</code> parameter. This returns a single model object, unless the config file contains multiple values for one or more parameters, in which case it creates a full-factorial simulation experiment and returns a vector of model objects.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L34-L43">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initmodel-Tuple{Dict{String, Any}}" href="#Persephone.initmodel-Tuple{Dict{String, Any}}"><code>Persephone.initmodel</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initmodel(settings)</code></pre><p>Initialise a model object using a ready-made settings dict. This is a helper function for <code>initialise()</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L54-L59">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.paramscan-Tuple{Dict{String, Any}, Vector{String}}" href="#Persephone.paramscan-Tuple{Dict{String, Any}, Vector{String}}"><code>Persephone.paramscan</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">paramscan(settings)</code></pre><p>Create a list of settings dicts, covering all possible parameter combinations given by the input settings (i.e. a full-factorial experiment). This is a helper function for <code>initialise()</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L85-L91">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.simulate" href="#Persephone.simulate"><code>Persephone.simulate</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">simulate(config=PARAMFILE, seed=nothing)</code></pre><p>Initialise one or more model objects and carry out a full simulation experiment, optionally specifying a configuration file and a seed for the RNG.</p><p>This is the default way to run a Persephone simulation.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L8-L15">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.simulate!-Tuple{Agents.AgentBasedModel}" href="#Persephone.simulate!-Tuple{Agents.AgentBasedModel}"><code>Persephone.simulate!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">simulate!(model)</code></pre><p>Carry out a complete simulation run using a pre-initialised model object.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L23-L27">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.stepsimulation!-Tuple{Agents.AgentBasedModel}" href="#Persephone.stepsimulation!-Tuple{Agents.AgentBasedModel}"><code>Persephone.stepsimulation!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">stepsimulation!(model)</code></pre><p>Execute one update of the model.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/simulation.jl#L113-L117">source</a></section></article><h2 id="landscape.jl"><a class="docs-heading-anchor" href="#landscape.jl">landscape.jl</a><a id="landscape.jl-1"></a><a class="docs-heading-anchor-permalink" href="#landscape.jl" title="Permalink"></a></h2><p>This file manages the landscape maps that underlie the model.</p><article class="docstring"><header><a class="docstring-binding" id="Persephone.EventType" href="#Persephone.EventType"><code>Persephone.EventType</code></a> — <span class="docstring-category">Type</span></header><section><div><p>The types of landscape event that can be simulated</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L10">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.FarmEvent" href="#Persephone.FarmEvent"><code>Persephone.FarmEvent</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">FarmEvent</code></pre><p>A data structure to define a landscape event, giving its type, spatial extent, and duration.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L26-L31">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.LandCover" href="#Persephone.LandCover"><code>Persephone.LandCover</code></a> — <span class="docstring-category">Type</span></header><section><div><p>The land cover classes encoded in the Mundialis Sentinel data.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L6">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.Pixel" href="#Persephone.Pixel"><code>Persephone.Pixel</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">Pixel</code></pre><p>A pixel is a simple data structure to combine land use and ownership information in a single object. The model landscape consists of a matrix of pixels. (Note: further landscape information may be added here in future.)</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L13-L19">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.createevent!" href="#Persephone.createevent!"><code>Persephone.createevent!</code></a> — <span class="docstring-category">Function</span></header><section><div><pre><code class="language-julia hljs">createevent!(model, pixels, name, duration=1)</code></pre><p>Add a farm event to the specified pixels (a vector of position tuples) for a given duration.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L87-L91">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Function}" href="#Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Function}"><code>Persephone.distanceto</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">distanceto(pos, model, habitatdescriptor)</code></pre><p>Calculate the distance from the given location to the closest location matching the habitat descriptor function. Caution: can be computationally expensive!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L120-L125">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Persephone.LandCover}" href="#Persephone.distanceto-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel, Persephone.LandCover}"><code>Persephone.distanceto</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">distanceto(pos, model, habitattype)</code></pre><p>Calculate the distance from the given location to the closest habitat of the specified type. Caution: can be computationally expensive!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L154-L159">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.distancetoedge-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.distancetoedge-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.distancetoedge</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">distancetoedge(pos, model)</code></pre><p>Calculate the distance from the given location to the closest neighbouring habitat. Caution: can be computationally expensive!</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L165-L170">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.farmplot-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.farmplot-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.farmplot</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">farmplot(position, model)</code></pre><p>Return the farm plot at this position, or nothing if there is none (utility wrapper).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L109-L113">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.initlandscape-Tuple{String, String}" href="#Persephone.initlandscape-Tuple{String, String}"><code>Persephone.initlandscape</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">initlandscape(landcovermap, farmfieldsmap)</code></pre><p>Initialise the model landscape based on the map files specified in the configuration. Returns a matrix of pixels.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L38-L43">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.landcover-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}" href="#Persephone.landcover-Tuple{Tuple{Int64, Int64}, Agents.AgentBasedModel}"><code>Persephone.landcover</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">landcover(position, model)</code></pre><p>Return the land cover class at this position (utility wrapper).</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L100-L104">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="Persephone.updateevents!-Tuple{Agents.AgentBasedModel}" href="#Persephone.updateevents!-Tuple{Agents.AgentBasedModel}"><code>Persephone.updateevents!</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">updateevents!(model)</code></pre><p>Cycle through the list of events, removing those that have expired.</p></div><a class="docs-sourcelink" target="_blank" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//src/core/landscape.jl#L66-L70">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="species-dsl.html">« Defining new species</a><a class="docs-footer-nextpage" href="io.html">Input, Output, and Settings »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/species-dsl.html b/docs/build/species-dsl.html index 33c851e..c4fafc2 100644 --- a/docs/build/species-dsl.html +++ b/docs/build/species-dsl.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Defining new species · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li class="is-active"><a class="tocitem" href="species-dsl.html">Defining new species</a><ul class="internal"><li><a class="tocitem" href="#The-Persephone-species-DSL"><span>The Persephone species DSL</span></a></li><li><a class="tocitem" href="#Implementation-details"><span>Implementation details</span></a></li></ul></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Developing</a></li><li class="is-active"><a href="species-dsl.html">Defining new species</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="species-dsl.html">Defining new species</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/species-dsl.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Defining-new-species"><a class="docs-heading-anchor" href="#Defining-new-species">Defining new species</a><a id="Defining-new-species-1"></a><a class="docs-heading-anchor-permalink" href="#Defining-new-species" title="Permalink"></a></h1><h2 id="The-Persephone-species-DSL"><a class="docs-heading-anchor" href="#The-Persephone-species-DSL">The Persephone species DSL</a><a id="The-Persephone-species-DSL-1"></a><a class="docs-heading-anchor-permalink" href="#The-Persephone-species-DSL" title="Permalink"></a></h2><p>In order to make implementing new species as easy as possible, Persephone includes a <a href="https://doi.org/10.1016/j.ecoinf.2015.02.005">domain-specific language (DSL)</a> built from a collection of macros and functions.</p><p>Here is an example of what this looks like, using a hypothetical mermaid species:</p><pre><code class="language-julia hljs">@species Mermaid begin +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Defining new species · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li class="is-active"><a class="tocitem" href="species-dsl.html">Defining new species</a><ul class="internal"><li><a class="tocitem" href="#The-Persephone-species-DSL"><span>The Persephone species DSL</span></a></li><li><a class="tocitem" href="#Implementation-details"><span>Implementation details</span></a></li></ul></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li><a class="tocitem" href="species.html">Species</a></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Developing</a></li><li class="is-active"><a href="species-dsl.html">Defining new species</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="species-dsl.html">Defining new species</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/species-dsl.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Defining-new-species"><a class="docs-heading-anchor" href="#Defining-new-species">Defining new species</a><a id="Defining-new-species-1"></a><a class="docs-heading-anchor-permalink" href="#Defining-new-species" title="Permalink"></a></h1><h2 id="The-Persephone-species-DSL"><a class="docs-heading-anchor" href="#The-Persephone-species-DSL">The Persephone species DSL</a><a id="The-Persephone-species-DSL-1"></a><a class="docs-heading-anchor-permalink" href="#The-Persephone-species-DSL" title="Permalink"></a></h2><p>In order to make implementing new species as easy as possible, Persephone includes a <a href="https://doi.org/10.1016/j.ecoinf.2015.02.005">domain-specific language</a> (DSL) built from a collection of macros and functions.</p><p>Here is an example of what this looks like, using a hypothetical mermaid species:</p><pre><code class="language-julia hljs">@species Mermaid begin ageofmaturity = 2 pesticidemortality = 1.0 @initialise(@habitat(@landcover() == water), pairs=true) @@ -20,4 +20,4 @@ @debug "$(animalid(animal)) is experiencing drought with $n neighbour(s)." @respond sowing @setphase(life) end -end</code></pre><p>The two most important macros are <a href="nature.html#Persephone.@species-Tuple{Any, Any}"><code>@species</code></a> and <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a>, followed by <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a>, <a href="nature.html#Persephone.@trait-Tuple{Any}"><code>@trait</code></a>, <a href="nature.html#Persephone.@respond-Tuple{Any, Any}"><code>@respond</code></a>, and <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>. Other macros provide convenience wrappers for common functions. (See <code>src/nature/nature.jl</code> for details.)</p><p>The top-level macro is <a href="nature.html#Persephone.@species-Tuple{Any, Any}"><code>@species</code></a>. This takes two arguments: a species name and a definition block (enclosed in <code>begin</code> and <code>end</code> tags). At the start of the definition block, species-specific variables can be defined that should be available throughout a species' lifetime. Code in this section has access to the <code>model</code> object and can thus reference the current model state. In this section, the user also has to call the <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a> macro. This wraps the <a href="@ref"><code>initpopulation</code></a> function, and takes a habitat descriptor (see <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a> below) and several options to specify how the species' population should be distributed in the landscape during model initialisation.</p><p>Following this section, each species must define one or more <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> blocks. The concept behind this is that species show different behaviours at different phases of their lifecycle. Each <code>@phase</code> block defines the behaviour in one of these phases. (Technically, it defines a function that will be called daily, so long as the species' <code>phase</code> variable is set to the name of this phase.) Code in this section has access to the <code>model</code> object as well as an <code>animal</code> object, which is the currently active animal agent. Properties of the <code>animal</code> agent, regardless of whether they were defined by the user or by Persephone, can be accessed using the <a href="nature.html#Persephone.@trait-Tuple{Any}"><code>@trait</code></a> macro. Within a phase block, <a href="nature.html#Persephone.@respond-Tuple{Any, Any}"><code>@respond</code></a> can be used to define the species' response to a <a href="simulation.html#Persephone.FarmEvent"><code>FarmEvent</code></a> that affects the species' current location, while a variety of other macros provide wrappers to ecological process functions from <code>src/nature/populations.jl</code>.</p><p>Another important macro is <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>. This defines a "habitat descriptor", i.e. a predicate function that tests whether or not a given landscape pixel is suitable for a specified purpose. Such habitat descriptors are used as arguments to various functions, for example for population initialisation or movement. The argument to <code>@habitat</code> consists of a logical expression, which has access to the animal's current position (the <code>pos</code> tuple variable) and the <code>model</code>. Various macros are available to easily reference information about the current location, such as <a href="nature.html#Persephone.@landcover-Tuple{}"><code>@landcover</code></a> or <a href="nature.html#Persephone.@distancetoedge-Tuple{}"><code>@distancetoedge</code></a>.</p><h2 id="Implementation-details"><a class="docs-heading-anchor" href="#Implementation-details">Implementation details</a><a id="Implementation-details-1"></a><a class="docs-heading-anchor-permalink" href="#Implementation-details" title="Permalink"></a></h2><p>Due to a known <a href="https://juliadynamics.github.io/Agents.jl/stable/performance_tips/#Avoid-Unions-of-many-different-agent-types-(temporary!)-1">performance problem</a> with multi-agent models, the underlying implementation of species is rather complicated (see <code>src/nature/nature.jl</code> for details.)</p><p>Rather than creating a new type/struct for each species, all <a href="@ref">Animal</a> agents have the same type. Instead, they are differentiated by a <code>traits</code> dict, which stores both species-specific parameters and run-time variables. Note that due to a redefinition of the <code>getproperty()/setproperty!()</code> methods, variables from the trait dict can be accessed and modified just like normal struct fields (i.e. although <code>phase</code> is defined in the dict, not the struct, <code>animal.phase = "newphase"</code> works just fine - one does not have to use <code>animal.traits["phase"] = "newphase"</code>.)</p><p>Under the hood, the <a href="nature.html#Persephone.@species-Tuple{Any, Any}"><code>@species</code></a> macro generates a function (with the name of the species), which in turn creates the trait dict when called. Thus, adding a new animal agent to the model involves instantiating an <a href="nature.html#Persephone.Animal"><code>Animal</code></a> object, then calling the relevant species function and attaching the returned dict to the agent object.</p><p>Similarly, the <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> macro too works by defining a new function, which is stored in the species' trait dict. These functions take an animal object and the model object as input, and define what the species does during its daily update.</p><p>Once again, <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a> creates a function that takes <code>model</code> and <code>pos</code> as input and returns a boolean response. Functions that require a habitat descriptor thus take in this (anonymous) function and call it internally.</p><p>Finally, the <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a> macro is a wrapper around <a href="@ref"><code>initpopulation</code></a>, which (yet again) creates a function that specifies how a species' population is to be initialised at the beginning of a simulation run. This function is stored in the species trait dict and accessed during model setup.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="gis.html">« GIS data</a><a class="docs-footer-nextpage" href="simulation.html">Simulation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +end</code></pre><p>The two most important macros are <a href="nature.html#Persephone.@species-Tuple{Any, Any}"><code>@species</code></a> and <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a>, followed by <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a>, <a href="nature.html#Persephone.@trait-Tuple{Any}"><code>@trait</code></a>, <a href="nature.html#Persephone.@respond-Tuple{Any, Any}"><code>@respond</code></a>, and <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>. Other macros provide convenience wrappers for common functions. (See <code>src/nature/nature.jl</code> for details.)</p><p>The top-level macro is <a href="nature.html#Persephone.@species-Tuple{Any, Any}"><code>@species</code></a>. This takes two arguments: a species name and a definition block (enclosed in <code>begin</code> and <code>end</code> tags). At the start of the definition block, species-specific variables can be defined that should be available throughout a species' lifetime. Code in this section has access to the <code>model</code> object and can thus reference the current model state. In this section, the user also has to call the <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a> macro. This wraps the <a href="@ref"><code>initpopulation</code></a> function, and takes a habitat descriptor (see <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a> below) and several options to specify how the species' population should be distributed in the landscape during model initialisation.</p><p>Following this section, each species must define one or more <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> blocks. The concept behind this is that species show different behaviours at different phases of their lifecycle. Each <code>@phase</code> block defines the behaviour in one of these phases. (Technically, it defines a function that will be called daily, so long as the species' <code>phase</code> variable is set to the name of this phase.) Code in this section has access to the <code>model</code> object as well as an <code>animal</code> object, which is the currently active animal agent. Properties of the <code>animal</code> agent, regardless of whether they were defined by the user or by Persephone, can be accessed using the <a href="nature.html#Persephone.@trait-Tuple{Any}"><code>@trait</code></a> macro. Within a phase block, <a href="nature.html#Persephone.@respond-Tuple{Any, Any}"><code>@respond</code></a> can be used to define the species' response to a <a href="simulation.html#Persephone.FarmEvent"><code>FarmEvent</code></a> that affects the species' current location, while a variety of other macros provide wrappers to ecological process functions from <code>src/nature/populations.jl</code>.</p><p>Another important macro is <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a>. This defines a "habitat descriptor", i.e. a predicate function that tests whether or not a given landscape pixel is suitable for a specified purpose. Such habitat descriptors are used as arguments to various functions, for example for population initialisation or movement. The argument to <code>@habitat</code> consists of a logical expression, which has access to the animal's current position (the <code>pos</code> tuple variable) and the <code>model</code>. Various macros are available to easily reference information about the current location, such as <a href="nature.html#Persephone.@landcover-Tuple{}"><code>@landcover</code></a> or <a href="nature.html#Persephone.@distancetoedge-Tuple{}"><code>@distancetoedge</code></a>.</p><h2 id="Implementation-details"><a class="docs-heading-anchor" href="#Implementation-details">Implementation details</a><a id="Implementation-details-1"></a><a class="docs-heading-anchor-permalink" href="#Implementation-details" title="Permalink"></a></h2><p>Due to a known <a href="https://juliadynamics.github.io/Agents.jl/stable/performance_tips/#Avoid-Unions-of-many-different-agent-types-(temporary!)-1">performance problem</a> with multi-agent models, the underlying implementation of species is rather complicated (see <code>src/nature/nature.jl</code> for details.)</p><p>Rather than creating a new type/struct for each species, all <a href="@ref">Animal</a> agents have the same type. Instead, they are differentiated by a <code>traits</code> dict, which stores both species-specific parameters and run-time variables. Note that due to a redefinition of the <code>getproperty()/setproperty!()</code> methods, variables from the trait dict can be accessed and modified just like normal struct fields (i.e. although <code>phase</code> is defined in the dict, not the struct, <code>animal.phase = "newphase"</code> works just fine - one does not have to use <code>animal.traits["phase"] = "newphase"</code>.)</p><p>Under the hood, the <a href="nature.html#Persephone.@species-Tuple{Any, Any}"><code>@species</code></a> macro generates a function (with the name of the species), which in turn creates the trait dict when called. Thus, adding a new animal agent to the model involves instantiating an <a href="nature.html#Persephone.Animal"><code>Animal</code></a> object, then calling the relevant species function and attaching the returned dict to the agent object.</p><p>Similarly, the <a href="nature.html#Persephone.@phase-Tuple{Any, Any}"><code>@phase</code></a> macro too works by defining a new function, which is stored in the species' trait dict. These functions take an animal object and the model object as input, and define what the species does during its daily update.</p><p>Once again, <a href="nature.html#Persephone.@habitat-Tuple{Any}"><code>@habitat</code></a> creates a function that takes <code>model</code> and <code>pos</code> as input and returns a boolean response. Functions that require a habitat descriptor thus take in this (anonymous) function and call it internally.</p><p>Finally, the <a href="nature.html#Persephone.@initialise-Tuple{Any, Vararg{Any}}"><code>@initialise</code></a> macro is a wrapper around <a href="@ref"><code>initpopulation</code></a>, which (yet again) creates a function that specifies how a species' population is to be initialised at the beginning of a simulation run. This function is stored in the species trait dict and accessed during model setup.</p></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="gis.html">« GIS data</a><a class="docs-footer-nextpage" href="simulation.html">Simulation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/build/species.html b/docs/build/species.html index 7ba9bc4..27c9c42 100644 --- a/docs/build/species.html +++ b/docs/build/species.html @@ -1,2 +1,2 @@ <!DOCTYPE html> -<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Species · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li class="is-active"><a class="tocitem" href="species.html">Species</a><ul class="internal"><li><a class="tocitem" href="#Skylark"><span>Skylark</span></a></li></ul></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Nature</a></li><li class="is-active"><a href="species.html">Species</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="species.html">Species</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/species.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Species"><a class="docs-heading-anchor" href="#Species">Species</a><a id="Species-1"></a><a class="docs-heading-anchor-permalink" href="#Species" title="Permalink"></a></h1><p>The ecological submodel in Persephone simulates a range of species in agricultural landscapes.</p><h2 id="Skylark"><a class="docs-heading-anchor" href="#Skylark">Skylark</a><a id="Skylark-1"></a><a class="docs-heading-anchor-permalink" href="#Skylark" title="Permalink"></a></h2></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="nature.html">« Nature</a><a class="docs-footer-nextpage" href="crops.html">Crop submodel »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Friday 3 February 2023 15:43">Friday 3 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> +<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Species · Persephone</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.045/juliamono.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Persephone logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="index.html">Persephone</a></span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Introduction</a></li><li><a class="tocitem" href="odd.html">Overview, Design, Details (ODD)</a></li><li><span class="tocitem">Developing</span><ul><li><a class="tocitem" href="developing.html">Developing Persephone</a></li><li><a class="tocitem" href="adapting.html">Adapting Persephone</a></li><li><a class="tocitem" href="architecture.html">Source code architecture</a></li><li><a class="tocitem" href="gis.html">GIS data</a></li><li><a class="tocitem" href="species-dsl.html">Defining new species</a></li></ul></li><li><span class="tocitem">Core</span><ul><li><a class="tocitem" href="simulation.html">Simulation</a></li><li><a class="tocitem" href="io.html">Input, Output, and Settings</a></li></ul></li><li><span class="tocitem">Nature</span><ul><li><a class="tocitem" href="nature.html">Nature</a></li><li class="is-active"><a class="tocitem" href="species.html">Species</a><ul class="internal"><li><a class="tocitem" href="#Skylark"><span>Skylark</span></a></li></ul></li></ul></li><li><a class="tocitem" href="crops.html">Crop submodel</a></li><li><a class="tocitem" href="farm.html">Farm submodel</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Nature</a></li><li class="is-active"><a href="species.html">Species</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="species.html">Species</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://git.idiv.de/xo30xoqa/persephone/-/blob/master//docs/src/species.md#" title="Edit source"><span class="docs-icon fa"></span><span class="docs-label is-hidden-touch">Edit source</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Species"><a class="docs-heading-anchor" href="#Species">Species</a><a id="Species-1"></a><a class="docs-heading-anchor-permalink" href="#Species" title="Permalink"></a></h1><p>The ecological submodel in Persephone simulates a range of species in agricultural landscapes.</p><h2 id="Skylark"><a class="docs-heading-anchor" href="#Skylark">Skylark</a><a id="Skylark-1"></a><a class="docs-heading-anchor-permalink" href="#Skylark" title="Permalink"></a></h2></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="nature.html">« Nature</a><a class="docs-footer-nextpage" href="crops.html">Crop submodel »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.23 on <span class="colophon-date" title="Tuesday 7 February 2023 11:21">Tuesday 7 February 2023</span>. Using Julia version 1.9.0-alpha1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html> diff --git a/docs/builddocs.jl b/docs/builddocs.jl index 5367084..9f85aa5 100644 --- a/docs/builddocs.jl +++ b/docs/builddocs.jl @@ -5,7 +5,6 @@ push!(LOAD_PATH, "../src/") using Documenter, Persephone -#FIXME links to source code don't work makedocs(sitename="Persephone", modules = [Persephone], repo = "https://git.idiv.de/xo30xoqa/persephone/-/blob/master/{path}#{line}", @@ -14,6 +13,7 @@ makedocs(sitename="Persephone", "odd.md", "Developing" => [ "developing.md", + "adapting.md", "architecture.md", "gis.md", "species-dsl.md"], diff --git a/docs/src/adapting.md b/docs/src/adapting.md new file mode 100644 index 0000000..7f93932 --- /dev/null +++ b/docs/src/adapting.md @@ -0,0 +1,68 @@ +# Adapting Persephone + +A key development goal of Persephone is to be [FAIR](https://doi.org/10.1515/itit-2019-0040): +*findable, accessible, interoperable, and reusable*. We aim to build a model that is both easy +to use and easy to adapt to new situations. + +There are multiple ways to adapt Persephone for a new modelling study: + +### Changing the parameters + +The simplest way to adapt Persephone is simply by changing the parameters. +Copy `src/parameters.toml` to a new location, adjust it to your needs, and +run the model using `julia run.jl -c <configfile>`. + +### Changing the region + +To apply Persephone to a new region, you need to create new input maps of land +cover and farmplots. How to do so is described [here](gis.html). + +*You may also need to change aspects of the `farm` submodel. This is not yet implemented.* + +### Adding new animal species + +To implement a new species to the `nature` submodel, add a new file to the +`src/nature/species` directory and `include` it in `src/Persephone.jl`, +as well as adding the name of the species to the `nature.targetspecies` +parameter. In the new file, implement the species using the [`@species`](@ref) +syntax as described [here](species-dsl.html). + +### Adding new crop species + +*Crop growth is not yet implemented.* + +### Adding new farmer behaviour + +*Farmer behaviour is not yet implemented.* + +### Adding a new submodel + +To add a new submodel in addition to the existing ones (`nature`, `crop`, and `farm`), +you need to familiarise yourself with the [software architecture](architecture.html). +In particular, you need to understand how initialisation and scheduling works in +[`src/core/simulation.jl`](https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/core/simulation.jl), +and what information is stored in the `model` object. + +If you want to add a new agent type, use Agents.jl's +[`@agent`](https://juliadynamics.github.io/Agents.jl/stable/tutorial/#Agents.@agent) +macro. (But be aware that Persephone already has three agent types and you may encounter +[performance problems](https://juliadynamics.github.io/Agents.jl/stable/performance_tips/#Avoid-Unions-of-many-different-agent-types-(temporary!)-1).) +Having implemented the new agent type, add it to the `model` objects type definition +and scheduler, and write an initialisation function and a `stepagent!` function. +(See [`initmodel`](@ref) and [`stepsimulation!`](@ref) for details.) + +### Linking to another model + +Persephone can also be used as a software library and be called from another application. +For this purpose, it is set up as a [Julia package](https://pkgdocs.julialang.org/v1/), +with a [module](https://docs.julialang.org/en/v1/manual/modules/) exporting various model +functions, types, and macros (see +[`src/Persephone.jl`](https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/Persephone.jl)). +Of particular interest are the functions [`simulate`](@ref) (set up and run a complete simulation +based on a config file), [`initialise`](@ref) (create one or more `model` objects from a +config file), [`simulate!`](@ref) (do a simulation run with an existing `model` object), +and [`stepsimulation!`](@ref) (update a `model` object by one time step). + +To interface with Julia from another language, see the Julia docs +[here](https://docs.julialang.org/en/v1/manual/calling-c-and-fortran-code/) and +[here](https://docs.julialang.org/en/v1/manual/embedding/). diff --git a/docs/src/architecture.md b/docs/src/architecture.md index c2a2eb9..7dccdb9 100644 --- a/docs/src/architecture.md +++ b/docs/src/architecture.md @@ -52,6 +52,13 @@ the `Animal`s in the model landscape. to the `[core]` section of the TOML file, and must therefore be referenced as `@param(core.outdir)`. (See [`src/core/input.jl`](https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/core/input.jl) for details.) + +!!! info "@param and other macros" + As `@param(parameter)` expands to `model.settings["parameter"]`, it can obviously + only be used in a context where the `model` object is actually available. (This is the + case for most functions in Persephone, but not for all.) Similarly, many of the `nature` + macros depend on specific variables being available where they are called, and can + therefore only be used in specific contexts (this is indicated in their documentation). 3. **Output data:** Persephone can output model data into text files with a specified frequency (daily, monthly, yearly, or at the simulation end). Submodels can use @@ -66,12 +73,15 @@ the `Animal`s in the model landscape. 5. **Random numbers and logging:** By default in Julia, the random number generator (RNG) and the system logger are two globally accessible variables. As Persephone needs to avoid - all global data (as this would interfere with parallel runs), the `model` object stores - a local logger and a local RNG. **Whenever you need to use a random number, you must - use the `model.rng`.** The easiest way to do this is with the [`@rand`](@ref) and - [`@shuffle!`](@ref) macros. The local logger generally does not change the way the model - uses [log statements](https://docs.julialang.org/en/v1/stdlib/Logging/), it is only - relevant for some functions in [`src/core/simulation.jl`](https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/core/simulation.jl). - + all global data (as this would interfere with reproducibility in parallel runs), the `model` + object stores a local logger and a local RNG. The local logger generally does not change the + way the model uses [log statements](https://docs.julialang.org/en/v1/stdlib/Logging/), it is + only relevant for some functions in [`src/core/simulation.jl`](https://git.idiv.de/xo30xoqa/persephone/-/blob/master/src/core/simulation.jl). + +!!! info "Using the model RNG" + Whenever you need to use a [random number](https://docs.julialang.org/en/v1/stdlib/Random/#Base.rand), + you must use the `model.rng`. The easiest way to do this is with the [`@rand`](@ref) + and [`@shuffle!`](@ref) macros. (Note that these, too, require access to the `model` object.) + 6. **Working with agents:** For more information about working with agent objects, see the [Agents.jl API](https://juliadynamics.github.io/Agents.jl/stable/api/). diff --git a/docs/src/index.md b/docs/src/index.md index b9d44f9..3b5ef53 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -16,7 +16,7 @@ an ecological submodels. To run a single experiment, execute: ``` -./run.jl -c <CONFIG> +julia run.jl -c <CONFIG> ``` Other commandline arguments are: @@ -74,4 +74,10 @@ indoutfreq = "end" # output frequency individual-level data, daily/monthly/yearl cropmodel = "linear" # crop growth model to use, "linear" or "aquacrop" (not yet implemented) ``` -*Last updated: 2023-02-03 (commit 092c769)* +!!! tip "Parameter scanning" + You can set any parameter to a list of different values, e.g. `seed = [1,2,3]`. + Persephone will then set up and run multiple simulations, one for every possible + combination of parameters that you entered (i.e. do a full-factorial simulation + experiment). + +*Last updated: 2023-02-07 (commit 600bbd3)* diff --git a/docs/src/species-dsl.md b/docs/src/species-dsl.md index 9a4c080..80932c8 100644 --- a/docs/src/species-dsl.md +++ b/docs/src/species-dsl.md @@ -3,7 +3,7 @@ ## The Persephone species DSL In order to make implementing new species as easy as possible, Persephone includes -a [domain-specific language (DSL)](https://doi.org/10.1016/j.ecoinf.2015.02.005) +a [domain-specific language](https://doi.org/10.1016/j.ecoinf.2015.02.005) (DSL) built from a collection of macros and functions. Here is an example of what this looks like, using a hypothetical mermaid species: diff --git a/run.jl b/run.jl index 4dbf6d2..c43f62d 100755 --- a/run.jl +++ b/run.jl @@ -1,6 +1,6 @@ #!/usr/bin/env julia # A very thin wrapper to start a Persephone simulation. -# (This is not included in persephone.jl in order to enable the latter to +# (This is not included in Persephone.jl in order to enable the latter to # be used as a library, without automatically launching a simulation.) using Pkg diff --git a/src/nature/species/skylark.jl b/src/nature/species/skylark.jl index 5293ea0..fa43378 100644 --- a/src/nature/species/skylark.jl +++ b/src/nature/species/skylark.jl @@ -3,9 +3,6 @@ ### This file holds the code for the Eurasian Skylark (Alauda arvensis). ### -##XXX At the moment, this is just a skeleton to show what I want to be able to interpret -## with the @species, @phase, and @habitat macros (and their helper macros) - """ Skylark @@ -21,7 +18,6 @@ At the moment, this implementation is still in development. eggpredationmortality = 0.1 initialise! = initrandompopulation(popsize) - phase = "egg" habitats = @habitat((@landcover() == grass || (@landcover() == agriculture && @croptype() != maize && @@ -36,7 +32,7 @@ At the moment, this implementation is still in development. @respond harvest @kill(@trait(eggharvestmortality), "harvest") if @trait(age) == 14 - @trait(phase) = "nestling" + @setphase(nestling) end end -- GitLab